我想根据所选语言创建具有许多翻译路线的应用程序。我曾经在3种在多语言网站中创建URL的方法中对此进行了描述。
在这种情况下,它应该是 提到的主题的第一个方法, 因此:
假设我设置了默认语言,pl
并设置了2种其他语言en
和fr
。我只有3页-主页,联系页和关于页。
网站的网址应如下所示:
/
/[about]
/[contact]
/en
/en/[about]
/en/[contact]
/fr
/fr/[about]
/fr/[contact]
而[about]
和[contact]
应根据所选语言的翻译,例如英语应该留下contact
,但波兰应该kontakt
等等。
如何做到尽可能简单?
第一步:
转到app/lang
目录并在此处为每种语言的路线创建翻译。您需要创建3个routes.php
文件-每个文件都位于单独的语言目录(pl / en /
fr)中,因为您要使用3种语言
波兰语:
<?php
// app/lang/pl/routes.php
return array(
'contact' => 'kontakt',
'about' => 'o-nas'
);
对于英语:
<?php
// app/lang/en/routes.php
return array(
'contact' => 'contact',
'about' => 'about-us'
);
对于法语:
<?php
// app/lang/fr/routes.php
return array(
'contact' => 'contact-fr',
'about' => 'about-fr'
);
第二步:
转到app/config/app.php
文件。
您应该找到以下行:
'locale' => 'en',
并将其更改为应该是您的主要站点语言的语言(在您的情况下为波兰语):
'locale' => 'pl',
您还需要将以下行放入此文件:
/**
* List of alternative languages (not including the one specified as 'locale')
*/
'alt_langs' => array ('en', 'fr'),
/**
* Prefix of selected locale - leave empty (set in runtime)
*/
'locale_prefix' => '',
在alt_langs
配置设置可选的语言(在你的情况en
和fr
) -他们应该是一样的,从第一步骤中你的翻译创建的文件的文件名。
并且locale_prefix
是您的语言环境的前缀。您不需要默认语言环境的前缀,因此将其设置为空字符串。如果选择默认语言以外的其他语言,则会在运行时修改此配置。
第三步
转到您的app/routes.php
文件并放入其内容(即app/routes.php
文件的全部内容):
<?php
// app/routes.php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/
/*
* Set up locale and locale_prefix if other language is selected
*/
if (in_array(Request::segment(1), Config::get('app.alt_langs'))) {
App::setLocale(Request::segment(1));
Config::set('app.locale_prefix', Request::segment(1));
}
/*
* Set up route patterns - patterns will have to be the same as in translated route for current language
*/
foreach(Lang::get('routes') as $k => $v) {
Route::pattern($k, $v);
}
Route::group(array('prefix' => Config::get('app.locale_prefix')), function()
{
Route::get(
'/',
function () {
return "main page - ".App::getLocale();
}
);
Route::get(
'/{contact}/',
function () {
return "contact page ".App::getLocale();
}
);
Route::get(
'/{about}/',
function () {
return "about page ".App::getLocale();
}
);
});
如您所见,首先检查url的第一段是否与您的语言名称匹配-如果是,则更改语言环境和当前语言前缀。
然后在小循环中,设置所有路由名称的要求(您提到了要拥有的名称about
并contact
转换为URL),因此在此处将其设置为与routes.php
文件中为当前语言定义的名称相同。
最后,您创建将有前缀相同的语言(默认语言它将是空的),你只需创建路径,但这些参数内组路由组about
和contact
你当作variables
让你用{about}
和{contact}
语法他们。
您需要记住,在这种情况下{contact}
,将检查所有路径是否与您在第一步中为当前语言定义的路径相同。如果你不想要这个效果,并希望使用手动设置路线每条路线的,有替代app\routes.php
不循环,您可以设置文件contact
和about
各条路线分别:
<?php
// app/routes.php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/
/*
* Set up locale and locale_prefix if other language is selected
*/
if (in_array(Request::segment(1), Config::get('app.alt_langs'))) {
App::setLocale(Request::segment(1));
Config::set('app.locale_prefix', Request::segment(1));
}
Route::group(array('prefix' => Config::get('app.locale_prefix')), function()
{
Route::get(
'/',
function () {
return "main page - ".App::getLocale();
}
);
Route::get(
'/{contact}/',
function () {
return "contact page ".App::getLocale();
}
)->where('contact', Lang::get('routes.contact'));
Route::get(
'/{about}/',
function () {
return "about page ".App::getLocale();
}
)->where('about', Lang::get('routes.about'));
});
第四步:
您没有提到它,但是您可以考虑另外一件事。如果有人/en/something
在something
不正确的路由处使用url
,我认为是进行重定向的最佳解决方案。但是,您不应该重定向到,/
因为它是默认语言,而是重定向到/en
。
因此,现在您可以打开app/start/global.php
文件并在此处为未知网址创建301重定向:
// app/start/global.php
App::missing(function()
{
return Redirect::to(Config::get('app.locale_prefix'),301);
});
问题内容: 有一个普通的Java API的JavaDoc,有英文版和中文版,但似乎每个版本都需要单独的源代码。还有其他更方便的方法吗? 问题答案: 不,基本上没有办法。 想到的唯一变通方法适用于生成的HTML页面:您可以将JavaDocs包围在使用CSS在语言之间切换的块元素中。考虑: 随后编辑JavaDocs的CSS,以便用户可以切换语言,例如:
我有英文的php gettext默认语言 我想在我的一个控制器,翻译一些词在2个其他语言,并把他们全部在一个数组。 理想情况下我可以 但它并不存在。 是每次更改gettext设置的唯一方法吗? 相关:在Google:i18n之后用gettext看到了它,但没有地方设置的麻烦? 以下是建议的已回答的解决方案: https://github.com/philip15b/php-i18n(似乎是最佳解决
问题内容: 我知道大多数人都使用下面的方法,并为需要翻译的特定表创建翻译表,但这可能会导致大量的表。 以下方法可行吗?假设您有很多表需要翻译超过1列。您能将以下所有翻译都保留在一张表格中吗?我想这张桌子的大小会随着时间的推移而大大增加。 因此,使用第二种方法,您将获得像这样的文本 问题答案: 我不确定您为什么担心表的数量:减少表的数量并不能自动意味着您的数据库更小,更高效或设计更好。特别是如果减少
稍微了解一点科学的人都知道,人类所使用的自然语言是不够严格精确的。这些语言既有规则(譬如句子要有完整的结构,英语中过去发生的动作要用过去式),又没有规则(譬如不规则动词,以及某些约定俗成而“毫无道理”的搭配)。从某种意义上说,语言的活力和创造力,就在于能够灵活游走于这种有/无规则的矛盾之间,“搭配”出不曾出现过,但意义完整的词句。 比如近年来出现的“积淀”、“积弱”之类的词语,就是这种搭配的结果;
问题内容: 是否有Python模块可将文本从一种人类语言翻译成另一种语言?我打算使用Python脚本对文本进行前后处理。可以使用其他哪些Python集成方法? 问题答案: 如果您实际上想在两种语言之间翻译文本字符串,例如从英语“ Hello”到西班牙语“ Hola”,则可能需要研究Google Language API 。 由于Google API的免费版本最近被弃用,另一个替代方法是Bing T
我是编程新手。我一直在努力创造一种东西,它能给我一个特定金额的美元所需的最小金额的美分硬币。例如,16美分所需的最低硬币数量将3 (10 5 1) 我确实意识到“int i”不存在于该函数之外,所以,我想知道如何解决这个问题。此外,我还不确定返回是如何工作的,我试图四处玩耍,看看它是否工作。任何对改进代码行的帮助都将得到充分的评价。我已经试着解决这个问题一段时间了。祝你们有美好的一天