我有蛋糕2和#34; fre"作为默认语言,但由于我生日的形式有些奇怪的原因,我的月份仍然是英语。这是我的代码
echo $this->Form->input('User.birthday',
array (
'label' => array('text'=>__("form_birthday", "true"),
'class' => ''),
'selected' => 'empty',
'dateFormat' => 'MDY',
'minYear' => date('Y') - 90,
'maxYear' => date('Y') - 18,
'separator'=> " ",
'empty' => __('select', true)
)
);
任何人都知道如何将月份名称翻译成法语。我的default.po已经有了几个月的法语翻译。
答案 0 :(得分:3)
如the docs中所述:
本地化您的应用程序的另一个方面是使用翻译功能,而不是使用日期/金钱格式。不要忘记CakePHP是PHP :),因此要设置这些内容的格式,你需要使用setlocale。
因此,要本地化日期,您需要在适当的地方调用setlocale - 例如AppController::beforeFilter
如果它是多语言应用程序 - 或app/bootstrap.php
如果它是单一语言。
如果您不想依赖setlocale
(这是更好的主意),而是更喜欢控制,您可以使用'monthNames' => true
来使用“普通”翻译而不是{{1}的输出}。你会发现这个in the source。您可以从the localized repository获取一个法语po文件 - 除了为您翻译月份名称外,还可以翻译所有其他标准文本。
你永远不应该降落在这里 - 但如果没有任何工作(这个strfrtime
定义为正常的月份数组 - >名称,这将优先于自动派生的月份名称。
答案 1 :(得分:1)
我将以下行放在bootstrap文件中,效果很好。
Configure::write('Config.language', 'fra');
答案 2 :(得分:0)
有几个步骤:
首先,设置要使用的区域设置 为该语言创建一个或多个.po文件 使用__()或__d()辅助方法包装所有l10n-able字符串 以下是我的一个项目的摘录:
uses ( 'L10n' );
class AppController extends Controller {
public function beforeFilter() {
/**
* Derive the desired locale by reading the subdomain from
* the HTTP_HOST server variable. Locale subdomains can use
* either the 2 or 3 character ISO code. Information on locale
* ISO codes is at http://www.loc.gov/standards/iso639-2/php/code_list.php.
*/
$this->L10n = new L10n();
/** Auto-detect the request language settings */
$this->L10n->get();
/**
* Set the default "domain" for translations. The domain is the
* same as the po file name in a given locale directory. e.g.
* __d( 'homepage', 'message_id' ) would look for the
* message_id key in homepage.po. Using the __() convenience
* function will always look in default.po.
*/
$this->set( 'domain', 'default' );
}
# The rest of your AppController code
}
该片段将设置语言。您需要做的就是在/ app / locale / eng / LC_MESSAGES /目录中提供相应的.po文件。我想,CakePHP书提供了足够的信息。 http://book.cakephp.org/view/161/Internationalization-Localization
如果您选择仅使用一个.po文件,则将使用__()帮助程序包装字符串。我选择了多个.po文件以避免一个大文件,所以我使用了__d()帮助器,以便我可以指定哪个域(domain == .po文件的名称没有.po扩展名)。
<强>更新强>
我应该补充一点,您需要使用翻译行为来帮助您处理需要翻译的数据库内容。