您在以下环境中使用哪种语言环境:url、文件夹名称、数据库??
定位有两种。
1. URL本地化
en-us
zh-tw
我使用mcamara/laravel本地化
2.内容本地化
喜欢不同语言的产品名称。我使用Astrotomic/laravel-可翻译,它需要在翻译表中的区域设置列。
产品翻译:
id locale product_id name
1 en-us 1 iphone
2 zh-tw 1 蘋果手機
这是不行的:
languages table
id, locale, name
1 en-us English
2 zh-tw Taiwan
product_translations
id language_id product_id name
1 1 1 iphone
2 2 1 蘋果手機
转换表中必须存在“locale”列。
在产品的OptionController中,我希望为刀片式服务器进行选项转换。
if($option->translations->isEmpty()){
$option_translations = [];
}else{
foreach ($option->translations as $translation) {
$locale = str_replace('-', '_', $translation->locale);
//$option_translations->$locale = $translation->toArray();
$option_translations[$locale] = $translation->toArray();
}
}
这导致了一个错误。因为连字符不能是变量名。所以,en-us不能是$option_translations-〉$locale
我必须在翻译时添加替换代码。
$locale = str_replace('-', '_', $locale);
or
$locale = str_replace('_', '-', $locale);
- 拉瑞维尔文件建议使用下划线。
根据ISO 15897,您可以使用“en_GB”而不是“en-gb”来表示英式英语。
- mcamara/laravel本地化包在配置文件中使用连字符:config\laravellocalization.php
这将Map到文件夹名称。虽然它有localesMapping参数。
- 连字符在网址中似乎更常见,就像微软的网站:
https://www.microsoft.com/zh-tw
那么,您在以下环境中使用哪种区域设置:url、文件夹名称、数据库??
1条答案
按热度按时间m1m5dgzv1#
现在我的解决方案是
语言环境=〉en_GB
[......][ ......][ ......][......][... ...][... ...][......][...... ]
和“localesMapping”数组相加
默认值为none。
所以url是en-GB,就像http://example.com/en-GB一样。项目中的所有代码都是en_GB。因为mcamara/laravel-localization包将进行Map。
如果我用
我将获得“en_GB”,而不是URL的“en-GB”
则可以将$product_translations
这将是
我们不需要执行任何str_replace();