我们正准备将我们的PHP网站翻译成各种语言,PHP中的gettext支持看起来就像是要走的路.
我看到的所有教程都建议使用英文文本作为消息ID,即
gettext("你好!")
但这真的是个好主意吗?假设市场营销人员希望将文本更改为"你好,你们!".那么你不必更新所有语言文件,因为该字符串 - 实际上是消息ID - 已经改变了吗?
拥有某种通用ID(例如"hello.message")和英文翻译文件会更好吗?
我已经设置了PHP Storm以使用phpcs并在我违反风格时在IDE中显示我.
但是,我想为视图文件禁用它 - 它们通常包含与HTML混合的PHP,与样式指南不匹配,我不关心视图文件.
在选项中,我在phpcs设置中看到了排除文件的列表,但它只有删除文件或清除整个列表的按钮,但没有办法将文件添加到它.
我在某处错过了吗?
有没有一种简单的方法来解析用户的HTTP_ACCEPT_LANGUAGE并在PHP中设置语言环境?
我知道Zend框架有一个方法可以做到这一点,但我宁愿不安装整个框架只是为了使用那一点功能.
PEAR I18Nv2软件包处于测试阶段,近三年没有更改,所以如果可能的话我宁愿不使用它.
如果它可以判断服务器是否在Windows上运行,那也很好,因为Windows的语言环境字符串与世界其他地方不同......(德语是"deu"或"german"而不是"de". )
假设我有两种称为january和的CSS样式tuesday.我想将它们应用到我视图中的某些文本字段,具体取决于它是1月还是2月.
选项A:执行控制器中的逻辑,并将样式放在ViewData中.
在控制器中:
if( month == Month.January)
ViewBag.UserNameCssStyles = "january";
if( today == Day.Tuesday )
ViewBag.UserNameCssStyles += " tuesday";
Run Code Online (Sandbox Code Playgroud)
在视图中:
@Html.TextBoxFor(model => model.UserName, new { @class = ViewBag.UserNameCssStyles }
Run Code Online (Sandbox Code Playgroud)
选项B:执行控制器中的逻辑并在视图中指定样式?
在控制器中:
ViewBag.IsJanuary = (month == Month.January);
ViewBag.IsTuesday = (today == Day.Tuesday);
Run Code Online (Sandbox Code Playgroud)
在视图中:
@if (ViewBag.IsJanuary && !ViewBag.IsTuesday)
{
@Html.TextBoxFor(model => model.UserName, new { @class = "january" })
}
else if (!ViewBag.IsJanuary && ViewBag.IsTuesday)
{
@Html.TextBoxFor(model => model.UserName, new { @class = "tuesday" })
}
else if(ViewBag.IsJanuary && …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用PEAR包的项目.因为你永远不知道什么版本的PEAR包将在您的托管服务提供商进行安装(尤其是因为我需要一个修补程序已经应用到包中的一个),我希望把PEAR来源为我的项目直接进入SVN,所以其他开发人员可以立即拥有依赖项.
但是与PEAR相关的一切似乎都有绝对的目录!运行"pear config-create.pea.conf"来设置新的PEAR目录甚至失败并显示错误消息:
根目录必须是绝对路径
我检查了其他一些服务器上的pear配置文件,它们似乎也有绝对路径.
每当开发人员将其检出自己的机器,或者我们将其全部导出到服务器时,我们都不知道绝对路径是什么.
有没有办法设置它?
想象一下,我在名为"messages"的表中有以下数据:
message_id | language_id | message
------------------------------------
1 en Hello
1 de Hallo
1 es Hola
2 en Goodbye
2 es Adios
Run Code Online (Sandbox Code Playgroud)
(请注意,我没有"Goodbye"的德语翻译.)
我想为说英语和德语但更喜欢德语的用户选择消息.
意思是,我想要一个看起来像这样的结果集:
message_id | language_id | message
------------------------------------
1 de Hallo
2 en Goodbye
Run Code Online (Sandbox Code Playgroud)
但是,嗯,它证明是棘手的.有任何想法吗?
PHP的json_decode函数有一个"深度"参数,您可以在其中指定它将递归的深度.但是以下代码:
test = array(
'name' => 'sean',
'dob' => '12-20',
'parents' => array(
'father' => 'tommy',
'mother' => 'darcy'
)
);
foreach(range(1, 3) as $depth) {
echo "-----------------\n depth: $depth\n";
print_r(json_decode(json_encode($test), true, $depth));
}
Run Code Online (Sandbox Code Playgroud)
生成此输出:
-----------------
depth: 1
-----------------
depth: 2
-----------------
depth: 3
Array
(
[name] => sean
[dob] => 12-20
[parents] => Array
(
[father] => tommy
[mother] => darcy
)
)
Run Code Online (Sandbox Code Playgroud)
我期望的是深度为1以显示"名称"和"dob",深度为2以显示父母.我不明白为什么1或2的深度根本没有显示.
任何人都可以向我解释我不理解的东西吗?
一个不需要以下内容:
我在CSS中找不到一个不依赖于上述之一的3列布局.并且依赖于上述之一似乎否定了使用CSS而不是表的许多优点.每次我想改变左栏的宽度时,我都不想扯掉Photoshop并调整图像大小.而且我不想拉出计算器来计算我的DIV必须在屏幕一侧有多少像素.
我应该提一下,我正在寻找一个高度相等的布局.
任何人?
编辑:我正在寻找100%的宽度,中心柱是液体.
编辑:我也希望指定左右列的宽度(以像素为单位).
编辑:背景可以是透明的,但我希望列之间的分界线一直向上和向下运行.
EXPLAIN SELECT node_id
FROM node
WHERE person_id IN (SELECT person_id
FROM user
WHERE is_locked = 0);
Run Code Online (Sandbox Code Playgroud)
在MySql中的结果告诉我子查询是派生的.但事实并非如此!
(我知道这可以很容易地重写为JOIN,但我想知道为什么MySQL认为这是一个依赖子查询.)
当我在MySQL工作台中创建外键时,"索引"选项卡上会出现一个新条目,它与我刚刚创建的外键完全相同.
这实际上是外键,出于某种原因出现在"索引"选项卡上吗?或者MySQL Workbench是否有帮助并为我创建一个索引,知道我可能会选择该列,并给它(令人困惑)与外键相同的名称?
因此,如果我使用YUI加载器(在Yahoo的服务器上)来提供JavaScript,并且我告诉它使用组合,那么浏览器可以在单个请求中下载几个YUI Widgets,这不会使它变得更加困难浏览器缓存JavaScript?
假设我有一个包含两个页面的站点,第一个使用YUI日历,对话框和树窗口小部件,浏览器将它们全部合并到YUI服务器的一个组合请求中.
下一页仅使用YUI日历和对话框,但不使用树.这是否意味着它现在在技术上是对雅虎服务器的不同请求,具有不同的查询字符串?这意味着这两个小部件会再次下载,即使它们只是在第一页上使用了吗?
在这种情况下,最好是对组合服务器发出一个请求,这将导致(在许多情况下)无法访问的JavaScript的单个请求?或者对可以缓存的单个YUI组件的几个请求?
(YSlow似乎没有提到这个问题.)
这是我的情景:
我有一个(让我们称之为)节点的表.每个主键只是"node_id".
我有一个维护节点层次结构的表,只有两列:parent_node_id和child_node_id.
层次结构在单独的表中维护,因为节点可以具有N:N关系.也就是说,一个节点可以有多个子节点和多个父节点.
如果我从一个节点开始并想要获得它的所有祖先(即层次结构中的所有东西),我可以做多次选择,或者在一个存储过程中完成所有操作.
任何对这个问题有实际经验的人都知道哪一个可能有最好的表现?我在线阅读了两种推荐方式.
我正在玩达特的镜子.我找不到任何方式反映一个类,并弄清楚它是否有一个构造函数,如果有的话,这个构造函数的参数是什么.
使用ClassMirror,看起来StatementMirror对象的"声明"集合将包含构造函数的条目,但是没有办法使用DeclarationMirror来判断它是否是构造函数,并且无法查看有关参数的信息.
使用MethodMirror对象的"instanceMembers"集合,看起来甚至不包含构造函数.我假设这是因为构造函数不是可以调用的正常方法,但是,由于MethodMirror具有"isConstructor"属性,因此它很奇怪.
有没有办法,给定一个对象类型,弄清楚它是否有一个构造函数,如果有的话,获取有关该构造函数的参数信息?
以下代码说明了问题:
import 'dart:mirrors';
class Person {
String name;
int age;
Person(this.name, this.age);
string getNameAndAge() {
return "${this.name} is ${this.age} years old";
}
}
void main() {
ClassMirror classMirror = reflectClass(Person);
// This will show me the constructor, but a DeclarationMirror doesn't tell me
// anything about the parameters.
print("+ Declarations");
classMirror.declarations.forEach((symbol, declarationMirror) {
print(MirrorSystem.getName(symbol));
});
// This doesn't show me the constructor
print("+ Members");
classMirror.instanceMembers.forEach((symbol, methodMirror) {
print(MirrorSystem.getName(symbol));
});
}
Run Code Online (Sandbox Code Playgroud) php ×6
mysql ×4
css ×2
apache ×1
asp.net ×1
asp.net-mvc ×1
dart ×1
dart-mirrors ×1
gettext ×1
html ×1
javascript ×1
json ×1
locale ×1
pear ×1
performance ×1
phpstorm ×1
sql ×1
subquery ×1
svn ×1
yui ×1