From 652fa38927b1d010905e5335afb4428b6d4199c1 Mon Sep 17 00:00:00 2001 From: sakaguchi Date: Tue, 2 Jun 2026 23:37:57 +0900 Subject: [PATCH] =?UTF-8?q?fix=20#3910=20javascript=E3=81=AE=E5=A4=96?= =?UTF-8?q?=E9=83=A8=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/BcMail/Mail/default/confirm.php | 6 ++- .../plugin/BcMail/Mail/default/index.php | 6 ++- .../templates/layout/default.php | 11 +++-- .../resources/locales/en/baser_core.mo | Bin 280183 -> 280305 bytes .../resources/locales/en/baser_core.po | 11 ++--- plugins/baser-core/src/Utility/BcUtil.php | 30 ++++++++++++ .../src/View/Helper/BcBaserHelper.php | 26 ++++++++++ .../src/View/Helper/BcCkeditorHelper.php | 16 +++++- .../tests/TestCase/Utility/BcUtilTest.php | 23 ++++++++- .../View/Helper/BcBaserHelperTest.php | 28 +++++++++++ .../View/Helper/BcCkeditorHelperTest.php | 46 ++++++++++++++++++ .../templates/Admin/layout/default.php | 13 +++-- .../templates/Admin/layout/error.php | 15 ++++-- .../webroot/js/vendor/ckeditor/lang/en.js | 5 ++ .../vendor/ckeditor/plugins/draft/lang/en.js | 11 +++++ .../vendor/ckeditor/plugins/draft/lang/ja.js | 11 +++++ .../vendor/ckeditor/plugins/draft/plugin.js | 9 ++-- plugins/bc-front/templates/layout/default.php | 11 +++-- 18 files changed, 244 insertions(+), 34 deletions(-) create mode 100644 plugins/bc-admin-third/webroot/js/vendor/ckeditor/lang/en.js create mode 100644 plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/lang/en.js create mode 100644 plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/lang/ja.js diff --git a/plugins/BcColumn/templates/plugin/BcMail/Mail/default/confirm.php b/plugins/BcColumn/templates/plugin/BcMail/Mail/default/confirm.php index 26d17f025f..c16b75a595 100755 --- a/plugins/BcColumn/templates/plugin/BcMail/Mail/default/confirm.php +++ b/plugins/BcColumn/templates/plugin/BcMail/Mail/default/confirm.php @@ -3,7 +3,11 @@ * メールフォーム確認ページ */ $this->BcBaser->css('admin/jquery-ui/jquery-ui.min', true); -$this->BcBaser->js(array('vendor/jquery-ui-1.11.4.min', 'vendor/i18n/ui.datepicker-ja'), false); +$jsFiles = ['vendor/jquery-ui-1.11.4.min']; +if ($this->BcBaser->isJapaneseLocale()) { + $jsFiles[] = 'vendor/i18n/ui.datepicker-ja'; +} +$this->BcBaser->js($jsFiles, false); if ($freezed) { $this->Mailform->freeze(); } diff --git a/plugins/BcColumn/templates/plugin/BcMail/Mail/default/index.php b/plugins/BcColumn/templates/plugin/BcMail/Mail/default/index.php index 94bd53190a..be69a16101 100755 --- a/plugins/BcColumn/templates/plugin/BcMail/Mail/default/index.php +++ b/plugins/BcColumn/templates/plugin/BcMail/Mail/default/index.php @@ -3,7 +3,11 @@ * メールフォーム */ $this->BcBaser->css('admin/jquery-ui/jquery-ui.min', true); -$this->BcBaser->js(array('vendor/jquery-ui-1.11.4.min', 'vendor/i18n/ui.datepicker-ja'), false); +$jsFiles = ['vendor/jquery-ui-1.11.4.min']; +if ($this->BcBaser->isJapaneseLocale()) { + $jsFiles[] = 'vendor/i18n/ui.datepicker-ja'; +} +$this->BcBaser->js($jsFiles, false); ?> diff --git a/plugins/BcThemeSample/templates/layout/default.php b/plugins/BcThemeSample/templates/layout/default.php index a7b9f2bbf8..8e2383f9ad 100755 --- a/plugins/BcThemeSample/templates/layout/default.php +++ b/plugins/BcThemeSample/templates/layout/default.php @@ -18,9 +18,13 @@ $request = $this->getRequest(); $attributes = $request->getAttributes(); $base = $attributes['base']; +$jsFiles = []; +if ($this->BcBaser->isJapaneseLocale()) { + $jsFiles[] = 'vendor/i18n/ui.datepicker-ja'; +} ?> - + BcBaser->charset() ?> @@ -35,14 +39,13 @@ 'editor' ]) ?> BcBaser->declarationI18n() ?> - BcBaser->js([ + BcBaser->js(array_merge([ 'vendor/jquery-1.11.3.min', 'vendor/jquery-ui-1.11.4.min', 'vendor/jquery.bxslider-4.12.min', 'vendor/jquery.colorbox-1.6.1.min', - 'vendor/i18n/ui.datepicker-ja', 'vendor/jquery-accessibleMegaMenu', - ]); ?> + ], $jsFiles)); ?> BcBaser->js('common.bundle', true, [ 'id' => 'AdminScript', 'data-baseUrl' => h($base), diff --git a/plugins/baser-core/resources/locales/en/baser_core.mo b/plugins/baser-core/resources/locales/en/baser_core.mo index bb0f72aac135648d83465242536c930036d567e5..95f37425b1dfb6c6b14b51cc9301c79baab9489a 100644 GIT binary patch delta 38829 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 IHaq$M0b$yxA^-pY delta 38796 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 'ja', // 言語 + 'editorLanguage' => $editorLanguage, // 言語 'editorSkin' => 'moono', // スキン 'editorToolType' => 'normal', // ツールバータイプ 'editorToolbar' => [], // ツールバータイプ diff --git a/plugins/baser-core/tests/TestCase/Utility/BcUtilTest.php b/plugins/baser-core/tests/TestCase/Utility/BcUtilTest.php index 784653bb5d..8951dae20b 100644 --- a/plugins/baser-core/tests/TestCase/Utility/BcUtilTest.php +++ b/plugins/baser-core/tests/TestCase/Utility/BcUtilTest.php @@ -179,6 +179,27 @@ public static function isInstallModeDataProvider() ]; } + /** + * locale から言語コードを取得する + */ + public function testGetLocaleLanguageCode(): void + { + $this->assertSame('ja', BcUtil::getLocaleLanguageCode('ja_JP')); + $this->assertSame('en', BcUtil::getLocaleLanguageCode('en_US')); + $this->assertSame('fr', BcUtil::getLocaleLanguageCode('fr-FR')); + $this->assertSame('ja', BcUtil::getLocaleLanguageCode('', 'ja')); + } + + /** + * 日本語 locale かどうか判定する + */ + public function testIsJapaneseLocale(): void + { + $this->assertTrue(BcUtil::isJapaneseLocale('ja_JP')); + $this->assertTrue(BcUtil::isJapaneseLocale('ja')); + $this->assertFalse(BcUtil::isJapaneseLocale('en_US')); + } + /** * Test getVersion * @return void @@ -1545,7 +1566,7 @@ public function testIsSameReferrerAsCurrent($referer, $expected) public static function isSameReferrerAsCurrentDataProvider() { return [ - // refererがnullの場合  + // refererがnullの場合 [null, false], // referer!=$siteDomainの場合 ["/baser/admin", false], diff --git a/plugins/baser-core/tests/TestCase/View/Helper/BcBaserHelperTest.php b/plugins/baser-core/tests/TestCase/View/Helper/BcBaserHelperTest.php index cb3b05d805..693cfc008e 100644 --- a/plugins/baser-core/tests/TestCase/View/Helper/BcBaserHelperTest.php +++ b/plugins/baser-core/tests/TestCase/View/Helper/BcBaserHelperTest.php @@ -458,6 +458,34 @@ public function testI18nScript() $this->assertStringContainsString($encoded2, $result); } + /** + * html lang 用の言語コードを取得する + */ + public function testGetHtmlLang(): void + { + $originalLocale = \Cake\I18n\I18n::getLocale(); + try { + \Cake\I18n\I18n::setLocale('ja_JP'); + $this->assertSame('ja', $this->BcBaser->getHtmlLang()); + } finally { + \Cake\I18n\I18n::setLocale($originalLocale); + } + } + + /** + * 現在の locale が日本語かどうか判定する + */ + public function testIsJapaneseLocale(): void + { + $originalLocale = \Cake\I18n\I18n::getLocale(); + try { + \Cake\I18n\I18n::setLocale('ja_JP'); + $this->assertTrue($this->BcBaser->isJapaneseLocale()); + } finally { + \Cake\I18n\I18n::setLocale($originalLocale); + } + } + /** * Test BcBaser->flashが適切なflashメッセージを出力してるかテスト * diff --git a/plugins/baser-core/tests/TestCase/View/Helper/BcCkeditorHelperTest.php b/plugins/baser-core/tests/TestCase/View/Helper/BcCkeditorHelperTest.php index d5b3d1167a..a5a5077e9a 100644 --- a/plugins/baser-core/tests/TestCase/View/Helper/BcCkeditorHelperTest.php +++ b/plugins/baser-core/tests/TestCase/View/Helper/BcCkeditorHelperTest.php @@ -14,6 +14,8 @@ use BaserCore\View\BcAdminAppView; use BaserCore\TestSuite\BcTestCase; use BaserCore\View\Helper\BcCkeditorHelper; +use Cake\Core\Plugin; +use Cake\I18n\I18n; use CakephpFixtureFactories\Scenario\ScenarioAwareTrait; /** @@ -111,6 +113,50 @@ public function testBuild() $this->assertMatchesRegularExpression('/let config = JSON\.parse\(\'\{"ckeditorField/', $jsResult); } + /** + * Test build locale-aware editor language + */ + public function testBuildEditorLanguageByLocale() + { + $this->BcCkeditor->getView()->setTheme('BcAdminThird'); + $request = $this->BcCkeditor->getView()->getRequest()->withAttribute('formTokenData', ['dummy']); + $this->BcCkeditor->getView()->setRequest($request); + $this->BcCkeditor->BcAdminForm->create(); + + $originalLocale = I18n::getLocale(); + try { + I18n::setLocale('en_US'); + $this->execPrivateMethod($this->BcCkeditor, 'build', ['Page.contents', []]); + $jsResult = $this->BcCkeditor->getView()->fetch('script'); + $editorLanguagePath = Plugin::path('BcAdminThird') . 'webroot' . DS . 'js' . DS . 'vendor' . DS . 'ckeditor' . DS . 'lang' . DS . 'en.js'; + $this->assertFileExists($editorLanguagePath); + $this->assertStringContainsString('"language":"en"', $jsResult); + } finally { + I18n::setLocale($originalLocale); + } + } + + /** + * Test build falls back to ja for unsupported locale + */ + public function testBuildEditorLanguageFallbackToJa() + { + $this->BcCkeditor->getView()->setTheme('BcAdminThird'); + $request = $this->BcCkeditor->getView()->getRequest()->withAttribute('formTokenData', ['dummy']); + $this->BcCkeditor->getView()->setRequest($request); + $this->BcCkeditor->BcAdminForm->create(); + + $originalLocale = I18n::getLocale(); + try { + I18n::setLocale('fr_FR'); + $this->execPrivateMethod($this->BcCkeditor, 'build', ['Page.contents', []]); + $jsResult = $this->BcCkeditor->getView()->fetch('script'); + $this->assertStringContainsString('"language":"ja"', $jsResult); + } finally { + I18n::setLocale($originalLocale); + } + } + /** * Test setEditorToolbar */ diff --git a/plugins/bc-admin-third/templates/Admin/layout/default.php b/plugins/bc-admin-third/templates/Admin/layout/default.php index 5882d6f1d4..2539aa6526 100644 --- a/plugins/bc-admin-third/templates/Admin/layout/default.php +++ b/plugins/bc-admin-third/templates/Admin/layout/default.php @@ -24,9 +24,14 @@ $request = $this->getRequest(); $attributes = $request->getAttributes(); $base = $attributes['base']; +$jsFiles = []; +if ($this->BcBaser->isJapaneseLocale()) { + $jsFiles[] = 'vendor/i18n/ui.datepicker-ja'; + $jsFiles[] = 'vendor/jquery.validate_ja'; +} ?> - + @@ -68,18 +73,16 @@ 'bcConfirmAlertMessage1' => __d('baser_core', 'メッセージを指定してください。'), 'bcConfirmAlertMessage2' => __d('baser_core', 'コールバック処理が登録されていません。') ], ['block' => false]) ?> - BcBaser->js([ + BcBaser->js(array_merge([ 'admin/vendor.bundle', 'vendor/jquery-3.5.1.min', 'vendor/jquery.bt.min', 'vendor/jquery-contextMenu-2.2.0/jquery.contextMenu.min', 'vendor/jquery-ui-1.13.0.min', - 'vendor/i18n/ui.datepicker-ja', 'vendor/jquery.validate.1.19.3.min', - 'vendor/jquery.validate_ja', 'vendor/jquery.form-2.94', 'vendor/jquery.timepicker' - ]) ?> + ], $jsFiles)) ?> BcBaser->js('admin/common.bundle', true, [ 'id' => 'AdminScript', 'data-baseUrl' => h($base), diff --git a/plugins/bc-admin-third/templates/Admin/layout/error.php b/plugins/bc-admin-third/templates/Admin/layout/error.php index 4aa17681a2..4debab9e96 100644 --- a/plugins/bc-admin-third/templates/Admin/layout/error.php +++ b/plugins/bc-admin-third/templates/Admin/layout/error.php @@ -1,5 +1,11 @@ +BcBaser->isJapaneseLocale()) { + $jsFiles[] = 'vendor/i18n/ui.datepicker-ja'; +} +?> - + @@ -12,15 +18,14 @@ 'admin/style', ]) ?> fetch('css') ?> - BcBaser->js([ + BcBaser->js(array_merge([ 'admin/vendor.bundle', 'vendor/vue.min', 'vendor/jquery-3.5.1.min', 'vendor/jquery.bt.min', - 'vendor/jquery-ui-1.11.4.min.js', - 'vendor/i18n/ui.datepicker-ja', + 'vendor/jquery-ui-1.13.0.min', 'vendor/jquery.timepicker', - ]) ?> + ], $jsFiles)) ?> fetch('script') ?> diff --git a/plugins/bc-admin-third/webroot/js/vendor/ckeditor/lang/en.js b/plugins/bc-admin-third/webroot/js/vendor/ckeditor/lang/en.js new file mode 100644 index 0000000000..f8d1a004b2 --- /dev/null +++ b/plugins/bc-admin-third/webroot/js/vendor/ckeditor/lang/en.js @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.lang['en']={"wsc":{"btnIgnore":"Ignore","btnIgnoreAll":"Ignore All","btnReplace":"Replace","btnReplaceAll":"Replace All","btnUndo":"Undo","changeTo":"Change to","errorLoading":"Error loading application service host: %s.","ieSpellDownload":"Spell checker not installed. Do you want to download it now?","manyChanges":"Spell check complete: %1 words changed","noChanges":"Spell check complete: No words changed","noMispell":"Spell check complete: No misspellings found","noSuggestions":"- No suggestions -","notAvailable":"Sorry, but service is unavailable now.","notInDic":"Not in dictionary","oneChange":"Spell check complete: One word changed","progress":"Spell check in progress...","title":"Spell Checker","toolbar":"Check Spelling"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"templates":{"button":"Templates","emptyListMsg":"(No templates defined)","insertOption":"Replace actual contents","options":"Template Options","selectPromptMsg":"Please select the template to open in the editor","title":"Content Templates"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcearea":{"toolbar":"Source"},"smiley":{"options":"Smiley Options","title":"Insert a Smiley","toolbar":"Smiley"},"showblocks":{"toolbar":"Show Blocks"},"selectall":{"toolbar":"Select All"},"scayt":{"btn_about":"About SCAYT","btn_dictionaries":"Dictionaries","btn_disable":"Disable SCAYT","btn_enable":"Enable SCAYT","btn_langs":"Languages","btn_options":"Options","text_title":"Spell Check As You Type"},"save":{"toolbar":"Save"},"removeformat":{"toolbar":"Remove Format"},"print":{"toolbar":"Print"},"preview":{"preview":"Preview"},"pastetext":{"button":"Paste as plain text","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"pagebreak":{"alt":"Page Break","toolbar":"Insert Page Break for Printing"},"newpage":{"toolbar":"New Page"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"liststyle":{"armenian":"Armenian numbering","bulletedTitle":"Bulleted List Properties","circle":"Circle","decimal":"Decimal (1, 2, 3, etc.)","decimalLeadingZero":"Decimal leading zero (01, 02, 03, etc.)","disc":"Disc","georgian":"Georgian numbering (an, ban, gan, etc.)","lowerAlpha":"Lower Alpha (a, b, c, d, e, etc.)","lowerGreek":"Lower Greek (alpha, beta, gamma, etc.)","lowerRoman":"Lower Roman (i, ii, iii, iv, v, etc.)","none":"None","notset":"","numberedTitle":"Numbered List Properties","square":"Square","start":"Start","type":"Type","upperAlpha":"Upper Alpha (A, B, C, D, E, etc.)","upperRoman":"Upper Roman (I, II, III, IV, V, etc.)","validateStartNumber":"List start number must be a whole number."},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"","targetFrameName":"Target Frame Name","targetPopup":"","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"language":{"button":"Set language","remove":"Remove language"},"justify":{"block":"Justify","center":"Center","left":"Align Left","right":"Align Right"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image":{"alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"iframe":{"border":"Show frame border","noUrl":"Please type the iframe URL","scrolling":"Enable scrollbars","title":"IFrame Properties","toolbar":"IFrame"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"forms":{"button":{"title":"Button Properties","text":"Text (Value)","type":"Type","typeBtn":"Button","typeSbm":"Submit","typeRst":"Reset"},"checkboxAndRadio":{"checkboxTitle":"Checkbox Properties","radioTitle":"Radio Button Properties","value":"Value","selected":"Selected","required":"Required"},"form":{"title":"Form Properties","menu":"Form Properties","action":"Action","method":"Method","encoding":"Encoding"},"hidden":{"title":"Hidden Field Properties","name":"Name","value":"Value"},"select":{"title":"Selection Field Properties","selectInfo":"Select Info","opAvail":"Available Options","value":"Value","size":"Size","lines":"lines","chkMulti":"Allow multiple selections","required":"Required","opText":"Text","opValue":"Value","btnAdd":"Add","btnModify":"Modify","btnUp":"Up","btnDown":"Down","btnSetValue":"Set as selected value","btnDelete":"Delete"},"textarea":{"title":"Textarea Properties","cols":"Columns","rows":"Rows"},"textfield":{"title":"Text Field Properties","name":"Name","value":"Value","charWidth":"Character Width","maxChars":"Maximum Characters","required":"Required","type":"Type","typeText":"Text","typePass":"Password","typeEmail":"Email","typeSearch":"Search","typeTel":"Telephone Number","typeUrl":"URL"}},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"font":{"fontSize":{"label":"Size","voiceLabel":"Font Size","panelTitle":"Font Size"},"label":"Font","panelTitle":"Font Name","voiceLabel":"Font"},"flash":{"access":"Script Access","accessAlways":"Always","accessNever":"Never","accessSameDomain":"Same domain","alignAbsBottom":"Abs Bottom","alignAbsMiddle":"Abs Middle","alignBaseline":"Baseline","alignTextTop":"Text Top","bgcolor":"Background color","chkFull":"Allow Fullscreen","chkLoop":"Loop","chkMenu":"Enable Flash Menu","chkPlay":"Auto Play","flashvars":"Variables for Flash","hSpace":"HSpace","properties":"Flash Properties","propertiesTab":"Properties","quality":"Quality","qualityAutoHigh":"Auto High","qualityAutoLow":"Auto Low","qualityBest":"Best","qualityHigh":"High","qualityLow":"Low","qualityMedium":"Medium","scale":"Scale","scaleAll":"Show all","scaleFit":"Exact Fit","scaleNoBorder":"No Border","title":"Flash Properties","vSpace":"VSpace","validateHSpace":"HSpace must be a number.","validateSrc":"URL must not be empty.","validateVSpace":"VSpace must be a number.","windowMode":"Window mode","windowModeOpaque":"Opaque","windowModeTransparent":"Transparent","windowModeWindow":"Window"},"find":{"find":"Find","findOptions":"Find Options","findWhat":"Find what:","matchCase":"Match case","matchCyclic":"Match cyclic","matchWord":"Match whole word","notFoundMsg":"The specified text was not found.","replace":"Replace","replaceAll":"Replace All","replaceSuccessMsg":"%1 occurrence(s) replaced.","replaceWith":"Replace with:","title":"Find and Replace"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"div":{"IdInputLabel":"Id","advisoryTitleInputLabel":"Advisory Title","cssClassInputLabel":"Stylesheet Classes","edit":"Edit Div","inlineStyleInputLabel":"Inline Style","langDirLTRLabel":"Left to Right (LTR)","langDirLabel":"Language Direction","langDirRTLLabel":"Right to Left (RTL)","languageCodeInputLabel":" Language Code","remove":"Remove Div","styleSelectLabel":"Style","title":"Create Div Container","toolbar":"Create Div Container"},"contextmenu":{"options":"Context Menu Options"},"colordialog":{"clear":"Clear","highlight":"Highlight","options":"Color Options","selected":"Selected Color","title":"Select color"},"colorbutton":{"auto":"Automatic","bgColorTitle":"Background Color","colors":{"000":"Black","800000":"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo","696969":"Dark Gray","B22222":"Fire Brick","A52A2A":"Brown","DAA520":"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue","800080":"Purple","808080":"Gray","F00":"Red","FF8C00":"Dark Orange","FFD700":"Gold","008000":"Green","0FF":"Cyan","00F":"Blue","EE82EE":"Violet","A9A9A9":"Dim Gray","FFA07A":"Light Salmon","FFA500":"Orange","FFFF00":"Yellow","00FF00":"Lime","AFEEEE":"Pale Turquoise","ADD8E6":"Light Blue","DDA0DD":"Plum","D3D3D3":"Light Grey","FFF0F5":"Lavender Blush","FAEBD7":"Antique White","FFFFE0":"Light Yellow","F0FFF0":"Honeydew","F0FFFF":"Azure","F0F8FF":"Alice Blue","E6E6FA":"Lavender","FFF":"White"},"more":"More Colors...","panelTitle":"Colors","textColorTitle":"Text Color"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Paste"},"button":{"selectedLabel":"%1 (Selected)"},"blockquote":{"toolbar":"Block Quote"},"bidi":{"ltr":"Text direction from left to right","rtl":"Text direction from right to left"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor","help":"Check $1 for help.","moreInfo":"For licensing information please visit our web site:","title":"About CKEditor","userGuide":"CKEditor User's Guide"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","alignLeft":"Left","alignRight":"Right","alignCenter":"Center","alignJustify":"Justify","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1, unavailable"}}; \ No newline at end of file diff --git a/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/lang/en.js b/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/lang/en.js new file mode 100644 index 0000000000..47d1db7ee6 --- /dev/null +++ b/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/lang/en.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ + +CKEDITOR.plugins.setLang('draft', 'en', { + buttonDraft: 'Draft', + buttonPublish: 'Publish', + buttonCopyDraft: 'Copy Draft to Publish', + buttonCopyPublish: 'Copy Publish to Draft' +}); diff --git a/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/lang/ja.js b/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/lang/ja.js new file mode 100644 index 0000000000..8cdf37e5f4 --- /dev/null +++ b/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/lang/ja.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ + +CKEDITOR.plugins.setLang('draft', 'ja', { + buttonDraft: '草 稿', + buttonPublish: '本 稿', + buttonCopyDraft: '草稿を本稿にコピー', + buttonCopyPublish: '本稿を草稿にコピー' +}); diff --git a/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/plugin.js b/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/plugin.js index 3557030c8b..0baf9be489 100755 --- a/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/plugin.js +++ b/plugins/bc-admin-third/webroot/js/vendor/ckeditor/plugins/draft/plugin.js @@ -19,6 +19,7 @@ */ CKEDITOR.plugins.add('draft', { + lang: 'en,ja', /** * 初期化処理 */ @@ -46,10 +47,10 @@ CKEDITOR.plugins.add('draft', if ( editor.ui.addButton ) { - editor.ui.addButton( 'Draft', { label : '草 稿', command : 'changeDraft'}); - editor.ui.addButton( 'Publish', { label : '本 稿', command : 'changePublish'}); - editor.ui.addButton( 'CopyDraft', { label : '草稿を本稿にコピー', command : 'copyDraft'}); - editor.ui.addButton( 'CopyPublish', { label : '本稿を草稿にコピー', command : 'copyPublish'}); + editor.ui.addButton( 'Draft', { label : editor.lang.draft.buttonDraft, command : 'changeDraft'}); + editor.ui.addButton( 'Publish', { label : editor.lang.draft.buttonPublish, command : 'changePublish'}); + editor.ui.addButton( 'CopyDraft', { label : editor.lang.draft.buttonCopyDraft, command : 'copyDraft'}); + editor.ui.addButton( 'CopyPublish', { label : editor.lang.draft.buttonCopyPublish, command : 'copyPublish'}); } editor.on('pluginsLoaded', function(event) { event.editor.draftMode = 'publish'; diff --git a/plugins/bc-front/templates/layout/default.php b/plugins/bc-front/templates/layout/default.php index 824e715936..664b4dbd3c 100755 --- a/plugins/bc-front/templates/layout/default.php +++ b/plugins/bc-front/templates/layout/default.php @@ -19,9 +19,13 @@ $request = $this->getRequest(); $attributes = $request->getAttributes(); $base = $attributes['base']; +$jsFiles = []; +if ($this->BcBaser->isJapaneseLocale()) { + $jsFiles[] = 'vendor/i18n/ui.datepicker-ja'; +} ?> - + BcBaser->charset() ?> @@ -36,14 +40,13 @@ 'editor' ]) ?> BcBaser->declarationI18n() ?> - BcBaser->js([ + BcBaser->js(array_merge([ 'vendor/jquery-1.11.3.min', 'vendor/jquery-ui-1.11.4.min', 'vendor/jquery.bxslider-4.12.min', 'vendor/jquery.colorbox-1.6.1.min', - 'vendor/i18n/ui.datepicker-ja', 'vendor/jquery-accessibleMegaMenu', - ]); ?> + ], $jsFiles)); ?> BcBaser->js('common.bundle', true, [ 'id' => 'AdminScript', 'data-baseUrl' => h($base),