From cf043a01062426dfbbcef6010238e5774905e6fa Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 19 May 2016 11:33:14 +1200 Subject: [PATCH 01/25] Remove SiteConfig defaults from tests (fixes #224) Causes TranslatableSiteConfigTest.testCanEditTranslatedRootPages to fail when used in the CWP recipe (possibly because of subsites?). --- tests/unit/TranslatableSiteConfigTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/unit/TranslatableSiteConfigTest.php b/tests/unit/TranslatableSiteConfigTest.php index 3476613..fd6081d 100644 --- a/tests/unit/TranslatableSiteConfigTest.php +++ b/tests/unit/TranslatableSiteConfigTest.php @@ -22,6 +22,9 @@ class TranslatableSiteConfigTest extends SapphireTest { $this->origLocale = Translatable::default_locale(); Translatable::set_default_locale("en_US"); + + // Delete any default records created outside of fixtures + SiteConfig::get()->exclude('ID', $this->allFixtureIDs('SiteConfig'))->removeAll(); } function tearDown() { From 0fea48a608a9afe91f91f546a436236e83be7a65 Mon Sep 17 00:00:00 2001 From: "3dgoo (Michael)" Date: Thu, 28 Jul 2016 13:37:22 +0930 Subject: [PATCH 02/25] Check if object is folder before trying to add cms fields. --- code/model/Translatable.php | 126 ++++++++++++++++++------------------ 1 file changed, 64 insertions(+), 62 deletions(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index 98e10ea..c52e607 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -1065,72 +1065,74 @@ class Translatable extends DataExtension implements PermissionProvider { $alreadyTranslatedLocales[$this->owner->Locale] = $this->owner->Locale; $alreadyTranslatedLocales = array_combine($alreadyTranslatedLocales, $alreadyTranslatedLocales); - // Check if fields exist already to avoid adding them twice on repeat invocations - $tab = $fields->findOrMakeTab('Root.Translations', _t('Translatable.TRANSLATIONS', 'Translations')); - if(!$tab->fieldByName('CreateTransHeader')) { - $tab->push(new HeaderField( - 'CreateTransHeader', - _t('Translatable.CREATE', 'Create new translation'), - 2 - )); - } - if(!$tab->fieldByName('NewTransLang') && !$tab->fieldByName('AllTransCreated')) { - $langDropdown = LanguageDropdownField::create( - "NewTransLang", - _t('Translatable.NEWLANGUAGE', 'New language'), - $alreadyTranslatedLocales, - 'SiteTree', - 'Locale-English', - $this->owner - )->addExtraClass('languageDropdown no-change-track'); - $tab->push($langDropdown); - $canAddLocale = (count($langDropdown->getSource()) > 0); - - if($canAddLocale) { - // Only add create button if new languages are available - $tab->push( - $createButton = InlineFormAction::create( - 'createtranslation', - _t('Translatable.CREATEBUTTON', 'Create') - )->addExtraClass('createTranslationButton') - ); - $createButton->includeDefaultJS(false); // not fluent API... - } else { - $tab->removeByName('NewTransLang'); - $tab->push(new LiteralField( - 'AllTransCreated', - _t('Translatable.ALLCREATED', 'All allowed translations have been created.') + if ($fields->hasTabSet()) { + // Check if fields exist already to avoid adding them twice on repeat invocations + $tab = $fields->findOrMakeTab('Root.Translations', _t('Translatable.TRANSLATIONS', 'Translations')); + if(!$tab->fieldByName('CreateTransHeader')) { + $tab->push(new HeaderField( + 'CreateTransHeader', + _t('Translatable.CREATE', 'Create new translation'), + 2 )); } - } - if($alreadyTranslatedLocales) { - if(!$tab->fieldByName('ExistingTransHeader')) { - $tab->push(new HeaderField( - 'ExistingTransHeader', - _t('Translatable.EXISTING', 'Existing translations'), - 3 - )); - if (!$tab->fieldByName('existingtrans')) { - $existingTransHTML = ''; - $tab->push(new LiteralField('existingtrans', $existingTransHTML)); + if(!$tab->fieldByName('NewTransLang') && !$tab->fieldByName('AllTransCreated')) { + $langDropdown = LanguageDropdownField::create( + "NewTransLang", + _t('Translatable.NEWLANGUAGE', 'New language'), + $alreadyTranslatedLocales, + 'SiteTree', + 'Locale-English', + $this->owner + )->addExtraClass('languageDropdown no-change-track'); + $tab->push($langDropdown); + $canAddLocale = (count($langDropdown->getSource()) > 0); + + if($canAddLocale) { + // Only add create button if new languages are available + $tab->push( + $createButton = InlineFormAction::create( + 'createtranslation', + _t('Translatable.CREATEBUTTON', 'Create') + )->addExtraClass('createTranslationButton') + ); + $createButton->includeDefaultJS(false); // not fluent API... + } else { + $tab->removeByName('NewTransLang'); + $tab->push(new LiteralField( + 'AllTransCreated', + _t('Translatable.ALLCREATED', 'All allowed translations have been created.') + )); } } - } + if($alreadyTranslatedLocales) { + if(!$tab->fieldByName('ExistingTransHeader')) { + $tab->push(new HeaderField( + 'ExistingTransHeader', + _t('Translatable.EXISTING', 'Existing translations'), + 3 + )); + if (!$tab->fieldByName('existingtrans')) { + $existingTransHTML = ''; + $tab->push(new LiteralField('existingtrans', $existingTransHTML)); + } + } + } + } } function updateSettingsFields(&$fields) { From 4324d5b607c9ab1306deacc54aecc51e75d1403e Mon Sep 17 00:00:00 2001 From: Michal Kleiner Date: Thu, 4 Aug 2016 16:32:17 +1200 Subject: [PATCH 03/25] Output extra meta tags only when there are any existing translations --- code/model/Translatable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index c52e607..310e982 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -1574,7 +1574,7 @@ class Translatable extends DataExtension implements PermissionProvider { function MetaTags(&$tags) { $template = '' . "\n"; $translations = $this->owner->getTranslations(); - if($translations) { + if($translations->count()) { $translations = $translations->toArray(); $translations[] = $this->owner; From 7f34bac485362201eedc181d3b492dac2d480e1e Mon Sep 17 00:00:00 2001 From: Michal Kleiner Date: Thu, 4 Aug 2016 16:32:59 +1200 Subject: [PATCH 04/25] Adjust block indentation --- code/model/Translatable.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index 310e982..3ef7594 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -1577,12 +1577,12 @@ class Translatable extends DataExtension implements PermissionProvider { if($translations->count()) { $translations = $translations->toArray(); $translations[] = $this->owner; - - foreach($translations as $translation) { - $tags .= sprintf($template, - Convert::raw2xml($translation->Title), - i18n::convert_rfc1766($translation->Locale), - $translation->AbsoluteLink() + + foreach($translations as $translation) { + $tags .= sprintf($template, + Convert::raw2xml($translation->Title), + i18n::convert_rfc1766($translation->Locale), + $translation->AbsoluteLink() ); } } From 18b3c8f8bff3afd92d4dfd05607582b1afd5993a Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Wed, 17 Aug 2016 11:08:01 +1200 Subject: [PATCH 05/25] Update translations --- lang/hr.yml | 24 ++++++++++++++++++++++++ lang/ru.yml | 24 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 lang/hr.yml create mode 100644 lang/ru.yml diff --git a/lang/hr.yml b/lang/hr.yml new file mode 100644 index 0000000..2618f0d --- /dev/null +++ b/lang/hr.yml @@ -0,0 +1,24 @@ +hr: + CMSMain: + LANGUAGEDROPDOWNLABEL: Jezik + CMSMain_left: + GO: Kreni + Form: + LANGAOTHER: 'Ostali jezici' + LANGAVAIL: 'Dostupni jezici' + Translatable: + ALLCREATED: 'Svi dozvoljeni prijevodi su kreirani.' + CREATE: 'Kreiraj novi prijevod' + CREATEBUTTON: Kreiraj + EXISTING: 'Postojeći prijevodi' + NEWLANGUAGE: 'Novi jezik' + NOTICENEWPAGE: 'Molimo spremite ovu stranicu prije kreiranja prijevoda' + TRANSLATEALLPERMISSION: 'Prevedi u sve dostupne jezike' + TRANSLATEPERMISSION: 'Prevedi %s' + TRANSLATEVIEWLANGS: 'Pogledaj padajući izbornik jezika' + TRANSLATIONS: Prijevodi + Translatable_Transform: + CheckboxValueNo: 'Ne' + CheckboxValueYes: 'Da' + OriginalCheckboxLabel: 'Original: {value}' + OriginalFieldLabel: 'Original {title}' diff --git a/lang/ru.yml b/lang/ru.yml new file mode 100644 index 0000000..22d4a24 --- /dev/null +++ b/lang/ru.yml @@ -0,0 +1,24 @@ +ru: + CMSMain: + LANGUAGEDROPDOWNLABEL: Язык + CMSMain_left: + GO: Выполн. + Form: + LANGAOTHER: 'Другие языки' + LANGAVAIL: 'Доступные языки' + Translatable: + ALLCREATED: 'Все переводы на доступные языки созданы.' + CREATE: 'Создать новый перевод' + CREATEBUTTON: Создать + EXISTING: 'Существующие переводы' + NEWLANGUAGE: 'Добавить язык' + NOTICENEWPAGE: 'Пожалуйста, сохраните данную страницу прежде чем создавать перевод' + TRANSLATEALLPERMISSION: 'Перевести на все доступные языки' + TRANSLATEPERMISSION: 'Перевести %s' + TRANSLATEVIEWLANGS: 'Отобразить языковое выпадающее меню' + TRANSLATIONS: Переводы + Translatable_Transform: + CheckboxValueNo: 'Нет' + CheckboxValueYes: 'Да' + OriginalCheckboxLabel: 'Оригинальное значение: {value}' + OriginalFieldLabel: 'Оригинальное {title}' From c6f9bd0330acc3406680f1ac80fb95251afa11f9 Mon Sep 17 00:00:00 2001 From: w-huber Date: Wed, 2 Nov 2016 14:04:47 +0100 Subject: [PATCH 06/25] Update Translatable.php --- code/model/Translatable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index 3ef7594..53c5cc0 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -1752,7 +1752,7 @@ class Translatable extends DataExtension implements PermissionProvider { * @deprecated 2.4 Use get_reading_locale() */ static function get_reading_lang() { - return i18n::get_lang_from_locale(self::get_reading_locale()); + return i18n::get_lang_from_locale(self::get_current_locale()); } /** From 06da9485865ffe2c5a752d8ff2fc9b280d2633f3 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 17 Nov 2016 12:39:49 +1300 Subject: [PATCH 07/25] Update translations --- lang/ar.yml | 2 +- lang/bs.yml | 4 ++-- lang/cs.yml | 4 ++-- lang/cs_CZ.yml | 4 ++-- lang/de.yml | 4 ++-- lang/eo.yml | 4 ++-- lang/et_EE.yml | 4 ++-- lang/fa_IR.yml | 6 +++--- lang/fi_FI.yml | 4 ++-- lang/hr.yml | 4 ++-- lang/it.yml | 1 + lang/ja.yml | 12 ++++++------ lang/mi.yml | 2 +- lang/ru.yml | 4 ++-- lang/sk.yml | 4 ++-- lang/sk_SK.yml | 4 ++-- lang/tr.yml | 4 ++-- lang/vi_VN.yml | 4 ++-- lang/zh.yml | 12 ++++++------ 19 files changed, 44 insertions(+), 43 deletions(-) diff --git a/lang/ar.yml b/lang/ar.yml index 0005f3b..3c3dc5e 100644 --- a/lang/ar.yml +++ b/lang/ar.yml @@ -16,7 +16,7 @@ ar: TRANSLATEALLPERMISSION: 'ترجم إلى جميع اللغات المتاحة' TRANSLATEPERMISSION: 'ترجم %s' TRANSLATEVIEWLANGS: 'أعرض قائمة اللغات' - TRANSLATIONS: تراجم + TRANSLATIONS: 'تراجم' Translatable_Transform: OriginalCheckboxLabel: 'الأصلية: {قيمة}' OriginalFieldLabel: 'الأصلي {عنوان}' diff --git a/lang/bs.yml b/lang/bs.yml index 39c0fcf..0e36847 100644 --- a/lang/bs.yml +++ b/lang/bs.yml @@ -18,7 +18,7 @@ bs: TRANSLATEVIEWLANGS: 'Padajući meni jezika' TRANSLATIONS: Prevodi Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Da' + CheckboxValueNo: Ne + CheckboxValueYes: Da OriginalCheckboxLabel: 'Original: {value}' OriginalFieldLabel: 'Original: {title}' diff --git a/lang/cs.yml b/lang/cs.yml index 2a58ad6..7729b97 100644 --- a/lang/cs.yml +++ b/lang/cs.yml @@ -18,7 +18,7 @@ cs: TRANSLATEVIEWLANGS: 'Zobrazit seznam jazyků' TRANSLATIONS: Překlady Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Ano' + CheckboxValueNo: Ne + CheckboxValueYes: Ano OriginalCheckboxLabel: 'Původní: {value}' OriginalFieldLabel: 'Původní {title}' diff --git a/lang/cs_CZ.yml b/lang/cs_CZ.yml index 97edfe2..e297b3f 100644 --- a/lang/cs_CZ.yml +++ b/lang/cs_CZ.yml @@ -18,7 +18,7 @@ cs_CZ: TRANSLATEVIEWLANGS: 'Zobrazit jazykový rozbalovací seznam' TRANSLATIONS: Překlady Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Ano' + CheckboxValueNo: Ne + CheckboxValueYes: Ano OriginalCheckboxLabel: 'Původní: {value}' OriginalFieldLabel: 'Původní {title}' diff --git a/lang/de.yml b/lang/de.yml index 5893e5b..5b9c6fe 100644 --- a/lang/de.yml +++ b/lang/de.yml @@ -18,7 +18,7 @@ de: TRANSLATEVIEWLANGS: 'Kann die verfügbaren Sprachen sehen' TRANSLATIONS: Übersetzungen Translatable_Transform: - CheckboxValueNo: 'Nein' - CheckboxValueYes: 'Ja' + CheckboxValueNo: Nein + CheckboxValueYes: Ja OriginalCheckboxLabel: 'Original: {value}' OriginalFieldLabel: 'Original {title}' diff --git a/lang/eo.yml b/lang/eo.yml index c5e586f..bde9c5d 100644 --- a/lang/eo.yml +++ b/lang/eo.yml @@ -18,7 +18,7 @@ eo: TRANSLATEVIEWLANGS: 'Vidigi lingvan falliston' TRANSLATIONS: Tradukoj Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Jes' + CheckboxValueNo: Ne + CheckboxValueYes: Jes OriginalCheckboxLabel: 'Origina: {value}' OriginalFieldLabel: 'Origina: {title}' diff --git a/lang/et_EE.yml b/lang/et_EE.yml index 78429e1..ccfcbd5 100644 --- a/lang/et_EE.yml +++ b/lang/et_EE.yml @@ -16,5 +16,5 @@ et_EE: TRANSLATEPERMISSION: 'Tõlgi: %s' TRANSLATIONS: Tõlked Translatable_Transform: - CheckboxValueNo: 'Ei' - CheckboxValueYes: 'Jah' + CheckboxValueNo: Ei + CheckboxValueYes: Jah diff --git a/lang/fa_IR.yml b/lang/fa_IR.yml index cff7845..fe26b0a 100644 --- a/lang/fa_IR.yml +++ b/lang/fa_IR.yml @@ -16,9 +16,9 @@ fa_IR: TRANSLATEALLPERMISSION: 'ترجمه به تمام زبان های موجود' TRANSLATEPERMISSION: 'ترجمه %s' TRANSLATEVIEWLANGS: 'نمایش منوی زبان' - TRANSLATIONS: ترجمه + TRANSLATIONS: 'ترجمه' Translatable_Transform: - CheckboxValueNo: 'خیر' - CheckboxValueYes: 'بله' + CheckboxValueNo: خیر + CheckboxValueYes: بله OriginalCheckboxLabel: 'اصل: {value}' OriginalFieldLabel: 'اصل {title}' diff --git a/lang/fi_FI.yml b/lang/fi_FI.yml index 66dc4e3..ec9df01 100644 --- a/lang/fi_FI.yml +++ b/lang/fi_FI.yml @@ -18,7 +18,7 @@ fi_FI: TRANSLATEVIEWLANGS: 'Näytä kielet' TRANSLATIONS: Käännökset Translatable_Transform: - CheckboxValueNo: 'Ei' - CheckboxValueYes: 'Kyllä' + CheckboxValueNo: Ei + CheckboxValueYes: Kyllä OriginalCheckboxLabel: 'Alkuperäinen: {value}' OriginalFieldLabel: 'Alkuperäinen {title}' diff --git a/lang/hr.yml b/lang/hr.yml index 2618f0d..3a9a8ea 100644 --- a/lang/hr.yml +++ b/lang/hr.yml @@ -18,7 +18,7 @@ hr: TRANSLATEVIEWLANGS: 'Pogledaj padajući izbornik jezika' TRANSLATIONS: Prijevodi Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Da' + CheckboxValueNo: Ne + CheckboxValueYes: Da OriginalCheckboxLabel: 'Original: {value}' OriginalFieldLabel: 'Original {title}' diff --git a/lang/it.yml b/lang/it.yml index 80d985d..741665a 100644 --- a/lang/it.yml +++ b/lang/it.yml @@ -19,5 +19,6 @@ it: TRANSLATIONS: Traduzioni Translatable_Transform: CheckboxValueNo: 'No' + CheckboxValueYes: Si OriginalCheckboxLabel: 'Originale: {value}' OriginalFieldLabel: 'Originale {title}' diff --git a/lang/ja.yml b/lang/ja.yml index e779c8b..b6fa8a4 100644 --- a/lang/ja.yml +++ b/lang/ja.yml @@ -4,18 +4,18 @@ ja: CMSMain_left: GO: 実行 Form: - LANGAOTHER: '他の言語' - LANGAVAIL: '利用可能な言語' + LANGAOTHER: 他の言語 + LANGAVAIL: 利用可能な言語 Translatable: ALLCREATED: '許可された翻訳全てが作成されました。' - CREATE: '新しい翻訳を行う' + CREATE: 新しい翻訳を行う CREATEBUTTON: 作成 - EXISTING: '現存中の翻訳' - NEWLANGUAGE: '新しい言語' + EXISTING: 現存中の翻訳 + NEWLANGUAGE: 新しい言語 NOTICENEWPAGE: '翻訳を作成する前にこのページを保存してください' TRANSLATEALLPERMISSION: '全ての利用可能言語に翻訳' TRANSLATEPERMISSION: '%sを翻訳' - TRANSLATEVIEWLANGS: '言語ドロップダウンを表示' + TRANSLATEVIEWLANGS: 言語ドロップダウンを表示 TRANSLATIONS: 翻訳 Translatable_Transform: OriginalCheckboxLabel: 'オリジナル: {value}' diff --git a/lang/mi.yml b/lang/mi.yml index 534309c..c1cb57a 100644 --- a/lang/mi.yml +++ b/lang/mi.yml @@ -16,7 +16,7 @@ mi: TRANSLATEALLPERMISSION: 'Whakamāoritia ki ngā reo katoa e wātea ana' TRANSLATEPERMISSION: 'Whakamāoritia a %s' TRANSLATEVIEWLANGS: 'Tirohia te takaiho reo' - TRANSLATIONS: Ngā whakamāoritanga + TRANSLATIONS: 'Ngā whakamāoritanga' Translatable_Transform: OriginalCheckboxLabel: 'Taketake: {value}' OriginalFieldLabel: '{title} taketake' diff --git a/lang/ru.yml b/lang/ru.yml index 22d4a24..064bfbb 100644 --- a/lang/ru.yml +++ b/lang/ru.yml @@ -18,7 +18,7 @@ ru: TRANSLATEVIEWLANGS: 'Отобразить языковое выпадающее меню' TRANSLATIONS: Переводы Translatable_Transform: - CheckboxValueNo: 'Нет' - CheckboxValueYes: 'Да' + CheckboxValueNo: Нет + CheckboxValueYes: Да OriginalCheckboxLabel: 'Оригинальное значение: {value}' OriginalFieldLabel: 'Оригинальное {title}' diff --git a/lang/sk.yml b/lang/sk.yml index ad8edd3..0b12b58 100644 --- a/lang/sk.yml +++ b/lang/sk.yml @@ -18,7 +18,7 @@ sk: TRANSLATEVIEWLANGS: 'Zobraziť zoznam jazykov' TRANSLATIONS: Preklady Translatable_Transform: - CheckboxValueNo: 'Nie' - CheckboxValueYes: 'Áno' + CheckboxValueNo: Nie + CheckboxValueYes: Áno OriginalCheckboxLabel: 'Pôvodné: {value}' OriginalFieldLabel: 'Pôvodné {title}' diff --git a/lang/sk_SK.yml b/lang/sk_SK.yml index 2933547..51b4a51 100644 --- a/lang/sk_SK.yml +++ b/lang/sk_SK.yml @@ -18,7 +18,7 @@ sk_SK: TRANSLATEVIEWLANGS: 'Zobraziť jazykový rozbaľovací zoznam' TRANSLATIONS: Preklady Translatable_Transform: - CheckboxValueNo: 'Nie' - CheckboxValueYes: 'Áno' + CheckboxValueNo: Nie + CheckboxValueYes: Áno OriginalCheckboxLabel: 'Pôvodné: {value}' OriginalFieldLabel: 'Pôvodné {title}' diff --git a/lang/tr.yml b/lang/tr.yml index 8404e72..8003114 100644 --- a/lang/tr.yml +++ b/lang/tr.yml @@ -18,7 +18,7 @@ tr: TRANSLATEVIEWLANGS: 'Mevcut dilleri görebilir' TRANSLATIONS: Çeviriler Translatable_Transform: - CheckboxValueNo: 'Hayır' - CheckboxValueYes: 'Evet' + CheckboxValueNo: Hayır + CheckboxValueYes: Evet OriginalCheckboxLabel: 'Orijinal: {value}' OriginalFieldLabel: 'Orijinal {title}' diff --git a/lang/vi_VN.yml b/lang/vi_VN.yml index 3d518ea..3cd443f 100644 --- a/lang/vi_VN.yml +++ b/lang/vi_VN.yml @@ -1,6 +1,6 @@ vi_VN: CMSMain: - LANGUAGEDROPDOWNLABEL: Ngôn ngữ + LANGUAGEDROPDOWNLABEL: 'Ngôn ngữ' CMSMain_left: GO: Đi Form: @@ -16,7 +16,7 @@ vi_VN: TRANSLATEALLPERMISSION: 'Dịch sang mọi ngôn gữ có th' TRANSLATEPERMISSION: 'Dịch %s' TRANSLATEVIEWLANGS: 'Xem danh sách ngôn ng' - TRANSLATIONS: Dịch thuật + TRANSLATIONS: 'Dịch thuật' Translatable_Transform: OriginalCheckboxLabel: 'Mặc định :{value}' OriginalFieldLabel: 'Mặc định:{title}' diff --git a/lang/zh.yml b/lang/zh.yml index e1bd4c5..f28a37e 100644 --- a/lang/zh.yml +++ b/lang/zh.yml @@ -5,17 +5,17 @@ zh: GO: 前往 Form: LANGAOTHER: '其它语言' - LANGAVAIL: '可用的语言' + LANGAVAIL: 可用的语言 Translatable: ALLCREATED: '所有允许的翻译均已创建。' - CREATE: '创建新的翻译' + CREATE: 创建新的翻译 CREATEBUTTON: 创建 - EXISTING: '现存的翻译' - NEWLANGUAGE: '新语言' + EXISTING: 现存的翻译 + NEWLANGUAGE: 新语言 NOTICENEWPAGE: '创建翻译前,请先保存本页面。' - TRANSLATEALLPERMISSION: '翻译成所有可用语言' + TRANSLATEALLPERMISSION: 翻译成所有可用语言 TRANSLATEPERMISSION: '翻译 %s' - TRANSLATEVIEWLANGS: '查看语言下拉菜单' + TRANSLATEVIEWLANGS: 查看语言下拉菜单 TRANSLATIONS: 翻译 Translatable_Transform: OriginalCheckboxLabel: '原文:{value}' From e302c4ec46f107d309eab443087786709d300bd3 Mon Sep 17 00:00:00 2001 From: UndefinedOffset Date: Tue, 31 Jan 2017 15:49:54 -0400 Subject: [PATCH 08/25] BUGFIX: Fixed ambiguous column crash caused when publishing a versioned object if the query is joined against another table --- code/model/Translatable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index 53c5cc0..8f04b2b 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -932,7 +932,7 @@ class Translatable extends DataExtension implements PermissionProvider { $fresh = Versioned::get_one_by_stage( $baseDataClass, Versioned::current_stage(), - '"ID" = ' . $this->owner->ID, + '"'.$baseDataClass.'"."ID" = ' . $this->owner->ID, null ); if ($fresh) { From 81eaa621e771d90aaf084a76302fcad457c3f991 Mon Sep 17 00:00:00 2001 From: Brett Tasker Date: Thu, 9 Feb 2017 11:28:52 +1300 Subject: [PATCH 09/25] Update translations --- lang/ar.yml | 2 +- lang/fa_IR.yml | 2 +- lang/ja.yml | 6 +++--- lang/nl_NL.yml | 20 ++++++++++++++++++++ lang/zh.yml | 6 +++--- 5 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 lang/nl_NL.yml diff --git a/lang/ar.yml b/lang/ar.yml index 3c3dc5e..0005f3b 100644 --- a/lang/ar.yml +++ b/lang/ar.yml @@ -16,7 +16,7 @@ ar: TRANSLATEALLPERMISSION: 'ترجم إلى جميع اللغات المتاحة' TRANSLATEPERMISSION: 'ترجم %s' TRANSLATEVIEWLANGS: 'أعرض قائمة اللغات' - TRANSLATIONS: 'تراجم' + TRANSLATIONS: تراجم Translatable_Transform: OriginalCheckboxLabel: 'الأصلية: {قيمة}' OriginalFieldLabel: 'الأصلي {عنوان}' diff --git a/lang/fa_IR.yml b/lang/fa_IR.yml index fe26b0a..8df1b1b 100644 --- a/lang/fa_IR.yml +++ b/lang/fa_IR.yml @@ -16,7 +16,7 @@ fa_IR: TRANSLATEALLPERMISSION: 'ترجمه به تمام زبان های موجود' TRANSLATEPERMISSION: 'ترجمه %s' TRANSLATEVIEWLANGS: 'نمایش منوی زبان' - TRANSLATIONS: 'ترجمه' + TRANSLATIONS: ترجمه Translatable_Transform: CheckboxValueNo: خیر CheckboxValueYes: بله diff --git a/lang/ja.yml b/lang/ja.yml index b6fa8a4..3a722e2 100644 --- a/lang/ja.yml +++ b/lang/ja.yml @@ -7,13 +7,13 @@ ja: LANGAOTHER: 他の言語 LANGAVAIL: 利用可能な言語 Translatable: - ALLCREATED: '許可された翻訳全てが作成されました。' + ALLCREATED: 許可された翻訳全てが作成されました。 CREATE: 新しい翻訳を行う CREATEBUTTON: 作成 EXISTING: 現存中の翻訳 NEWLANGUAGE: 新しい言語 - NOTICENEWPAGE: '翻訳を作成する前にこのページを保存してください' - TRANSLATEALLPERMISSION: '全ての利用可能言語に翻訳' + NOTICENEWPAGE: 翻訳を作成する前にこのページを保存してください + TRANSLATEALLPERMISSION: 全ての利用可能言語に翻訳 TRANSLATEPERMISSION: '%sを翻訳' TRANSLATEVIEWLANGS: 言語ドロップダウンを表示 TRANSLATIONS: 翻訳 diff --git a/lang/nl_NL.yml b/lang/nl_NL.yml new file mode 100644 index 0000000..9a39393 --- /dev/null +++ b/lang/nl_NL.yml @@ -0,0 +1,20 @@ +nl_NL: + CMSMain: + LANGUAGEDROPDOWNLABEL: Taal + CMSMain_left: + GO: Gaan + Form: + LANGAOTHER: 'Andere talen' + LANGAVAIL: 'Beschikbare talen' + Translatable: + ALLCREATED: 'Alle toegestane vertalingen werden gecreëerd.' + CREATE: 'Nieuwe vertaling creëren' + CREATEBUTTON: Creëren + EXISTING: 'Bestaande vertalingen' + NEWLANGUAGE: 'Nieuwe taal' + TRANSLATEALLPERMISSION: 'Vertaal in alle beschikbare talen' + TRANSLATEPERMISSION: 'Vertaal %s' + TRANSLATIONS: Vertalingen + Translatable_Transform: + CheckboxValueNo: Neen + CheckboxValueYes: Ja diff --git a/lang/zh.yml b/lang/zh.yml index f28a37e..a08449b 100644 --- a/lang/zh.yml +++ b/lang/zh.yml @@ -4,15 +4,15 @@ zh: CMSMain_left: GO: 前往 Form: - LANGAOTHER: '其它语言' + LANGAOTHER: 其它语言 LANGAVAIL: 可用的语言 Translatable: - ALLCREATED: '所有允许的翻译均已创建。' + ALLCREATED: 所有允许的翻译均已创建。 CREATE: 创建新的翻译 CREATEBUTTON: 创建 EXISTING: 现存的翻译 NEWLANGUAGE: 新语言 - NOTICENEWPAGE: '创建翻译前,请先保存本页面。' + NOTICENEWPAGE: 创建翻译前,请先保存本页面。 TRANSLATEALLPERMISSION: 翻译成所有可用语言 TRANSLATEPERMISSION: '翻译 %s' TRANSLATEVIEWLANGS: 查看语言下拉菜单 From c906156c93e43285f50c9afe1a1f1b682e0ebfcb Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Mon, 13 Feb 2017 22:16:47 +1300 Subject: [PATCH 10/25] Only test supported releases and PHP versions --- .travis.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index bb1aba1..d1c7b33 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,19 +3,17 @@ language: php php: - - 5.3 + - 5.6 env: - DB=MYSQL CORE_RELEASE=3 matrix: include: - - php: 5.4 - env: DB=PGSQL CORE_RELEASE=3 - - php: 5.5 - env: DB=MYSQL CORE_RELEASE=3.2 - php: 5.6 - env: DB=MYSQL CORE_RELEASE=3.2 + env: DB=PGSQL CORE_RELEASE=3 + - php: 5.6 + env: DB=MYSQL CORE_RELEASE=3 before_script: - pear -q install --onlyreqdeps pear/PHP_CodeSniffer From 044971c6cfbd9b7c448c9eab73ca3b9b0de0bf8f Mon Sep 17 00:00:00 2001 From: Franco Springveldt Date: Fri, 25 Aug 2017 16:44:47 +1200 Subject: [PATCH 11/25] Update translations --- lang/ar.yml | 2 +- lang/fa_IR.yml | 2 +- lang/ja.yml | 6 +++--- lang/sv.yml | 2 ++ lang/zh.yml | 6 +++--- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lang/ar.yml b/lang/ar.yml index 0005f3b..3c3dc5e 100644 --- a/lang/ar.yml +++ b/lang/ar.yml @@ -16,7 +16,7 @@ ar: TRANSLATEALLPERMISSION: 'ترجم إلى جميع اللغات المتاحة' TRANSLATEPERMISSION: 'ترجم %s' TRANSLATEVIEWLANGS: 'أعرض قائمة اللغات' - TRANSLATIONS: تراجم + TRANSLATIONS: 'تراجم' Translatable_Transform: OriginalCheckboxLabel: 'الأصلية: {قيمة}' OriginalFieldLabel: 'الأصلي {عنوان}' diff --git a/lang/fa_IR.yml b/lang/fa_IR.yml index 8df1b1b..fe26b0a 100644 --- a/lang/fa_IR.yml +++ b/lang/fa_IR.yml @@ -16,7 +16,7 @@ fa_IR: TRANSLATEALLPERMISSION: 'ترجمه به تمام زبان های موجود' TRANSLATEPERMISSION: 'ترجمه %s' TRANSLATEVIEWLANGS: 'نمایش منوی زبان' - TRANSLATIONS: ترجمه + TRANSLATIONS: 'ترجمه' Translatable_Transform: CheckboxValueNo: خیر CheckboxValueYes: بله diff --git a/lang/ja.yml b/lang/ja.yml index 3a722e2..b6fa8a4 100644 --- a/lang/ja.yml +++ b/lang/ja.yml @@ -7,13 +7,13 @@ ja: LANGAOTHER: 他の言語 LANGAVAIL: 利用可能な言語 Translatable: - ALLCREATED: 許可された翻訳全てが作成されました。 + ALLCREATED: '許可された翻訳全てが作成されました。' CREATE: 新しい翻訳を行う CREATEBUTTON: 作成 EXISTING: 現存中の翻訳 NEWLANGUAGE: 新しい言語 - NOTICENEWPAGE: 翻訳を作成する前にこのページを保存してください - TRANSLATEALLPERMISSION: 全ての利用可能言語に翻訳 + NOTICENEWPAGE: '翻訳を作成する前にこのページを保存してください' + TRANSLATEALLPERMISSION: '全ての利用可能言語に翻訳' TRANSLATEPERMISSION: '%sを翻訳' TRANSLATEVIEWLANGS: 言語ドロップダウンを表示 TRANSLATIONS: 翻訳 diff --git a/lang/sv.yml b/lang/sv.yml index 6abef66..98424ef 100644 --- a/lang/sv.yml +++ b/lang/sv.yml @@ -18,5 +18,7 @@ sv: TRANSLATEVIEWLANGS: 'Visa språk listan' TRANSLATIONS: Översättningar Translatable_Transform: + CheckboxValueNo: Nej + CheckboxValueYes: Ja OriginalCheckboxLabel: 'Original: {value}' OriginalFieldLabel: 'Original {title}' diff --git a/lang/zh.yml b/lang/zh.yml index a08449b..f28a37e 100644 --- a/lang/zh.yml +++ b/lang/zh.yml @@ -4,15 +4,15 @@ zh: CMSMain_left: GO: 前往 Form: - LANGAOTHER: 其它语言 + LANGAOTHER: '其它语言' LANGAVAIL: 可用的语言 Translatable: - ALLCREATED: 所有允许的翻译均已创建。 + ALLCREATED: '所有允许的翻译均已创建。' CREATE: 创建新的翻译 CREATEBUTTON: 创建 EXISTING: 现存的翻译 NEWLANGUAGE: 新语言 - NOTICENEWPAGE: 创建翻译前,请先保存本页面。 + NOTICENEWPAGE: '创建翻译前,请先保存本页面。' TRANSLATEALLPERMISSION: 翻译成所有可用语言 TRANSLATEPERMISSION: '翻译 %s' TRANSLATEVIEWLANGS: 查看语言下拉菜单 From 4cfae43fad70a03ee72d14610fee6131c31d262b Mon Sep 17 00:00:00 2001 From: Thaissa Mendes Date: Fri, 9 Feb 2018 09:49:03 -0200 Subject: [PATCH 12/25] When using LanguageDropdownField on searchable_fields, it doesn't get instantiated with title parameter - and as DropdownField class doesn't require it, we should make it optional --- code/forms/LanguageDropdownField.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/forms/LanguageDropdownField.php b/code/forms/LanguageDropdownField.php index d81a1b8..41eb316 100755 --- a/code/forms/LanguageDropdownField.php +++ b/code/forms/LanguageDropdownField.php @@ -21,7 +21,7 @@ class LanguageDropdownField extends GroupedDropdownField { * @param string $list Indicates the source language list. * Can be either Common-English, Common-Native, Locale-English, Locale-Native */ - function __construct($name, $title, $excludeLocales = array(), + function __construct($name, $title=null, $excludeLocales = array(), $translatingClass = 'SiteTree', $list = 'Common-English', $instance = null ) { $usedLocalesWithTitle = Translatable::get_existing_content_languages($translatingClass); From 99dd1012b62adc46748aa14e18c3d21c5a80bad9 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Thu, 22 Feb 2018 09:25:13 +1300 Subject: [PATCH 13/25] Remove obsolete branch-alias --- composer.json | 83 +++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/composer.json b/composer.json index 8654384..787683e 100644 --- a/composer.json +++ b/composer.json @@ -1,44 +1,41 @@ { - "name": "silverstripe/translatable", - "type": "silverstripe-module", - "description": "Allows translation of DataObject and SiteTree records into multiple languages ", - "keywords": [ - "silverstripe", - "cms", - "i18n", - "localization", - "globalization" - ], - "license": "BSD-3-Clause", - "homepage": "https://github.com/silverstripe/silverstripe-translatable/", - "authors": [ - { - "name": "Ingo Schommer", - "homepage": "http://chillu.com", - "email": "ingo@silverstripe.com" - } - ], - "require": { - "php": ">=5.3.2", - "silverstripe/framework": "~3.2", - "silverstripe/cms": "~3.2" - }, - "require-dev": { - "silverstripe/postgresql": "*", - "silverstripe/sqlite3": "*", - "silverstripe/mssql": "*", - "phpunit/PHPUnit": "~3.7@stable" - }, - "extra": { - "screenshots": [ - "http://www.silverstripe.org/assets/Uploads/translatable4-small.png" - ], - "branch-alias": { - "2.x-dev": "2.3.x-dev" - } - }, - "support": { - "issues": "https://github.com/silverstripe/silverstripe-translatable/issues?state=open" - }, - "minimum-stability": "dev" -} + "name": "silverstripe/translatable", + "type": "silverstripe-module", + "description": "Allows translation of DataObject and SiteTree records into multiple languages ", + "keywords": [ + "silverstripe", + "cms", + "i18n", + "localization", + "globalization" + ], + "license": "BSD-3-Clause", + "homepage": "https://github.com/silverstripe/silverstripe-translatable/", + "authors": [ + { + "name": "Ingo Schommer", + "homepage": "http://chillu.com", + "email": "ingo@silverstripe.com" + } + ], + "require": { + "php": ">=5.3.2", + "silverstripe/framework": "~3.2", + "silverstripe/cms": "~3.2" + }, + "require-dev": { + "silverstripe/postgresql": "*", + "silverstripe/sqlite3": "*", + "silverstripe/mssql": "*", + "phpunit/PHPUnit": "~3.7@stable" + }, + "extra": { + "screenshots": [ + "http://www.silverstripe.org/assets/Uploads/translatable4-small.png" + ] + }, + "support": { + "issues": "https://github.com/silverstripe/silverstripe-translatable/issues?state=open" + }, + "minimum-stability": "dev" +} \ No newline at end of file From 2c81a62b00d1504533cef268820c2732ed9073b9 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Thu, 22 Feb 2018 09:28:36 +1300 Subject: [PATCH 14/25] Update translations --- lang/ar.yml | 2 +- lang/bs.yml | 4 ++-- lang/cs.yml | 4 ++-- lang/cs_CZ.yml | 4 ++-- lang/de.yml | 4 ++-- lang/eo.yml | 4 ++-- lang/et_EE.yml | 4 ++-- lang/fa_IR.yml | 6 +++--- lang/fi_FI.yml | 4 ++-- lang/hr.yml | 24 ++++++++++++++++++++++++ lang/it.yml | 1 + lang/ja.yml | 12 ++++++------ lang/mi.yml | 2 +- lang/nl_NL.yml | 20 ++++++++++++++++++++ lang/ru.yml | 24 ++++++++++++++++++++++++ lang/sk.yml | 4 ++-- lang/sk_SK.yml | 4 ++-- lang/sv.yml | 2 ++ lang/tr.yml | 4 ++-- lang/vi_VN.yml | 4 ++-- lang/zh.yml | 12 ++++++------ 21 files changed, 110 insertions(+), 39 deletions(-) create mode 100644 lang/hr.yml create mode 100644 lang/nl_NL.yml create mode 100644 lang/ru.yml diff --git a/lang/ar.yml b/lang/ar.yml index 0005f3b..3c3dc5e 100644 --- a/lang/ar.yml +++ b/lang/ar.yml @@ -16,7 +16,7 @@ ar: TRANSLATEALLPERMISSION: 'ترجم إلى جميع اللغات المتاحة' TRANSLATEPERMISSION: 'ترجم %s' TRANSLATEVIEWLANGS: 'أعرض قائمة اللغات' - TRANSLATIONS: تراجم + TRANSLATIONS: 'تراجم' Translatable_Transform: OriginalCheckboxLabel: 'الأصلية: {قيمة}' OriginalFieldLabel: 'الأصلي {عنوان}' diff --git a/lang/bs.yml b/lang/bs.yml index 39c0fcf..0e36847 100644 --- a/lang/bs.yml +++ b/lang/bs.yml @@ -18,7 +18,7 @@ bs: TRANSLATEVIEWLANGS: 'Padajući meni jezika' TRANSLATIONS: Prevodi Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Da' + CheckboxValueNo: Ne + CheckboxValueYes: Da OriginalCheckboxLabel: 'Original: {value}' OriginalFieldLabel: 'Original: {title}' diff --git a/lang/cs.yml b/lang/cs.yml index 2a58ad6..7729b97 100644 --- a/lang/cs.yml +++ b/lang/cs.yml @@ -18,7 +18,7 @@ cs: TRANSLATEVIEWLANGS: 'Zobrazit seznam jazyků' TRANSLATIONS: Překlady Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Ano' + CheckboxValueNo: Ne + CheckboxValueYes: Ano OriginalCheckboxLabel: 'Původní: {value}' OriginalFieldLabel: 'Původní {title}' diff --git a/lang/cs_CZ.yml b/lang/cs_CZ.yml index 97edfe2..e297b3f 100644 --- a/lang/cs_CZ.yml +++ b/lang/cs_CZ.yml @@ -18,7 +18,7 @@ cs_CZ: TRANSLATEVIEWLANGS: 'Zobrazit jazykový rozbalovací seznam' TRANSLATIONS: Překlady Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Ano' + CheckboxValueNo: Ne + CheckboxValueYes: Ano OriginalCheckboxLabel: 'Původní: {value}' OriginalFieldLabel: 'Původní {title}' diff --git a/lang/de.yml b/lang/de.yml index 5893e5b..5b9c6fe 100644 --- a/lang/de.yml +++ b/lang/de.yml @@ -18,7 +18,7 @@ de: TRANSLATEVIEWLANGS: 'Kann die verfügbaren Sprachen sehen' TRANSLATIONS: Übersetzungen Translatable_Transform: - CheckboxValueNo: 'Nein' - CheckboxValueYes: 'Ja' + CheckboxValueNo: Nein + CheckboxValueYes: Ja OriginalCheckboxLabel: 'Original: {value}' OriginalFieldLabel: 'Original {title}' diff --git a/lang/eo.yml b/lang/eo.yml index c5e586f..bde9c5d 100644 --- a/lang/eo.yml +++ b/lang/eo.yml @@ -18,7 +18,7 @@ eo: TRANSLATEVIEWLANGS: 'Vidigi lingvan falliston' TRANSLATIONS: Tradukoj Translatable_Transform: - CheckboxValueNo: 'Ne' - CheckboxValueYes: 'Jes' + CheckboxValueNo: Ne + CheckboxValueYes: Jes OriginalCheckboxLabel: 'Origina: {value}' OriginalFieldLabel: 'Origina: {title}' diff --git a/lang/et_EE.yml b/lang/et_EE.yml index 78429e1..ccfcbd5 100644 --- a/lang/et_EE.yml +++ b/lang/et_EE.yml @@ -16,5 +16,5 @@ et_EE: TRANSLATEPERMISSION: 'Tõlgi: %s' TRANSLATIONS: Tõlked Translatable_Transform: - CheckboxValueNo: 'Ei' - CheckboxValueYes: 'Jah' + CheckboxValueNo: Ei + CheckboxValueYes: Jah diff --git a/lang/fa_IR.yml b/lang/fa_IR.yml index cff7845..fe26b0a 100644 --- a/lang/fa_IR.yml +++ b/lang/fa_IR.yml @@ -16,9 +16,9 @@ fa_IR: TRANSLATEALLPERMISSION: 'ترجمه به تمام زبان های موجود' TRANSLATEPERMISSION: 'ترجمه %s' TRANSLATEVIEWLANGS: 'نمایش منوی زبان' - TRANSLATIONS: ترجمه + TRANSLATIONS: 'ترجمه' Translatable_Transform: - CheckboxValueNo: 'خیر' - CheckboxValueYes: 'بله' + CheckboxValueNo: خیر + CheckboxValueYes: بله OriginalCheckboxLabel: 'اصل: {value}' OriginalFieldLabel: 'اصل {title}' diff --git a/lang/fi_FI.yml b/lang/fi_FI.yml index 66dc4e3..ec9df01 100644 --- a/lang/fi_FI.yml +++ b/lang/fi_FI.yml @@ -18,7 +18,7 @@ fi_FI: TRANSLATEVIEWLANGS: 'Näytä kielet' TRANSLATIONS: Käännökset Translatable_Transform: - CheckboxValueNo: 'Ei' - CheckboxValueYes: 'Kyllä' + CheckboxValueNo: Ei + CheckboxValueYes: Kyllä OriginalCheckboxLabel: 'Alkuperäinen: {value}' OriginalFieldLabel: 'Alkuperäinen {title}' diff --git a/lang/hr.yml b/lang/hr.yml new file mode 100644 index 0000000..3a9a8ea --- /dev/null +++ b/lang/hr.yml @@ -0,0 +1,24 @@ +hr: + CMSMain: + LANGUAGEDROPDOWNLABEL: Jezik + CMSMain_left: + GO: Kreni + Form: + LANGAOTHER: 'Ostali jezici' + LANGAVAIL: 'Dostupni jezici' + Translatable: + ALLCREATED: 'Svi dozvoljeni prijevodi su kreirani.' + CREATE: 'Kreiraj novi prijevod' + CREATEBUTTON: Kreiraj + EXISTING: 'Postojeći prijevodi' + NEWLANGUAGE: 'Novi jezik' + NOTICENEWPAGE: 'Molimo spremite ovu stranicu prije kreiranja prijevoda' + TRANSLATEALLPERMISSION: 'Prevedi u sve dostupne jezike' + TRANSLATEPERMISSION: 'Prevedi %s' + TRANSLATEVIEWLANGS: 'Pogledaj padajući izbornik jezika' + TRANSLATIONS: Prijevodi + Translatable_Transform: + CheckboxValueNo: Ne + CheckboxValueYes: Da + OriginalCheckboxLabel: 'Original: {value}' + OriginalFieldLabel: 'Original {title}' diff --git a/lang/it.yml b/lang/it.yml index 80d985d..741665a 100644 --- a/lang/it.yml +++ b/lang/it.yml @@ -19,5 +19,6 @@ it: TRANSLATIONS: Traduzioni Translatable_Transform: CheckboxValueNo: 'No' + CheckboxValueYes: Si OriginalCheckboxLabel: 'Originale: {value}' OriginalFieldLabel: 'Originale {title}' diff --git a/lang/ja.yml b/lang/ja.yml index e779c8b..b6fa8a4 100644 --- a/lang/ja.yml +++ b/lang/ja.yml @@ -4,18 +4,18 @@ ja: CMSMain_left: GO: 実行 Form: - LANGAOTHER: '他の言語' - LANGAVAIL: '利用可能な言語' + LANGAOTHER: 他の言語 + LANGAVAIL: 利用可能な言語 Translatable: ALLCREATED: '許可された翻訳全てが作成されました。' - CREATE: '新しい翻訳を行う' + CREATE: 新しい翻訳を行う CREATEBUTTON: 作成 - EXISTING: '現存中の翻訳' - NEWLANGUAGE: '新しい言語' + EXISTING: 現存中の翻訳 + NEWLANGUAGE: 新しい言語 NOTICENEWPAGE: '翻訳を作成する前にこのページを保存してください' TRANSLATEALLPERMISSION: '全ての利用可能言語に翻訳' TRANSLATEPERMISSION: '%sを翻訳' - TRANSLATEVIEWLANGS: '言語ドロップダウンを表示' + TRANSLATEVIEWLANGS: 言語ドロップダウンを表示 TRANSLATIONS: 翻訳 Translatable_Transform: OriginalCheckboxLabel: 'オリジナル: {value}' diff --git a/lang/mi.yml b/lang/mi.yml index 534309c..c1cb57a 100644 --- a/lang/mi.yml +++ b/lang/mi.yml @@ -16,7 +16,7 @@ mi: TRANSLATEALLPERMISSION: 'Whakamāoritia ki ngā reo katoa e wātea ana' TRANSLATEPERMISSION: 'Whakamāoritia a %s' TRANSLATEVIEWLANGS: 'Tirohia te takaiho reo' - TRANSLATIONS: Ngā whakamāoritanga + TRANSLATIONS: 'Ngā whakamāoritanga' Translatable_Transform: OriginalCheckboxLabel: 'Taketake: {value}' OriginalFieldLabel: '{title} taketake' diff --git a/lang/nl_NL.yml b/lang/nl_NL.yml new file mode 100644 index 0000000..9a39393 --- /dev/null +++ b/lang/nl_NL.yml @@ -0,0 +1,20 @@ +nl_NL: + CMSMain: + LANGUAGEDROPDOWNLABEL: Taal + CMSMain_left: + GO: Gaan + Form: + LANGAOTHER: 'Andere talen' + LANGAVAIL: 'Beschikbare talen' + Translatable: + ALLCREATED: 'Alle toegestane vertalingen werden gecreëerd.' + CREATE: 'Nieuwe vertaling creëren' + CREATEBUTTON: Creëren + EXISTING: 'Bestaande vertalingen' + NEWLANGUAGE: 'Nieuwe taal' + TRANSLATEALLPERMISSION: 'Vertaal in alle beschikbare talen' + TRANSLATEPERMISSION: 'Vertaal %s' + TRANSLATIONS: Vertalingen + Translatable_Transform: + CheckboxValueNo: Neen + CheckboxValueYes: Ja diff --git a/lang/ru.yml b/lang/ru.yml new file mode 100644 index 0000000..064bfbb --- /dev/null +++ b/lang/ru.yml @@ -0,0 +1,24 @@ +ru: + CMSMain: + LANGUAGEDROPDOWNLABEL: Язык + CMSMain_left: + GO: Выполн. + Form: + LANGAOTHER: 'Другие языки' + LANGAVAIL: 'Доступные языки' + Translatable: + ALLCREATED: 'Все переводы на доступные языки созданы.' + CREATE: 'Создать новый перевод' + CREATEBUTTON: Создать + EXISTING: 'Существующие переводы' + NEWLANGUAGE: 'Добавить язык' + NOTICENEWPAGE: 'Пожалуйста, сохраните данную страницу прежде чем создавать перевод' + TRANSLATEALLPERMISSION: 'Перевести на все доступные языки' + TRANSLATEPERMISSION: 'Перевести %s' + TRANSLATEVIEWLANGS: 'Отобразить языковое выпадающее меню' + TRANSLATIONS: Переводы + Translatable_Transform: + CheckboxValueNo: Нет + CheckboxValueYes: Да + OriginalCheckboxLabel: 'Оригинальное значение: {value}' + OriginalFieldLabel: 'Оригинальное {title}' diff --git a/lang/sk.yml b/lang/sk.yml index ad8edd3..0b12b58 100644 --- a/lang/sk.yml +++ b/lang/sk.yml @@ -18,7 +18,7 @@ sk: TRANSLATEVIEWLANGS: 'Zobraziť zoznam jazykov' TRANSLATIONS: Preklady Translatable_Transform: - CheckboxValueNo: 'Nie' - CheckboxValueYes: 'Áno' + CheckboxValueNo: Nie + CheckboxValueYes: Áno OriginalCheckboxLabel: 'Pôvodné: {value}' OriginalFieldLabel: 'Pôvodné {title}' diff --git a/lang/sk_SK.yml b/lang/sk_SK.yml index 2933547..51b4a51 100644 --- a/lang/sk_SK.yml +++ b/lang/sk_SK.yml @@ -18,7 +18,7 @@ sk_SK: TRANSLATEVIEWLANGS: 'Zobraziť jazykový rozbaľovací zoznam' TRANSLATIONS: Preklady Translatable_Transform: - CheckboxValueNo: 'Nie' - CheckboxValueYes: 'Áno' + CheckboxValueNo: Nie + CheckboxValueYes: Áno OriginalCheckboxLabel: 'Pôvodné: {value}' OriginalFieldLabel: 'Pôvodné {title}' diff --git a/lang/sv.yml b/lang/sv.yml index 6abef66..98424ef 100644 --- a/lang/sv.yml +++ b/lang/sv.yml @@ -18,5 +18,7 @@ sv: TRANSLATEVIEWLANGS: 'Visa språk listan' TRANSLATIONS: Översättningar Translatable_Transform: + CheckboxValueNo: Nej + CheckboxValueYes: Ja OriginalCheckboxLabel: 'Original: {value}' OriginalFieldLabel: 'Original {title}' diff --git a/lang/tr.yml b/lang/tr.yml index 8404e72..8003114 100644 --- a/lang/tr.yml +++ b/lang/tr.yml @@ -18,7 +18,7 @@ tr: TRANSLATEVIEWLANGS: 'Mevcut dilleri görebilir' TRANSLATIONS: Çeviriler Translatable_Transform: - CheckboxValueNo: 'Hayır' - CheckboxValueYes: 'Evet' + CheckboxValueNo: Hayır + CheckboxValueYes: Evet OriginalCheckboxLabel: 'Orijinal: {value}' OriginalFieldLabel: 'Orijinal {title}' diff --git a/lang/vi_VN.yml b/lang/vi_VN.yml index 3d518ea..3cd443f 100644 --- a/lang/vi_VN.yml +++ b/lang/vi_VN.yml @@ -1,6 +1,6 @@ vi_VN: CMSMain: - LANGUAGEDROPDOWNLABEL: Ngôn ngữ + LANGUAGEDROPDOWNLABEL: 'Ngôn ngữ' CMSMain_left: GO: Đi Form: @@ -16,7 +16,7 @@ vi_VN: TRANSLATEALLPERMISSION: 'Dịch sang mọi ngôn gữ có th' TRANSLATEPERMISSION: 'Dịch %s' TRANSLATEVIEWLANGS: 'Xem danh sách ngôn ng' - TRANSLATIONS: Dịch thuật + TRANSLATIONS: 'Dịch thuật' Translatable_Transform: OriginalCheckboxLabel: 'Mặc định :{value}' OriginalFieldLabel: 'Mặc định:{title}' diff --git a/lang/zh.yml b/lang/zh.yml index e1bd4c5..f28a37e 100644 --- a/lang/zh.yml +++ b/lang/zh.yml @@ -5,17 +5,17 @@ zh: GO: 前往 Form: LANGAOTHER: '其它语言' - LANGAVAIL: '可用的语言' + LANGAVAIL: 可用的语言 Translatable: ALLCREATED: '所有允许的翻译均已创建。' - CREATE: '创建新的翻译' + CREATE: 创建新的翻译 CREATEBUTTON: 创建 - EXISTING: '现存的翻译' - NEWLANGUAGE: '新语言' + EXISTING: 现存的翻译 + NEWLANGUAGE: 新语言 NOTICENEWPAGE: '创建翻译前,请先保存本页面。' - TRANSLATEALLPERMISSION: '翻译成所有可用语言' + TRANSLATEALLPERMISSION: 翻译成所有可用语言 TRANSLATEPERMISSION: '翻译 %s' - TRANSLATEVIEWLANGS: '查看语言下拉菜单' + TRANSLATEVIEWLANGS: 查看语言下拉菜单 TRANSLATIONS: 翻译 Translatable_Transform: OriginalCheckboxLabel: '原文:{value}' From 60b8ba9cdc3cdba43f9ec2155c58685a6e8dfb10 Mon Sep 17 00:00:00 2001 From: JorisDebonnet Date: Tue, 11 Nov 2014 16:15:09 +0100 Subject: [PATCH 15/25] Avoid flagging pages as "modified" I moved the internals of `writeToStage` in here, in order to be able to use `writeWithoutVersion`. --- code/model/Translatable.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index 8f04b2b..e98b744 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -743,7 +743,12 @@ class Translatable extends DataExtension implements PermissionProvider { if(!$obj || $obj->ObsoleteClassName) continue; $obj->Locale = Translatable::default_locale(); - $obj->writeToStage($stage); + + $oldMode = Versioned::get_reading_mode(); + Versioned::reading_stage($stage); + $obj->writeWithoutVersion(); + Versioned::set_reading_mode($oldMode); + $obj->addTranslationGroup($obj->ID); $obj->destroy(); unset($obj); From bea626eba3b641872e63fcba548dcc407599c218 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Mon, 11 Jun 2018 15:08:34 +1200 Subject: [PATCH 16/25] BUG Fix invalid stage being specified for queried records --- code/model/Translatable.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index 8f04b2b..558783e 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -1295,20 +1295,16 @@ class Translatable extends DataExtension implements PermissionProvider { // exclude the language of the current owner $filter .= sprintf(' AND "%s"."Locale" != \'%s\'', $baseDataClass, $this->owner->Locale); } - $currentStage = Versioned::current_stage(); $joinOnClause = sprintf('"%s_translationgroups"."OriginalID" = "%s"."ID"', $baseDataClass, $baseDataClass); - if($this->owner->hasExtension("Versioned")) { - if($stage) Versioned::reading_stage($stage); + if($this->owner->hasExtension("Versioned") && $stage) { $translations = Versioned::get_by_stage( $baseDataClass, - Versioned::current_stage(), + $stage, $filter, null )->leftJoin("{$baseDataClass}_translationgroups", $joinOnClause); - if($stage) Versioned::reading_stage($currentStage); } else { - $class = $this->owner->class; - $translations = $baseDataClass::get() + $translations = DataObject::get($baseDataClass) ->where($filter) ->leftJoin("{$baseDataClass}_translationgroups", $joinOnClause); } From 6a6bc6d677e079064bed77a084c54adb240e2c98 Mon Sep 17 00:00:00 2001 From: Guy Date: Tue, 12 Jun 2018 15:16:33 +1200 Subject: [PATCH 17/25] BUG Fix invalid stage being specified for queried records --- code/model/Translatable.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index 8f04b2b..4ab5812 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -928,13 +928,7 @@ class Translatable extends DataExtension implements PermissionProvider { // This is to prevent the overhead of writing all translations when // the class didn't actually change. $baseDataClass = ClassInfo::baseDataClass($this->owner->class); - $currentStage = Versioned::current_stage(); - $fresh = Versioned::get_one_by_stage( - $baseDataClass, - Versioned::current_stage(), - '"'.$baseDataClass.'"."ID" = ' . $this->owner->ID, - null - ); + $fresh = DataObject::get($baseDataClass)->byId($this->owner->ID); if ($fresh) { $changed = $changedFields['ClassName']['after'] != $fresh->ClassName; } From ec34959baa9c15455993d73d93c61f17fbb62241 Mon Sep 17 00:00:00 2001 From: Dylan Wagstaff Date: Fri, 15 Jun 2018 17:50:48 +1200 Subject: [PATCH 18/25] Add supported module badge to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index eae8037..c70a30b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Translatable module for SilverStripe CMS # [![Build Status](https://secure.travis-ci.org/silverstripe/silverstripe-translatable.png?branch=2.1)](http://travis-ci.org/silverstripe/silverstripe-translatable) +[![SilverStripe supported module](https://img.shields.io/badge/silverstripe-supported-0071C4.svg)](https://www.silverstripe.org/software/addons/silverstripe-commercially-supported-module-list/) ## Introduction ## From 66593d8bb31e547e87b7ed632a92956354de11ae Mon Sep 17 00:00:00 2001 From: wernerkrauss Date: Tue, 28 Aug 2018 07:21:28 +0200 Subject: [PATCH 19/25] Updating links to transifex and docs Doc link was broken --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c70a30b..01bf372 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ third party translation interface, transifex.com. Newly added strings will be periodically uploaded there for translation, and any new translations will be merged back to the project source code. -Please use [https://www.transifex.com/projects/p/silverstripe-translatable/](https://www.transifex.com/projects/p/silverstripe-translatable/) to contribute translations, +Please use [https://www.transifex.com/silverstripe/silverstripe-translatable/](https://www.transifex.com/projects/p/silverstripe-translatable/) to contribute translations, rather than sending pull requests with YAML files. -See the ["i18n" topic](http://doc.silverstripe.org/framework/en/trunk/topics/i18n) on doc.silverstripe.org for more details. +See the ["i18n" topic](https://docs.silverstripe.org/en/3/developer_guides/i18n/) on doc.silverstripe.org for more details. From c09866f5861ee7ef8caa3446a13bfab03a678dee Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Fri, 5 Apr 2019 14:22:05 +1300 Subject: [PATCH 20/25] FIX Translatable now handles multibute URLs when they are enabled --- code/model/Translatable.php | 5 +++++ tests/unit/TranslatableTest.php | 27 ++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/code/model/Translatable.php b/code/model/Translatable.php index 85dd883..25f7e6d 100755 --- a/code/model/Translatable.php +++ b/code/model/Translatable.php @@ -1473,6 +1473,11 @@ class Translatable extends DataExtension implements PermissionProvider { $urlSegment = $newTranslation->URLSegment; } + if (URLSegmentFilter::singleton()->getAllowMultibyte()) { + // Decode the URL segment, it will be re-encoded again on write + $urlSegment = rawurldecode($urlSegment); + } + // Only make segment unique if it should be enforced if(Config::inst()->get('Translatable', 'enforce_global_unique_urls')) { $newTranslation->URLSegment = $urlSegment . '-' . i18n::convert_rfc1766($locale); diff --git a/tests/unit/TranslatableTest.php b/tests/unit/TranslatableTest.php index 5f990de..e72ee31 100755 --- a/tests/unit/TranslatableTest.php +++ b/tests/unit/TranslatableTest.php @@ -459,7 +459,32 @@ class TranslatableTest extends FunctionalTest { Config::inst()->update('Translatable', 'enforce_global_unique_urls', true); Translatable::set_current_locale('en_US'); } - + + public function testMultibyteUrlsWorkWhenTranslated() + { + Config::inst()->update('URLSegmentFilter', 'default_allow_multibyte', true); + + $page = new Page(); + $page->URLSegment = 'schön-döner'; + $page->Content = 'Kebabs in Berlin are amazing.'; + $page->write(); + $page->doPublish(); + + $translatedPage = $page->createTranslation('de_DE'); + $translatedPage->Content = 'Döner in Berlin sind unglaublich'; + $translatedPage->doPublish(); + $this->assertSame('schön-döner-de-de', rawurldecode($translatedPage->URLSegment)); + + // Test pinging the page on the frontend + $pageResult = $this->get('schön-döner'); + $this->assertEquals(200, $pageResult->getStatusCode()); + $this->assertContains('Kebabs in Berlin', (string) $pageResult->getBody()); + + $translatedPageResult = $this->get('schön-döner-de-de'); + $this->assertEquals(200, $translatedPageResult->getStatusCode()); + $this->assertContains('Döner in Berlin', (string) $translatedPageResult->getBody()); + } + function testUpdateCMSFieldsOnSiteTree() { $pageOrigLang = new TranslatableTest_Page(); $pageOrigLang->write(); From 78694caff3bf82efe95216caac3cf6c7bcb5a156 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Tue, 23 Jul 2019 15:36:05 +0200 Subject: [PATCH 21/25] Update Travis builds to include PHP 7 --- .travis.yml | 27 +++++++++++++-------------- composer.json | 8 +++----- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/.travis.yml b/.travis.yml index d1c7b33..c528f9d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,27 +1,26 @@ -# See https://github.com/silverstripe-labs/silverstripe-travis-support for setup details +# See https://github.com/silverstripe/silverstripe-travis-support for setup details language: php -php: - - 5.6 - -env: - - DB=MYSQL CORE_RELEASE=3 +dist: trusty matrix: include: - - php: 5.6 - env: DB=PGSQL CORE_RELEASE=3 - - php: 5.6 - env: DB=MYSQL CORE_RELEASE=3 + - php: '7.1' + env: DB=PGSQL CORE_RELEASE=3.7 + - php: '7.1' + env: DB=MYSQL CORE_RELEASE=3.7 + - php: '7.2' + env: DB=MYSQL CORE_RELEASE=3.7 + - php: '7.3' + env: DB=MYSQL CORE_RELEASE=3.7 before_script: - - pear -q install --onlyreqdeps pear/PHP_CodeSniffer - phpenv rehash - - git clone git://github.com/silverstripe-labs/silverstripe-travis-support.git ~/travis-support + - git clone git://github.com/silverstripe/silverstripe-travis-support.git ~/travis-support - php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss - cd ~/builds/ss script: - - vendor/bin/phpunit translatable/tests/ - - phpcs --encoding=utf-8 --tab-width=4 --standard=translatable/tests/phpcs -np translatable + - vendor/bin/phpunit translatable/tests + - vendor/bin/phpcs --encoding=utf-8 --tab-width=4 --standard=translatable/tests/phpcs -np translatable diff --git a/composer.json b/composer.json index 787683e..92f6cd6 100644 --- a/composer.json +++ b/composer.json @@ -24,10 +24,8 @@ "silverstripe/cms": "~3.2" }, "require-dev": { - "silverstripe/postgresql": "*", - "silverstripe/sqlite3": "*", - "silverstripe/mssql": "*", - "phpunit/PHPUnit": "~3.7@stable" + "phpunit/phpunit": "^5.7", + "squizlabs/php_codesniffer": "^3.0" }, "extra": { "screenshots": [ @@ -38,4 +36,4 @@ "issues": "https://github.com/silverstripe/silverstripe-translatable/issues?state=open" }, "minimum-stability": "dev" -} \ No newline at end of file +} From 9b89384aa2e7e068172d27719f8c133d205a9814 Mon Sep 17 00:00:00 2001 From: Aaron Carlino Date: Fri, 6 Dec 2019 15:03:34 +1300 Subject: [PATCH 22/25] Update userguide for compliance with new docs site --- docs/en/userguide/about-translatable.md | 4 ++-- docs/en/userguide/index.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/en/userguide/about-translatable.md b/docs/en/userguide/about-translatable.md index 600357c..934447e 100644 --- a/docs/en/userguide/about-translatable.md +++ b/docs/en/userguide/about-translatable.md @@ -2,11 +2,11 @@ The SilverStripe Translatable module allows you to create and edit multiple pages in various languages. This module also adds the ability for your users to select which language of a page they wish to view. -
+[note] Notes: The SilverStripe Translatable module does not translate content automatically, content authors will need to enter the translated content manually for each translated page. -
+[/note] To begin translating content select a page in your site tree from the "Pages" admin. You can see in the below image: diff --git a/docs/en/userguide/index.md b/docs/en/userguide/index.md index 6bccd84..df848db 100644 --- a/docs/en/userguide/index.md +++ b/docs/en/userguide/index.md @@ -1,5 +1,7 @@ +--- title: Working with translations summary: Adding translated content to your website. +--- # Working with translations From bed7d9a0681ef19171c987a88dea27055193b43c Mon Sep 17 00:00:00 2001 From: Aaron Carlino Date: Thu, 19 Dec 2019 13:49:38 +1300 Subject: [PATCH 23/25] META: Add github action to build docs --- .github/workflows/main.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..c9fad7e --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,14 @@ +name: Build Docs +on: + push: + branches: + - '2.1' + paths: + - 'docs/en/userguide/**' +jobs: + build: + name: build-docs + runs-on: ubuntu-latest + steps: + - name: Run build hook + run: curl -X POST -d {} https://api.netlify.com/build_hooks/${{ secrets.NETLIFY_BUILD_HOOK }} From ae1155cd04f1e512d0e6ca7134c525882c66bd41 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Sun, 11 Oct 2020 16:22:57 +1300 Subject: [PATCH 24/25] MNT: Fix invalid composer.json casing --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 934c782..3ae0f4c 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "silverstripe/postgresql": "*", "silverstripe/sqlite3": "*", "silverstripe/mssql": "*", - "phpunit/PHPUnit": "~3.7@stable" + "phpunit/phpunit": "~3.7@stable" }, "extra": { From 97379fc92b7809d328ac1d1b6e215403e66ada4f Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Sun, 11 Oct 2020 16:23:45 +1300 Subject: [PATCH 25/25] MNT: Fix invalid composer.json casing --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 26548e2..b006471 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "silverstripe/postgresql": "*", "silverstripe/sqlite3": "*", "silverstripe/mssql": "*", - "phpunit/PHPUnit": "~3.7@stable" + "phpunit/phpunit": "~3.7@stable" }, "extra": { "screenshots": [