From 7957a12216d68623927bea2b2868360e39959721 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Thu, 14 Sep 2017 21:04:52 -0400 Subject: [PATCH] feat: Persian locale + RTL initial support + browser locales fixes --- CHANGELOG.md | 9 +++ README.md | 9 +-- client/scss/app.scss | 1 + client/scss/layout/_rtl.scss | 28 ++++++++ config.sample.yml | 5 +- package.json | 2 +- server/app/data.yml | 1 + server/locales/es/browser.json | 10 +++ server/locales/fa/admin.json | 82 +++++++++++++++++++++++ server/locales/fa/auth.json | 32 +++++++++ server/locales/fa/browser.json | 116 +++++++++++++++++++++++++++++++++ server/locales/fa/common.json | 51 +++++++++++++++ server/locales/fa/errors.json | 30 +++++++++ server/locales/fa/git.json | 6 ++ server/locales/ko/admin.json | 37 +++++++++-- server/locales/ko/browser.json | 104 ++++++++++++++++++++++++++++- server/locales/ko/common.json | 4 ++ server/locales/ko/errors.json | 2 +- server/locales/nl/admin.json | 8 +-- server/locales/nl/common.json | 2 +- server/locales/pt/admin.json | 2 +- server/locales/pt/common.json | 4 +- server/locales/tr/admin.json | 1 + server/locales/tr/auth.json | 1 + server/locales/tr/browser.json | 1 + server/locales/tr/common.json | 1 + server/locales/tr/errors.json | 1 + server/locales/tr/git.json | 1 + server/locales/zh/admin.json | 4 +- server/views/layout.pug | 2 +- tools/fuse_tasks.js | 2 +- 31 files changed, 535 insertions(+), 24 deletions(-) create mode 100644 client/scss/layout/_rtl.scss create mode 100644 server/locales/fa/admin.json create mode 100644 server/locales/fa/auth.json create mode 100644 server/locales/fa/browser.json create mode 100644 server/locales/fa/common.json create mode 100644 server/locales/fa/errors.json create mode 100644 server/locales/fa/git.json create mode 100644 server/locales/tr/admin.json create mode 100644 server/locales/tr/auth.json create mode 100644 server/locales/tr/browser.json create mode 100644 server/locales/tr/common.json create mode 100644 server/locales/tr/errors.json create mode 100644 server/locales/tr/git.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 83bd69c4..f528f3d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [v1.0.9] - 2017-09-14 +### Added +- **Localization**: Persian (farsi) locale is now available (thanks to @ashkang) +- **UI**: Support for right-to-left languages + +### Fixed +- **i18n**: Browser locale files not generated properly (ported from dev branch) + ## [v1.0.8] - 2017-08-31 ### Changed - **Misc**: Updated dependencies @@ -217,6 +225,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Changed - Updated dependencies + snyk policy +[v1.0.9]: https://github.com/Requarks/wiki/releases/tag/v1.0.9 [v1.0.8]: https://github.com/Requarks/wiki/releases/tag/v1.0.8 [v1.0.7]: https://github.com/Requarks/wiki/releases/tag/v1.0.7 [v1.0.6]: https://github.com/Requarks/wiki/releases/tag/v1.0.6 diff --git a/README.md b/README.md index efc2e507..317aba7d 100644 --- a/README.md +++ b/README.md @@ -53,12 +53,12 @@ You can also use a Dockerfile ([see example](https://github.com/Requarks/wiki/bl Current and upcoming milestones *(major features only, see the [changelog](https://github.com/Requarks/wiki/blob/master/CHANGELOG.md) for complete list of features and bug fixes)*: -### 1.0.8 - Stable +### 1.0.9 - Stable ![Progress](http://progressed.io/bar/100) -- [x] Fix: Azure AD client Id is now referenced correctly ([#219](https://github.com/Requarks/wiki/issues/219)) -- [x] Fix: Git Branch is now referenced correctly ([#215](https://github.com/Requarks/wiki/issues/215)) -- [x] Updated dependencies +- [x] Persian (farsi) locale is now available (thanks to @ashkang) +- [x] Added Support for right-to-left languages +- [x] Fix: Browser locale files not generated properly (ported from dev branch) ### 2.0.0 - Dev ![Progress](http://progressed.io/bar/25) @@ -118,6 +118,7 @@ We are looking for translators to make Wiki.js available in multiple languages. - [x] French - [x] German - *Thanks to [@joetjengerdes](https://github.com/joetjengerdes)* - [x] Korean - *Thanks to [@junwonpk](https://github.com/junwonpk)* +- [x] Persian - *Thanks to [@ashkang](https://github.com/ashkang)* - [x] Portuguese - *Thanks to [@felipeplets](https://github.com/felipeplets)* - [x] Russian - *Thanks to [@efimlosev](https://github.com/efimlosev)* - [x] Spanish - *Thanks to [@MatiasArriola](https://github.com/MatiasArriola)* diff --git a/client/scss/app.scss b/client/scss/app.scss index 8bf44dd7..a86c88e8 100644 --- a/client/scss/app.scss +++ b/client/scss/app.scss @@ -41,6 +41,7 @@ $primary: 'indigo'; @import 'layout/_header'; @import 'layout/_loader'; +@import 'layout/_rtl'; @import 'pages/_welcome'; diff --git a/client/scss/layout/_rtl.scss b/client/scss/layout/_rtl.scss new file mode 100644 index 00000000..6ade7b0a --- /dev/null +++ b/client/scss/layout/_rtl.scss @@ -0,0 +1,28 @@ +.rtl { + direction: rtl; + + .button i { + margin-left: 8px; + margin-right: 0px; + } + + .nav-right .nav-item { + padding: 0 10px 0 0; + } + + .nav-item h1 i { + margin-left: 8px; + margin-right: 8px; + } + + .sidebar aside .sidebar-menu li a i { + margin-left: 7px; + margin-right: 0; + } + + .mkcontent { + ul { + padding: 10px 40px 10px 0; + } + } +} diff --git a/config.sample.yml b/config.sample.yml index 4ad45199..3cb51966 100644 --- a/config.sample.yml +++ b/config.sample.yml @@ -44,10 +44,13 @@ uploads: # --------------------------------------------------------------------- # Site Language # --------------------------------------------------------------------- -# Possible values: en, es, fr, ko, ru or zh +# Possible values: en, de, es, fa, fr, ko, nl, pt, ru, sr, tr or zh lang: en +# Enable for right to left languages (e.g. arabic): +langRtl: false + # --------------------------------------------------------------------- # Site Authentication # --------------------------------------------------------------------- diff --git a/package.json b/package.json index 8da2dacb..2f5a6f87 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wiki", - "version": "1.0.8", + "version": "1.0.9", "description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown", "main": "wiki.js", "scripts": { diff --git a/server/app/data.yml b/server/app/data.yml index 440f2057..c994a6bd 100644 --- a/server/app/data.yml +++ b/server/app/data.yml @@ -15,6 +15,7 @@ defaults: maxImageFileSize: 3, maxOtherFileSize: 100 lang: en + langRtl: false public: false auth: defaultReadAccess: false diff --git a/server/locales/es/browser.json b/server/locales/es/browser.json index 2fbc074c..ddfcdf66 100644 --- a/server/locales/es/browser.json +++ b/server/locales/es/browser.json @@ -45,6 +45,16 @@ "videosupportedtitle": "Los siguientes están soportados:", "videotitle": "Insertar Video" }, + "history": { + "pastversions": "Versiones Previas", + "timestamp": "Marca de tiempo", + "author": "Autor", + "commit": "Commit", + "comparewith": "Comparar con...", + "view": "Ver", + "reverttoversion": "Volver a la Versión", + "sidebyside": "Vista lado a lado" + }, "modal": { "abort": "Abortar", "anchorerror": "Falló la copia del Portapapeles. Copie la URL manualmente.", diff --git a/server/locales/fa/admin.json b/server/locales/fa/admin.json new file mode 100644 index 00000000..76b95519 --- /dev/null +++ b/server/locales/fa/admin.json @@ -0,0 +1,82 @@ +{ + "profile": { + "displayname": "نام کامل", + "displaynameexample": "علی علوی", + "email": "ایمیل", + "lastprofileupdate": "آخرین زمان به روز رسانی پروفایل", + "membersince": "تاریخ عضویت", + "password": "گذرواژه", + "passwordverify": "تایید گذرواژه", + "provider": "سرویس‌دهنده", + "savechanges": "ذخیره تغییرات", + "subtitle": "اطلاعات پروفایل و سیستم احراز هویت", + "tfa": "احراز هویت دو مرحله‌ای", + "tfadisable": "غیرفعال کردن سیستم احراز هویت دو مرحله‌ای", + "tfadisabled": "غیرفعال", + "tfaenable": "فعال کردن سیستم احراز هویت دو مرحله‌ای", + "tfaenabled": "فعال" + }, + "stats": { + "subtitle": "آمار کلی وبسایت", + "entries": "مدخل", + "uploads": "آپلودها", + "users": "کاربران" + }, + "settings": { + "subtitle": "مدیریت تنظیمات وبسایت" + }, + "system": { + "subtitle": "ابزارها و اطلاعات برای ویکی شما", + "systemversion": "نسخه سیستم", + "currentversion": "نسخه فعلی", + "latestversion": "آخرین نسخه", + "upgrade": "ارتقاء", + "reinstall": "نصب مجدد نسخه فعلی", + "versioncheckfailed": "امکان پیدا کردن آخرین نسخه نرم افزار وجود ندارد. لطفا بعدا امتحان کنید.", + "administrativetools": "ابزارهای مدیریت", + "flushcache": "پاک کردن کش و بازسازی فهرست‌ها", + "flushcachetext": "اگر به نظر میرسد محتوای وبسایت به روز نیست یا آخرین تغییرات در آن وجود ندارد، پاک کردن کش احتمالا میتواند به حل این مشکل کمک کند.", + "flushcachebtn": "پاک کردن و بازسازی", + "resetaccounts": "ریست کردن حسابهای کاربری سیستمی به حالت پیش‌فرض", + "resetaccountstext": "حسابهای کاربری سیستمی (مثل حساب مهمان) به حالت پیش‌فرض برخواهند گشت.", + "resetaccountsbtn": "ریست کردن حسابهای سیستمی", + "flushsessions": "پاک کردن نشست تمام کاربران آنلاین", + "flushsessionstext": "نشست تمام کاربرانی که در حال حاضر مشغول استفاده از وبسایت هستند پاک و باید مجددا وارد سیستم شوند.", + "flushsessionsbtn": "پاک‌کردن نشست‌ها", + "hostinfo": "اطلاعات مربوط به سیستم میزبان", + "os": "سیستم عامل", + "nodeversion": "نسخه نود‌جی‌اس", + "hostname": "نام میزبان", + "cores": "تعداد هسته‌های پردازنده", + "totalmem": "مجموع حافظه", + "cwd": "دایرکتوری کاری" + }, + "theme": { + "subtitle": "تغییر ظاهر وبسایت", + "primarycolor": "رنگ اصلی", + "primarycolordesc": "در نوار ناوبری بالا، سرساز، پیوند‌ها و غیره استفاده میشود.", + "altcolor": "رنگ دوم", + "altcolordesc": "در نوارابزار گوشه استفاده میشود (با رنگ کمی تیره‌تر)", + "footercolor": "رنگ پاورقی", + "footercolordesc": "برای پاورقی پایین صفحه استفاده میشود (با رنگ کمی روشن‌تر)", + "codeblock": { + "title": "قطعات کد", + "dark": "استفاده از تم تیره", + "colorize": "رنگ‌آمیزی کد بر اساس سینتکس" + }, + "savechanges": "ذخیره تغییرات", + "reset": "برگشت به وضعیت پیش‌فرض" + }, + "users": { + "createauthorize": "مدیریت کاربران", + "subtitle": "ایجاد یا تغییر دسترسی کاربران به وبسایت", + "name": "نام", + "email": "آدرس ایمیل", + "provider": "سرویس‌دهنده", + "createdon": "ساخته شده در تاریخ", + "updatedon": "به روز رسانی شده در تاریخ", + "returntousers": "بازگشت به لیست کاربران", + "edituser": "ویرایش کاربر", + "uniqueid": "شناسه یکتا" + } +} \ No newline at end of file diff --git a/server/locales/fa/auth.json b/server/locales/fa/auth.json new file mode 100644 index 00000000..f62105d8 --- /dev/null +++ b/server/locales/fa/auth.json @@ -0,0 +1,32 @@ +{ + "loginrequired": "باید وارد سیستم شوید", + "loginusing": "وارد شدن به وسیله...", + "loginusingalt": "یا وارد شدن به وسیله...", + "fields": { + "emailuser": "ایمیل/شناسه کاربری", + "password": "گذرواژه" + }, + "actions": { + "login": "ورود" + }, + "errors": { + "invalidlogin": "شناسه کاربری نادرست", + "invalidloginmsg": "آدرس ایمیل یا گذرواژه نادرست است.", + "invaliduseremail": "آدرس ایمیل نامعتبر", + "loginerror": "خطا در ورود به سیستم", + "notyetauthorized": "هنوز اجازه ورود به وبسایت به شما داده نشده است.", + "toomanyattempts": "تلاش‌های ناموفق زیاد!", + "toomanyattemptsmsg": "شما در مدت زمان کوتاهی تلاشهای ناموفق بسیاری کرده‌اید. لطفا مجددا بعد از {{time}} امتحان کنید.", + "usernotfound": "کاربر پیدا نشد" + }, + "providers": { + "local": "محلی", + "windowslive": "حساب مایکروسافت", + "azure": "حساب اکتیو دایرکتوری اژر مایکروسافت", + "google": "حساب گوگل", + "facebook": "فیسبوک", + "github": "گیتهاب", + "slack": "اسلک", + "ldap": "ال‌دپ/اکتیو دایرکتوری" + } +} \ No newline at end of file diff --git a/server/locales/fa/browser.json b/server/locales/fa/browser.json new file mode 100644 index 00000000..55ef09e0 --- /dev/null +++ b/server/locales/fa/browser.json @@ -0,0 +1,116 @@ +{ + "editor": { + "codeblockinsert": "قطعه کد را وارد کنید", + "codeblocklanguage": "زبان", + "codeblockloading": "در حال بارگیری سینتکس {{name}}", + "codeblockloadingerror": "خطا: امکان بارگیری سینتکس برای این زبان وجود ندارد.", + "codeblocksuccess": "قطعه کد شما درج شد.", + "codeblocktitle": "درج قطعه کد", + "discard": "دور انداختن", + "filedeleteaction": "حذف", + "filedeleteloading": "در حال حذف فایل...", + "filedeletedefault": "این فایل", + "filedeletesuccess": "فایل با موفقیت حذف شد.", + "fileerror": "امکان دریافت فهرست به روز رسانی شده وجود ندارد.", + "filefolderempty": "این پوشه خالی است.", + "fileinsert": "الصاق پیوند به فایل", + "fileloading": "در حال دریافت فایلها...", + "filemoveaction": "انتقال به...", + "filemoveerror": "خطا در انتقال: {{err}}", + "filemoveloading": "در حال انتقال فایل...", + "filemovesuccess": "فایل با موفقیت منتقل شد.", + "fileprocessing": "در حال پردازش...", + "filerenameaction": "تغییر نام", + "filesuccess": "پیوند به فایل درج شد.", + "filetitle": "الصاق فایل", + "fileupload": "بارگذاری فایل", + "fileuploaderror": "خطا در بارگذاری: {{err}}", + "fileuploadsuccess": "فایلها با موفقیت بارگذاری شدند.", + "folders": "پوشه‌ها", + "foldersloading": "در حال دریافت لیست پوشه‌ها...", + "imagetitle": "الصاق عکس", + "imageinsert": "الصاق عکس", + "imagesuccess": "عکس الصاق شد.", + "imageupload": "بارگذاری عکس", + "imagealignleft": "چپ (پیش‌فرض)", + "imagealigncenter": "مرکز", + "imagealignright": "راست", + "imagealignlogo": "لوگوی صفحه", + "newfolder": "پوشه جدید", + "videoanymp4file": "هر فایل ام‌پی‌۴ استاندارد", + "videoinsert": "الصاق ویدئو", + "videolinktitle": "برای قرار دادن ویدئوی توکار، پیوند ویدئو را وارد کنید:", + "videonotsupported": "این پیوند نادرست است یا پشتیبانی نمی‌شود.", + "videosuccess": "کد ویدئو الصاق شد.", + "videosupportedtitle": "موارد زیر پشتیبانی میشوند:", + "videotitle": "الصاق ویدئو" + }, + "history": { + "pastversions": "نسخه‌های پیشین", + "timestamp": "زمان", + "author": "نویسنده", + "commit": "کامیت", + "comparewith": "مقایسه کن با...", + "view": "نمایش", + "reverttoversion": "برگرداندن به نسخه", + "sidebyside": "نمایش پهلو به پهلو" + }, + "modal": { + "abort": "قطع کردن", + "anchorerror": "کپی از کلیپ‌برد امکان‌پذیر نیست. لطفا پیوند را دستی وارد کنید.", + "anchorsuccess": "پیوند در کلیپ‌برد کپی شد.", + "anchortitle": "پیوند به این قسمت را کپی کن", + "copyclipboard": "کپی در کلیپ‌برد", + "create": "ایجاد", + "createpageinvalid": "مسیر این صفحه نادرست است.", + "createpagepath": "مسیر جدید صفحه را وارد کنید:", + "createpagetitle": "ایجاد صفحه جدید", + "createuser": "ایجاد حساب کاربری", + "createuserauthorize": "دسترسی دادن به کاربر", + "createuseremail": "آدرس ایمیل:", + "createuseremailplaceholder": "مثلا john.doe@company.com", + "createusername": "نام و نام خانوادگی:", + "createusernameplaceholder": "مثلا علی علوی", + "createuserpassword": "گذرواژه:", + "createuserprovider": "سرویس‌دهنده:", + "createusertitle": "ساخت حساب کاربری", + "delete": "حذف", + "deletefiletitle": "حذف شود؟", + "deletefilewarn": "آیا مطمئن هستید که میخواهید حذف شود؟", + "deleteusertitle": "حساب کاربری حذف شود؟", + "deleteuserwarning": "آیا مطمئن هستید که میخواهید حساب کاربری حذف شود؟ این عمل قابل بازگشت نیست.", + "discard": "دور انداختن", + "discardpagecreate": "آیا مطمئن هستید که میخواهید این صفحه را ترک کنید؟ تمام چیزهایی که تا این لحظه نوشتید از بین خواهند رفت.", + "discardpageedit": "آیا مطمئن هستید که میخواهید این صفحه را ترک کنید؟ تغییرات شما از بین خواهند رفت.", + "discardpagestay": "در این صفحه بمان", + "discardpagetitle": "دور ریخته شود؟", + "move": "انتقال", + "movepageinvalid": "مسیر این صفحه مجاز نیست یا نامعتبر است", + "movepagepath": "مسیر جدید این صفحه را وارد کنید:", + "movepageplaceholder": "نام صفحه", + "movepagetitle": "انتقال صفحه", + "movepagewarning": "توجه کنید که تغییر نام یا انتقال صفحه موجب خراب شدن پیوندهای سایر صفحات به این صفحه میشود. مطمئن شوید که سایر پیوندها به این صفحه را پس از انجام این کار درست خواهید کرد.", + "newfolderinvalid": "نام پوشه نامعتبر است!", + "newfolderloading": "در حال ساخت پوشه جدید...", + "newfoldername": "نام پوشه جدید را وارد کنید:", + "newfoldernameplaceholder": "نام پوشه", + "newfoldersuccess": "پوشه جدید با نام {{name}} ایجاد شد.", + "newfoldertitle": "پوشه جدید", + "renamefile": "تغییر نام", + "renamefileerror": "خطا در تغییر نام: {{err}}", + "renamefileinvalid": "نام این فایل نامعتبر است!", + "renamefileloading": "در حال تغییر نام فایل...", + "renamefilename": "نام جدید این فایل را (بدون پسوند) وارد کنید:", + "renamefilenameplaceholder": "نام فایل", + "renamefiletitle": "تغییر نام فایل" + }, + "nav": { + "home": "خانه" + }, + "search": { + "didyoumean": "منظورتان این بود؟", + "nomatch": "نتیجه‌ای برای جست و جوی شما یافت نشد", + "placeholder": "جستجو...", + "results": "نتایج جستجو" + } +} \ No newline at end of file diff --git a/server/locales/fa/common.json b/server/locales/fa/common.json new file mode 100644 index 00000000..6d782c96 --- /dev/null +++ b/server/locales/fa/common.json @@ -0,0 +1,51 @@ +{ + "wiki": "ویکی", + "header": { + "overview": "بررسی اجمالی", + "createdoc": "ایجاد سند جدید" + }, + "footer": { + "poweredby": "ساخته شده به وسیله", + "home": "خانه", + "top": "بازگشت به بالای صفحه" + }, + "sidebar": { + "nav": "ناوبری", + "navigation": "ناوبری", + "pagecontents": "محتویات صفحه", + "pastversions": "نسخه های پیشین" + }, + "nav": { + "account": "حساب کاربری", + "allpages": "تمام صفحات", + "create": "ايجاد کردن", + "discard": "دور انداختن", + "edit": "ویرایش", + "history": "تاریخچه", + "login": "ورود", + "logout": "خروج", + "move": "انتقال", + "myprofile": "پروفایل من", + "normalview": "چشم‌انداز معمولی", + "root": "خانه", + "savechanges": "ذخیره تغییرات", + "savedocument": "ذخیره سند", + "settings": "تنظیمات", + "source": "منبع", + "stats": "آمار", + "sysinfo": "اطلاعات سیستم", + "syssettings": "تنظیمات سیستم", + "theme": "تم رنگ", + "users": "کاربران", + "viewlatest": "مشاهده آخرین" + }, + "welcome": { + "title": "به ویکی خودتان خوش آمدید!", + "subtitle": "شروع و ساختن صفحه اصلی", + "createhome": "ایجاد صفحه اصلی" + }, + "loading": { + "source": "درحال بارگیری منبع...", + "editor": "در حال بارگیری ویرایشگر..." + } +} \ No newline at end of file diff --git a/server/locales/fa/errors.json b/server/locales/fa/errors.json new file mode 100644 index 00000000..301004c4 --- /dev/null +++ b/server/locales/fa/errors.json @@ -0,0 +1,30 @@ +{ + "alreadyexists": "این ورودی از پیش وجود دارد!", + "debugmsg": "ردپای دقیق برای اشکال زدائی", + "fileexists": "فایل {{path}} از پیش وجود دارد.", + "forbidden": "ممنوع", + "forbiddendetail": "متاسفانه شما اجازه لازم برای دسترسی به این صفحه را ندارید.", + "generic": "اشتباهی رخ داد", + "invalidaction": "عمل نامعتبر", + "invaliddestfolder": "پوشه مقصد نامعتبر است!", + "invalidfiletype": "نوع فایل نامعتبر است", + "invalidfolder": "پوشه نامعتبر", + "invalidoperation": "عملیات نامعتبر!", + "invalidpath": "مسیر صفحه نامعتبر است", + "invaliduserid": "شناسه کاربری نامعتبر", + "newpasswordtooshort": "گذرواژه جدید بسیار کوتاه است!", + "notexist": "مدخل {{path}} وجود ندارد!", + "notexistdetail": "آیا میخواهید این مدخل را ایجاد کنید؟", + "parentinvalid": "مدخل والد یک فایل معتبر نیست", + "parentisroot": "مدخل والد ریشه است.", + "remotetoolarge": "فایل خارجی بسیار بزرگ است", + "reservedname": "نمیتوانید سندی با این نام ایجاد کنید، چرا که نام این سند توسط سیستم رزرو شده است.", + "savefailed": "ذخیره سند با مشکل مواجه شد", + "starterfailed": "محتوای آغازگر بارگیری نشد!", + "unauthorized": "غیر مجاز", + "actions": { + "create": "ايجاد كردن", + "gohome": "بازگشت به خانه", + "loginas": "ورود به سیستم به عنوان..." + } +} \ No newline at end of file diff --git a/server/locales/fa/git.json b/server/locales/fa/git.json new file mode 100644 index 00000000..8194d174 --- /dev/null +++ b/server/locales/fa/git.json @@ -0,0 +1,6 @@ +{ + "added": "مسیر {{path}} اضافه شد", + "deleted": "حذف/تغییرنام {{path}}", + "updated": "{{path}} به روز رسانی شد", + "uploaded": "مسیر {{path}} بارگذاری شد" +} \ No newline at end of file diff --git a/server/locales/ko/admin.json b/server/locales/ko/admin.json index 1b564cea..026f631a 100644 --- a/server/locales/ko/admin.json +++ b/server/locales/ko/admin.json @@ -1,15 +1,20 @@ { "profile": { "displayname": "이름", - "displaynameexample": "박준원", + "displaynameexample": "홍길동", "email": "이메일", "lastprofileupdate": "최근 프로필 업데이트", "membersince": "회원 가입일", "password": "비밀번호", "passwordverify": "비밀번호 확인", "provider": "제공자", - "savechanges": "변경 사항 저장", - "subtitle": "프로필 및 인증 정보" + "savechanges": "변경사항 저장", + "subtitle": "프로필 및 인증 정보", + "tfa": "이중 인증", + "tfadisable": "이중 인증 해제", + "tfadisabled": "사용중지", + "tfaenable": "이중 인증 사용", + "tfaenabled": "사용" }, "stats": { "subtitle": "사이트 전체 통계", @@ -21,6 +26,7 @@ "subtitle": "사이트 구성 관리" }, "system": { + "subtitle": "위키의 정보 및 유틸리티", "systemversion": "시스템 버전", "currentversion": "현재 버전", "latestversion": "최신 버전", @@ -36,7 +42,30 @@ "resetaccountsbtn": "시스템 계정들 재설정", "flushsessions": "모든 활성 사용자 세션 플러시", "flushsessionstext": "모든 유저들이 로그아웃 됩니다. 당신의 지금 세션도 영향 받습니다.", - "flushsessionsbtn": "세션 플러시" + "flushsessionsbtn": "세션 플러시", + "hostinfo": "서버 정보", + "os": "운영 체제", + "nodeversion": "Node.js 버전", + "hostname": "서버 이름", + "cores": "CPU 코어 개수", + "totalmem": "총 메모리", + "cwd": "작업 폴더" + }, + "theme": { + "subtitle": "위키의 색과 느낌을 바꿔보세요", + "primarycolor": "기본 색상", + "primarycolordesc": "상단 바, 제목, 링크 등에 쓰입니다.", + "altcolor": "포인트 색상", + "altcolordesc": "사이드 바에 쓰입니다 (어두운 톤)", + "footercolor": "하단 바 색상", + "footercolordesc": "하단 바에 쓰입니다 (밝은 톤)", + "codeblock": { + "title": "코드 블록", + "dark": "어두운 테마 사용", + "colorize": "코드 색상 강조하기" + }, + "savechanges": "변경사항 저장", + "reset": "기본값으로 되돌리기" }, "users": { "createauthorize": "사용자 생성 / 허가", diff --git a/server/locales/ko/browser.json b/server/locales/ko/browser.json index 6b3b523c..86b8a8f2 100644 --- a/server/locales/ko/browser.json +++ b/server/locales/ko/browser.json @@ -1,6 +1,108 @@ { + "editor": { + "codeblockinsert": "코드 블록 삽입", + "codeblocklanguage": "언어", + "codeblockloading": "{{name}} 코드 문법 로딩중", + "codeblockloadingerror": "오류; 언어 문법을 가져오지 못했습니다", + "codeblocksuccess": "코드 블록이 삽입되었습니다", + "codeblocktitle": "코드 블록 삽입", + "discard": "취소", + "filedeleteaction": "삭제", + "filedeleteloading": "파일 삭제 중..", + "filedeletedefault": "이 파일", + "filedeletesuccess": "파일이 성공적으로 삭제되었습니다.", + "fileerror": "업데이트된 목록을 가져올 수 없습니다.", + "filefolderempty": "이 폴더는 비어 있습니다.", + "fileinsert": "파일에 링크 삽입", + "fileloading": "파일을 불러오는중..", + "filemoveaction": "로 이동...", + "filemoveerror": "이동 실패 : {{err}}", + "filemoveloading": "파일 이동 중...", + "filemovesuccess": "파일을 성공적으로 이동했습니다.", + "fileprocessing": "처리중...", + "filerenameaction": "이름 바꾸기", + "filesuccess": "파일 링크가 삽입되었습니다.", + "filetitle": "파일 삽입", + "fileupload": "파일 업로드", + "fileuploaderror": "업로드 실패 : {{err}}", + "fileuploadsuccess": "파일이 성공적으로 업로드되었습니다.", + "folders": "폴더", + "foldersloading": "폴더 목록을 불러 오는 중...", + "imagetitle": "이미지 삽입", + "imageinsert": "이미지 삽입", + "imagesuccess": "이미지가 삽입되었습니다.", + "imageupload": "이미지 업로드", + "imagealignleft": "왼쪽 (기본)", + "imagealigncenter": "가운데", + "imagealignright": "오른쪽", + "imagealignlogo": "Page Logo", + "newfolder": "새 폴더", + "videoanymp4file": "표준 .MP4 파일", + "videoinsert": "영상 삽입", + "videolinktitle": "삽입할 영상의 링크를 입력하세요:", + "videonotsupported": "URL이 유효하지 않거나 지원되지 않는 형식입니다", + "videosuccess": "비디오 코드가 삽입되었습니다", + "videosupportedtitle": "아래 항목을 지원합니다:", + "videotitle": "영상 삽입" + }, + "history": { + "pastversions": "지난 버전들", + "timestamp": "생성일", + "author": "작성자", + "commit": "변경ID", + "comparewith": "비교하기", + "view": "시각화", + "reverttoversion": "이전 버전으로 되돌리기", + "sidebyside": "나란히보기" + }, "modal": { - "move": "이동" + "abort": "중단", + "anchorerror": "클립보드 복사 실패. 수동으로 URL을 복사하십시오.", + "anchorsuccess": "URL이 클립보드에 복사되었습니다.", + "anchortitle": "이 섹션에 링크 복사", + "copyclipboard": "클립보드에 복사", + "create": "추가", + "createpageinvalid": "페이지 경로가 유효하지 않습니다", + "createpagepath": "새 페이지의 경로를 입력하세요:", + "createpagetitle": "새 페이지 생성", + "createuser": "사용자 생성", + "createuserauthorize": "사용자 승인", + "createuseremail": "이메일 주소", + "createuseremailplaceholder": "예: john.doe@company.com", + "createusername": "성명", + "createusernameplaceholder": "예: 홍길동", + "createuserpassword": "비밀번호:", + "createuserprovider": "제공자:", + "createusertitle": "사용자 계정 생성 / 승인", + "delete": "삭제", + "deletefiletitle": "삭제하시겠습니까?", + "deletefilewarn": "정말로 삭제하시겠습니까?", + "deleteusertitle": "계정을 삭제하시겠습니까?", + "deleteuserwarning": "정말로 삭제하시겠습니까? 이 작업은 복구할 수 없습니다", + "discard": "취소", + "discardpagecreate": "지금까지 작성한 내용을 저장하지 않고 나가겠습니까?", + "discardpageedit": "변경 사항을 저장하지 않고 나가시겠습니까? ", + "discardpagestay": "페이지에 머무르기", + "discardpagetitle": "취소하시겠습니까?", + "move": "이동", + "movepageinvalid": "페이지 경로가 잘못되었거나 페이지 접근 권한이 없습니다", + "movepagepath": "새로운 페이지 경로 등록", + "movepageplaceholder": "페이지 이름", + "movepagetitle": "페이지 이동", + "movepagewarning": "페이지를 이동하거나 이름을 변경하면 해당 페이지를 참조하는 다른 페이지의 링크를 꼭 수정하세요!", + "newfolderinvalid": "폴더 이름이 유효하지 않습니다", + "newfolderloading": "새 폴더 생성 중...", + "newfoldername": "새로 만들 폴더의 이름을 입력하세요:", + "newfoldernameplaceholder": "폴더명", + "newfoldersuccess": "{{name}} 폴더 생성 완료", + "newfoldertitle": "새 폴더", + "renamefile": "이름 바꾸기", + "renamefileerror": "이름 바꾸기 실패 : {{err}}", + "renamefileinvalid": "파일 이름이 유효하지 않습니다", + "renamefileloading": "파일 이름 변경 중...", + "renamefilename": "새로운 파일명(확장자 없이)을 입력하세요", + "renamefilenameplaceholder": "파일명", + "renamefiletitle": "파일 이름 바꾸기" }, "nav": { "home": "홈으로" diff --git a/server/locales/ko/common.json b/server/locales/ko/common.json index f4ea022d..89d64fd3 100644 --- a/server/locales/ko/common.json +++ b/server/locales/ko/common.json @@ -27,11 +27,15 @@ "move": "이동", "myprofile": "내 프로필", "normalview": "기본 보기", + "root": "홈으로", "savechanges": "변경사항 저장", "savedocument": "문서 저장", + "settings": "설정", "source": "소스", "stats": "통계", + "sysinfo": "시스템 정보", "syssettings": "시스템 설정", + "theme": "색상 테마", "users": "사용자", "viewlatest": "최신 보기" }, diff --git a/server/locales/ko/errors.json b/server/locales/ko/errors.json index 381f345e..c5281e44 100644 --- a/server/locales/ko/errors.json +++ b/server/locales/ko/errors.json @@ -1,5 +1,5 @@ { - "alreadyexists": "이미 정보가 입력되었습니다.", + "alreadyexists": "이미 존재하는 문서입니다.", "debugmsg": "상세한 디버그 트레일", "fileexists": "{{path}} 이미 존재함", "forbidden": "접근 금지", diff --git a/server/locales/nl/admin.json b/server/locales/nl/admin.json index f2edaa93..c3012923 100644 --- a/server/locales/nl/admin.json +++ b/server/locales/nl/admin.json @@ -40,9 +40,9 @@ "resetaccounts": "Systeem gebruikers terugzetten naar fabrieksinstellingen", "resetaccountstext": "De systeem gebruikers (zoals Gast) zullen teruggezet worden naar hun originele instellingen.", "resetaccountsbtn": "Systeem accounts terugzetten", - "flushsessions": "Actieve gebruikerssessies sluiten", + "flushsessions": "Actieve gebruikerssessies beëindigen", "flushsessionstext": "Alle actieve gebruikerssessies zullen gesloten worden. Alle gebruikers zullen opnieuw moeten inloggen. Ook jouw huidige sessie zal be-eindigen.", - "flushsessionsbtn": "Sessies sluiten", + "flushsessionsbtn": "Sessies beëindigen", "hostinfo": "Host informatie", "os": "Besturingssysteem", "nodeversion": "Node.js versie", @@ -64,12 +64,12 @@ "dark": "Gebruik donkere thema", "colorize": "Gebruik kleuren syntax" }, - "savechanges": "Veranderingen opslaan", + "savechanges": "Opslaan", "reset": "Standaardinstellingen terugzetten" }, "users": { "createauthorize": "Gebruiker aanmaken ", - "subtitle": "Beheer gebruikersrechten", + "subtitle": "Gebruikers en gebruikersrechten beheren", "name": "Naam", "email": "E-mailadres", "provider": "Inlog dienst", diff --git a/server/locales/nl/common.json b/server/locales/nl/common.json index 77140506..77b4e5b2 100644 --- a/server/locales/nl/common.json +++ b/server/locales/nl/common.json @@ -28,7 +28,7 @@ "myprofile": "Profiel", "normalview": "Normaal uiterlijk", "root": "Home", - "savechanges": "Veranderingen opslaan", + "savechanges": "Opslaan", "savedocument": "Document opslaan", "settings": "Instellingen", "source": "Paginabron", diff --git a/server/locales/pt/admin.json b/server/locales/pt/admin.json index 048e7c4a..6ceed602 100644 --- a/server/locales/pt/admin.json +++ b/server/locales/pt/admin.json @@ -25,7 +25,7 @@ "currentversion": "Versão Atual", "latestversion": "Última Versão", "upgrade": "Atualizar", - "reinstall": "Reinstalar versão atual", + "reinstall": "Re-instalar versão atual", "versioncheckfailed": "Não é possível consultar a versão mais recente. Tente mais tarde.", "administrativetools": "Ferramentas Administrativas", "flushcache": "Limpar o cache e reconstruir índices", diff --git a/server/locales/pt/common.json b/server/locales/pt/common.json index 02fc20af..02791507 100644 --- a/server/locales/pt/common.json +++ b/server/locales/pt/common.json @@ -21,7 +21,7 @@ "create": "Criar", "discard": "Descartar", "edit": "Editar", - "history": "Histórico", + "history": "Historico", "login": "Login", "logout": "Sair", "move": "Mover", @@ -31,7 +31,7 @@ "savedocument": "Salvar Documento", "settings": "Configurações", "source": "Fonte", - "stats": "Estatísticas", + "stats": "Statatísticas", "syssettings": "Configurações do Sistema", "theme": "Tema de Cor", "users": "Usuários", diff --git a/server/locales/tr/admin.json b/server/locales/tr/admin.json new file mode 100644 index 00000000..6f31cf5a --- /dev/null +++ b/server/locales/tr/admin.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/server/locales/tr/auth.json b/server/locales/tr/auth.json new file mode 100644 index 00000000..6f31cf5a --- /dev/null +++ b/server/locales/tr/auth.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/server/locales/tr/browser.json b/server/locales/tr/browser.json new file mode 100644 index 00000000..6f31cf5a --- /dev/null +++ b/server/locales/tr/browser.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/server/locales/tr/common.json b/server/locales/tr/common.json new file mode 100644 index 00000000..6f31cf5a --- /dev/null +++ b/server/locales/tr/common.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/server/locales/tr/errors.json b/server/locales/tr/errors.json new file mode 100644 index 00000000..6f31cf5a --- /dev/null +++ b/server/locales/tr/errors.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/server/locales/tr/git.json b/server/locales/tr/git.json new file mode 100644 index 00000000..6f31cf5a --- /dev/null +++ b/server/locales/tr/git.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/server/locales/zh/admin.json b/server/locales/zh/admin.json index 3fa0fb87..a07d0024 100644 --- a/server/locales/zh/admin.json +++ b/server/locales/zh/admin.json @@ -56,9 +56,9 @@ "primarycolor": "原色", "primarycolordesc": "用于顶级导航栏,标题,链接等", "altcolor": "替代颜色", - "altcolordesc": "用于边栏(黑色)", + "altcolordesc": "用于边栏(暗色)", "footercolor": "页脚颜色", - "footercolordesc": "用于foter(较轻的音调)", + "footercolordesc": "用于页脚(浅色)", "codeblock": { "title": "代码块", "dark": "使用黑色主题", diff --git a/server/views/layout.pug b/server/views/layout.pug index 4e0f0a9f..36c75734 100644 --- a/server/views/layout.pug +++ b/server/views/layout.pug @@ -28,7 +28,7 @@ html block head - body + body(class={ 'rtl': appconfig.langRtl }) #root.has-stickynav(class=['is-primary-' + appconfig.theme.primary, 'is-alternate-' + appconfig.theme.alt]) include ./common/header.pug alert diff --git a/tools/fuse_tasks.js b/tools/fuse_tasks.js index e5160a6c..90e7b61b 100644 --- a/tools/fuse_tasks.js +++ b/tools/fuse_tasks.js @@ -76,7 +76,7 @@ module.exports = Promise.mapSeries([ return Promise.map(langs, lang => { console.info(colors.white(' ' + lang + '.json')) let outputPath = path.join('./assets/js/i18n', lang + '.json') - return fs.readJsonAsync(path.join('./server/locales', lang + 'browser.json'), 'utf8').then((content) => { + return fs.readJsonAsync(path.join('./server/locales', lang, 'browser.json'), 'utf8').then((content) => { return fs.outputJsonAsync(outputPath, _.defaultsDeep(content, enContent)) }).catch(err => { // eslint-disable-line handle-callback-err return fs.outputJsonAsync(outputPath, enContent)