From 43dd296076975cd91d143f7da0b9c43db6672218 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Mon, 30 Nov 2009 00:44:46 +0000 Subject: [PATCH] ENHANCEMENT Added parameter to DBLocale->Nice() ENHANCEMENT Added DBLocale->getNativeName() (from r93771) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@93941 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- core/model/fieldtypes/DBLocale.php | 25 ++++++++++++++++++++++--- tests/model/DBLocaleTest.php | 10 ++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/core/model/fieldtypes/DBLocale.php b/core/model/fieldtypes/DBLocale.php index fe2eaa9c9..cfdcaadee 100644 --- a/core/model/fieldtypes/DBLocale.php +++ b/core/model/fieldtypes/DBLocale.php @@ -14,11 +14,16 @@ class DBLocale extends Varchar { } /** - * See {@link getShortName()}. + * See {@link getShortName()} and {@link getNativeName()}. * + * @param Boolean $showNative Show a localized version of the name instead, based on the + * field's locale value. * @return String */ - function Nice() { + function Nice($showNative=false) { + if ($showNative) { + return $this->getNativeName(); + } return $this->getShortName(); } @@ -37,8 +42,22 @@ class DBLocale extends Varchar { return (isset($common_names[$this->value])) ? $common_names[$this->value] : false; } + /** + * @return String + */ function getLongName() { return i18n::get_locale_name($this->value); } + + /** + * Returns the localized name based on the field's value. + * Example: "de_DE" returns "Deutsch". + * + * @return String + */ + function getNativeName() { + $common_names = i18n::get_common_locales(true); + return (isset($common_names[$this->value])) ? $common_names[$this->value] : false; + } } -?> \ No newline at end of file +?> diff --git a/tests/model/DBLocaleTest.php b/tests/model/DBLocaleTest.php index 2d0366066..98728943b 100644 --- a/tests/model/DBLocaleTest.php +++ b/tests/model/DBLocaleTest.php @@ -8,5 +8,15 @@ class DBLocaleTest extends SapphireTest { $l = DBField::create('DBLocale', 'de_DE'); $this->assertEquals($l->Nice(), 'German'); } + + function testNiceNative() { + $l = DBField::create('DBLocale', 'de_DE'); + $this->assertEquals($l->Nice(true), 'Deutsch'); + } + + function testNativeName() { + $l = DBField::create('DBLocale', 'de_DE'); + $this->assertEquals($l->getNativeName(), 'Deutsch'); + } } ?> \ No newline at end of file