以下是关于在我的网站上显示语言切换器的信息。
我目前在数组中使用语言代码(作为键)和语言名称(作为值),因此可以稍后调用它们并在网站上显示。
array (
'en' => 'English',
'fr' => 'French',
'de' => 'German'
);
我想升级我的编码,以允许每种语言显示在其原生文本中。例如,“英语”也可以用德语写成“Anglais”(法语)和“Englisch”。
所以我的问题是这样做最有效的方法是什么?我会为此构建一个新数组吗?或者我应该使用提供这些语言名称的内置PHP函数?如果需要,从头开始构建是完全正常的,但我需要一些关于阵列构造外观的指导。
谢谢!
答案 0 :(得分:1)
如果你想做的不仅仅是几个单词,你应该使用gettext()
to provide localization。
<?php
bindtextdomain("myApp", "./locale");
textdomain("myApp");
$langs = array (
'en' => _('English'),
'fr' => _('French'),
'de' => _('German')
);
然后,您将为上面指定的./locale/
目录中的每种语言创建一个消息文件。例如,法国人看起来像这样:
msgid "English"
msgstr "anglais"
msgid "French"
msgstr "français"
msgid "German"
msgid "allemande"
这是一个标准库,不仅用于PHP。有许多程序会扫描您的PHP文件,寻找_("text")
并自动创建消息文件。
答案 1 :(得分:0)
我个人使用多维数组以不同的语言存储名称。
类似
$lang = [
'en' => [
'en' => 'english',
'fr' => 'french'
],
'fr' => [
'en' => 'anglais',
'fr' => 'francais'
],
];
所以你可以通过
来获取名字echo $lang['fr']['fr'] //francais
echo $lang['fr']['en'] //anglais
如果你开始拥有世界上所有语言但至少可以处理双语,那会很痛苦。
在本土方式上,我没有经验,但您可能希望从查看http://php.net/manual/en/locale.getdisplaylanguage.php开始。
返回语言的适当本地化显示名称 inputlocale
答案 2 :(得分:0)
使用此代码
echo Locale::getDisplayLanguage('locale', 'in_locale');
在数组中使用它是这样的:
array (
'en' => Locale::getDisplayLanguage('en', 'en'),
'fr' => Locale::getDisplayLanguage('fr', 'fr'),
'de' => Locale::getDisplayLanguage('de', 'de'),
);
Click here用于php手册。
答案 3 :(得分:0)
基于@Augwa建议在此处使用rinvex/language
软件包:
https://github.com/rinvex/language
我已将数据导出到以下数组中:
https://gist.github.com/rafasashi/fd1a08c1b72a54e905b665a35e548509