Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Nao
2296
The Pub / git problems for non-gits.
« on November 12th, 2013, 08:02 PM »
Okay, maybe in the public area there are people who might know much more about git than I can... ;)
So this is a 'generic' topic for git-related issues. Feel free to use it for you, too.

I did my folder moves (for the theme removal stuff)[1], through a series of git mv old_long_folder/* new_short_folder/ commands, and it's working.

Now, when I right click Load.php (or any other file, really) and click Blame, TortoiseGit shows me a history of the file. I can click anywhere and go back to any old commits, so it's definitely doing git blame --follow. However, when I right-click a line and ask for 'Blame previous revision', it gives me this error:

Blame error
fatal: no such path sources/Load.php in (old commit ID)

Yes, of course that file wasn't there. But, Blame tool, you KNEW that, since you're listing all revisions of the file across renames! Git being able to find renames and code moves with needing to specifically track them is supposedly one of its biggest assets!
So, why do I have to go through that..?!
Am I condemned to go through filter-branch and tree-filter, and rename all files manually in the entire history...?! That would be an awful thing to do.

PS: I tested with Git Extensions and SmartGit, the first doesn't even react when I ask for an earlier commit, while the second one will show me earlier commits, so that's great, but the tool itself, I'm not really convinced by it, and I'm definitely sticking with TortoiseGit.
 1. BTW, I'm unsure whether I'll keep both 'scripts' and 'sources' folders side to side in the root. I tend to click on 'scripts' when wanting to view PHP files, and 'sources' when wanting to see JS files, so... Maybe it's just me, but if any of you has a suggestion on renaming the 'scripts' folder to something short and sweet and understandable, knowing that the name 'js' is already taken by the JS cache, I'm very open about this.
2297
Features / Re: One theme to rule them all?
« on November 12th, 2013, 07:56 PM »
So...

- All files transferred. I also moved /avatars to /assets, for good mesure.
- Moved temp repo to my local website, so that I could test. Crashes in a funny way.
- Fixed variables, etc. It's running.
- Theme is still completely broken. It's going through wetem::hide() for some reason, I'll look into it.
- What have I got into, really..?!?! This is AGONY. The amount of code just to account for theme handling is incredibly huge. I think my estimate of 2 weeks is going to be correct, but it won't be 2 fun weeks.
- I may do this conversion in two phases. The first phase would keep all theme terminology, and some of the variables, and the second phase would attempt to convert everything.
2298
Features / Re: One theme to rule them all?
« on November 12th, 2013, 05:30 PM »
So, as previously announced, here's the (hopefully final) file structure for the new system:

Code: [Select]
/Smileys/* /assets/smileys/
/Themes/default/aeva/* /assets/aeva/
/Themes/default/fonts/* /assets/fonts/
/Themes/default/images/* /assets/ (including aeva, so --> merge folders)
/Themes/default/languages/* /languages/
/Themes/default/scripts/* /scripts/
/Themes/default/skins/* /skins/
/Themes/default/* /templates/

I decided to use the name 'assets' rather than 'images', because to me, fonts are not image files. Also, the aeva folder has a few Flash files, so, not images. Plus, it saves one byte, and anything to save bandwidth at HTML time is my friend.
I considered renaming it to 'img' instead, but (1) see above, (2) abbreviations may be a bit too geeky. Although FluxBB has 'img' and 'lang' folders, but... Well, I don't know, I'm not FluxBB. For now :P

Coming next: fixing tons of bugs, I'm pretty sure... >_< (There are approx. 3000 references to the word 'theme' in Wedge. Yes, I'll attempt to remove them all! And manually, for the most part! Yay!)
2299
Features / Re: One theme to rule them all?
« on November 12th, 2013, 04:00 PM »
Okay, so after 8 votes, still none for keeping themes in, so I'll start work on it.
I'm just hoping that it doesn't screw up everything when it comes to moving folders around, of course...
Quote from Bloc on November 12th, 2013, 07:37 AM
Oh, I changed it last night. :)
All right, I'm not crazy then! ;)
I checked it on mobile, and the fixed header is making it hard to appreciate the exprience. It has too many entries, so it spans over four lines, and makes the header twice as big as its background, meaning it overflows. You should disable the fixed positioning for it in narrow viewports. ;)
Quote from Bloc on November 12th, 2013, 07:37 AM
Yes, with negative margins..I first added a "relative" class to the anchor in the template, then added "position: absolute" and top: -145px" which is roughly the height of the header. Not optimal since you have to change that if the header is higher, but still.
That's one of the problems I had with my Wedge implementation, yes. Plus, the fact that due to soft-merging, it's more complicated for me to add the link outside the message block, and adding it inside would screw up the layout, as most of these divs are positioned in a way or another... Well, gotta say, Wedge topics look great, but they sure have a few hacks that make it harder, I guess, to restyle completely... (You can still move the avatar to the right side or whatever, like Wine does, but of course it's not a hard one.)
Quote from Bloc on November 12th, 2013, 07:37 AM
Homeland is great. :) Only a few series I look forward with excitement nowadays: Homeland, Person of Interest and the Blacklist.
I stopped The Blacklist after a couple of episodes (I love James Spader, but he seems to be re-playing his Boston Legal character, only with a dark side... I'll probably catch up when there's a half-season or full season available, but as a weekly show, it doesn't excite me). Person of Interest, I always found the concept to be silly, but Once upon a time had a sillier premise, and it turned out to be great (well... Until the latter episodes in season 2, of course. It's only starting to get interesting again these days, and even then, it's so full of plot holes, I wonder where the plot went... Certainly not to Neverland.) What I mean is, I watched 5 episodes and I was like, "meh." But I heard that Amy Acker is a regular in later episodes, so it might be enough of an incentive to watch. (I totally dig her. Sue me. She's a modern Audrey Hepburn.)

Personally, my unmissable weekly shows: The Legend of Korra (a true wonder, season 2 is awesome), Homeland, The Walking Dead, OUAT, Quite interesting XL, Elementary, South Park, The Big Bang Theory and Misfits. And Community is coming back soon, so add that to the list. And Doctor Who, and Sherlock. And on summers, Wilfred.
The rest, that I watch when I'm bored: Agents of SHIELD, How I met your mother (season 9 is the worst ever... Too bad), Mom, OUAT in Wonderland (it's even sillier than its parent show, can you believe that?), and older shows I'm catching up with: Mike & Molly, Defiance (such a great pilot, such a disappointingly slow show afterwards), The Almighty Johnsons (I think I read something from Aaron saying it rocked, so I started it, and indeed it rocks, but I'm holding up for subtitles of season 3), and I only dropped one show with no redeeming chances: The Crazy Ones. Robin Williams, I love him but I prefer him when he doesn't play crazy. I'm also considering dropping Toast of London. I like the actor, but he's not THAT funny.
Recently, I watched Dirk Gently. That was fantastic. Too bad it got cancelled. Same for Spy, a fun, mindless sitcom. At least it got sort of an ending.

Anything else going on these days, that I might have missed..?
Quote from Bloc on November 12th, 2013, 07:37 AM
(click to show/hide)
Quinn is the mystery now, wondering if he might have something to do with the delivering of the bomb at Langley..but at least his ghost of earlier kills are haunting him it seems. Remains to see, the infidelity scene at the end was also painful. But Saul is strong, he'll survive once he finds out..or she just tells him.
That's an interesting theory about Quinn. I doubt it's true, though. But it would explain things.
As for the other scene, I think it's not surprising at all. His wife obviously came back to help him in a rough situation, as a friend, not because she wanted to give him another chance. Saul is obsessed with work. He pretty much knew there was a price to pay for her support. That's the price in question. But he's a child when it comes to relationships, so we can't know how he'll deal with it. Or if he will.
2300
Features / Re: Relative dates
« on November 12th, 2013, 01:16 PM »
Yep.
But it can also be said that "3 months ago" is easier to get than "August 3" when you're just a bit out of sync with what date it is right now... (Like, "I'm busy working on Wedge. Do you want to do it for me? No? Then keep telling me what day it is and shut up!")
:P
2301
Features / Re: New revs
« on November 12th, 2013, 01:08 PM »
rev 2318
 6 files changed, 103 insertions(+), 36 deletions(-), 2.97 KiB

+ Added support for relative dates in topic pages. (topic.js, index.language.php)

@ Need to know: this isn't going to stay 'as is'. I'm only trying to clean up my uncommitted stuff, and this is an important part of it. Also, an issue: done always at runtime, so you might see the absolute date at load time, a second before it becomes relative. As I said-- won't stay like this.

* Forcing relative dates to be absolute after 2 years. (Msg.template.php)

+ Added a helper function, time_tag(), which will be helpful to add these tags outside of topic pages later. Also removed a couple of lines that didn't make sense in forum_time(). (Subs.php, Msg.template.php)

* Moved runtime code like code+flexbox fixing, follow_me() adjuster and relative dates, to a new function that will get re-called whenever necessary. (topic.js)
2302
Features / Re: Relative dates
« on November 12th, 2013, 11:36 AM »
Let's say it's 6am.
A message posted at 3am: "3 hours ago". Okay.
A message posted at 11pm the previous day: should it say "7 hours ago", or "yesterday at 11pm"?
A message posted at 11pm 2 days ago: should it say "2 days ago at 11pm", or "day/month at 11pm"? If "2 days ago", does it mean "yesterday" is an exception?

I've looked a bit at how Facebook does it, and apparently they have a 24-hour window where they'll say "x hours ago", then after that, it uses the Wedge system: they'll say "yesterday" if it's the day before (e.g. right now it's 11:30am for me, so any posts sent between 0:00 and 11:30 yesterday will be marked a 'yesterday xx:xx'), anything beyond yesterday is given a proper date (november 10..), and anything before 2013 also adds the year, like in Wedge. (I can't believe SMF and even Elk (in its title param) still show the current year.)

So, basically, their relative dates are really simple, they're only for the last 24 hours...
Should I do it like them, and drop the idea of extending relative dates to months or even years..?
Or should I go the extra mile, but stop midway, say at x days or weeks, and after that, revert to absolute dates?
2303
Features / Re: New revs
« on November 12th, 2013, 01:35 AM »
rev 2317 -- yeah, ultra-short one, but I couldn't stand having it unpushed.
 1 file changed, 1 insertions(+), 1 deletions(-), 503 bytes

! Repeat a 1000 times: do not commit any last-minute optimizations without testing them... This one made we::is('mobile') return true on desktop browsers, which was... Not so good. (Class-System.php)
2304
Features / Re: One theme to rule them all?
« on November 12th, 2013, 01:30 AM »
Quote from Bloc on November 12th, 2013, 01:18 AM
Hm, I wasn't aware of the masking of anchors..does it do it now, still? You may need a hard refresh. And no, I am not using JS for that, only CSS.
Oh, indeed it works... That's odd. I think I used an anchor that was too 'recent', and that I confused it with another post, and... Anyway, forget what I said. How did you do that one, then? I'm surprised. I had a quick look at your CSS and couldn't find any hacks like doing a negative margin, things like that... (I couldn't do that in Wedge, because of complications with relatively positioned elements. Hell.)
Quote
Sure, I have an account on bitbucket already, but no problem getting another.
What address should I send it to, then? The one in your private profile here?
Quote
Heh, just watched latest "Homeland" (s3e7), time for bed me think, if I am to function at work tomorrow. :D
That was a fine episode, too! I'm starting for feel for Quinn... Good character, really.
2305
Features / Re: One theme to rule them all?
« on November 12th, 2013, 12:29 AM »
Hey, it's starting to look like I'm gonna have to get to work soon on removing theme support... Seven votes against zero in favor of doing that! :)
Quote from Bloc on November 11th, 2013, 08:22 AM
Thanks, likewise. :) The fact that you stuck with your vision and haven't not given up, is commendable.
:)
Quote from Bloc on November 11th, 2013, 08:22 AM
True, I did more experiments in ViennaBBS as it were..but I thinks thats mainly because I've been more focused on having Protendo going in the right direction under the hood - so less time for graphical things.
Apologies for implying otherwise, but I just saw your desktop version, and it's looking great.
So far, I'd only tested on my Android phone, and it didn't look as good. (Plus, it's very buggy in home pages.)
The only thing I'd seriously rework is Display pages, mainly avatars and page indexes (these circles, they have a 'meh' effect on me.)
The rest looks great.
Oh, also, when I saw your fixed header, I thought, "he must have run into the same problem that I did...", and you sure did. For instance, if you click a link to a specific post in a topic (not a topic itself), the resulting page half-hides the post, because it needs to be straightened by JavaScript into moving the page further up so you can see the desired anchor. I'd started to do that myself, and then I realized refreshed the page complicated matters: do I need to execute such JS in that situation? Depends on whether the browser forces the anchor position on refresh, and not all browsers agree on that, so... It gets complicated.
Quote from Bloc on November 11th, 2013, 08:22 AM
The current theme is on the minimalist side - its my current "phase" :D -
It's your most common phase, and the one I'm most jealous of. ;) (cf. Minimalism, Simplicity, ViennaBBS, and now Protendo.)
Really: I can't remove anything from Wedge without feeling I've removed too much, and I don't want a root skin that has too much CSS. What I want is a minimalist root skin, and then a 'full-featured skin' with styling everywhere, and give skins the ability to choose either of those as their parent.
Quote from Bloc on November 11th, 2013, 08:22 AM
but I see that it needs more themes, more diverse ones. And that I can do easily, but the old fashion way of replacing themes rather than skins/variations only.
Well you could always play with the HTML if you think you can make it more flexible for skinners. ;)
Quote from Bloc on November 11th, 2013, 08:22 AM
In any case - theres a lot of freedom for themers in Protendo, the css is been transformed to much more use of classes - which is the IMHO only way to make sure one change reverberate back into default templates.
Too many classes tend to make the CSS files bloated, though.
I kind of miss the days when SMF 1 had a single CSS file that weighed around 10KB, but hey... That's just me ;) I know that this particular SMF was also very, very reliant on tables and inline styles.
Quote from Bloc on November 11th, 2013, 08:22 AM
Making Wedge skins? I know I mentioned it before, and that it didn't pan out to anything then, but I think I need to really use Wedge for a while, see its way of working, under and over the hood, before dreaming up new designs. But I also know, I will prob. want to shift so much around that it might not be possible...but, can't say no until you tried - as the saying goes. ;)
AFAIK, you've always had a read access to the SVN at arantor.repositoryhosting.com, didn't you use it back in the day? ;)
Apart from that, that repo is now a month old, all development is now happening at the Bitbucket repo; still a private repo, so if you want access to it, feel free to ask. (I still have a slot open for my private repos, but it pretty much requires me to send you an invite by e-mail and have you create an account especially for that, following the link in the invite. That way, I get my last allocated 'promotional' slot.)
Quote from Bloc on November 11th, 2013, 08:22 AM
Is the alpha 2 from 2012 the latest release?
Yes. But I could very well release a new alpha right now, as it's relatively stable. I'm just waiting for the theme system to be removed, because it implies restructuring all folders, and I don't want to tell people to do it manually on their side ;)
Quote from Bloc on November 11th, 2013, 08:22 AM
I am not asking you to heighten my involvement or anything, because honestly, I will prob. be poor on feedback(due to working also on my own things) but it would be great to try stuff with the latest code - or what you deem close enough to make skins for.
I've never required of anyone with repo access to give regular feedback; knowing you're in is enough for me. I have a limited number of slots, though, so if someone doesn't seem to share anything (whether feedback or code or anything really), I may have to ask them if I can remove them from the list. OTOH, I could also add as many users as I want, as right now no one but me has commit access to the repo, and I think Bitbucket has an (hopefully) unlimited number of private users, as long as the repo is read-only.
2306
And because I'm a fair person, I just found a good example of a topic where I understand Pete's crude behavior:
- User posts in the wrong place, doesn't understand the answers, isn't generally very helpful...
- Arantor posts a piece of code that should help him (I'd have done pretty much the same),
- And no replies, of course. Presumably, guy tested it, it worked, then he left on another topic to ask for something else. (At this point, I don't know if Pete had moved onto another topic as well, or just didn't care that the guy would reply or not.)

That's certainly one of the reasons I've never been interested in getting Wedge to be more popular than SMF. I don't want this kind of user. Or, okay, I'm willing to have this kind of user, but only if they pay me for my time.
2307
Quote from Sara on November 11th, 2013, 09:28 PM
I guess I can air what I think?
Yes.
Quote from Sara on November 11th, 2013, 09:28 PM
Arantor is a great programmer, though I find him to really hypocritical as a person with the recent events.
He's... Complex. Even in the days of Wedge, I didn't understand him for all he did.
I mean, these days, I'm starting to wonder if his goal with his work on Wedge was the same as mine -- making the best forum software we could think of, something we'd want to use ourselves, something without the dead weight of the many mods and themes in SMF that always need to be catered for, something without the 'mass' of users in mind, targeted to people who're willing to get to work to have the best software around, and who don't care whether the software they use has a large user base, recognition or mod/theme library. It's now looking like his goal was simply to make a prototype of SMF 3.0... Because it's certainly what he's working on, these days. Taking his 'best' of Wedge and putting it into SMF.

Of course, there are implications to this line of work, that make me chuckle. I won't elaborate, though.

Arantor is what he is. He posted tens of thousands of messages on sm.org, which to me always sounded like "okay, I hate the SMF team, but I can't stop myself from posting all day long, so I have to have somewhere to post all my knowledge."
It made it pretty much impossible to follow him on the myriads of forums he was registered on.
So, he would start discussing things that I had no idea what they were about, and I would just let it slide. Things like this post here... Seriously, why did he care about an incompetent developer at the SMF team..? I mean, he WASN'T going to be using SMF any time soon, was he...? Turned out he had so much pride in Wedge, he used SMF to build his latest website. To me, that felt like a public renouncement. It was only confimed when he came back from his trip.
Quote from Sara on November 11th, 2013, 09:28 PM
I had to laugh when remembering this thread after hearing the news that he came back to SMF.  Though, whatever, anything to make him happy?  I have to be honest, I felt like I was walking on eggshells when he was around here.
I think we all did. Including me. I'd already, ahem, 'experienced' the difficulties of trying to be frank with him. I learned my lesson, and progressively stopped sharing my thoughts on what he made in Wedge that I didn't like. I'm somehow glad I know I can remove them now, but I also realize it would take time to revert some of his 'innovations', and I'd rather spend my time finishing up a usable beta.

He was just hard to work with. He had an answer for everything, and he gave them with so much aplomb that you just couldn't discuss them with him. Where I would post poll asking people where they think I had a good idea here or there, he just didn't bother -- his ideas were for the best, after all. Well, a majority of them were, but when you start fearing that he'll snap if you question one of his future implementations (or, worse, that he'll start arguing over it in novella-sized posts that no one can bother to read, let alone reply to), something's really wrong.

I for one, seriously hope that people will keep telling me what I'm doing wrong. Wrong direction? It's all right, I'd rather know when I just got started on something, rather than at the end when someone dares to speak. Perhaps I'm more understanding of 'newbies', simply because I'm a strong believer in the fact that "you're always someone else's dummy". In whatever field you feel you excel at, there's always going to be someone who knows better than you. I realize that (I even realize that person is often Arantor!), but if I keep thinking, "I'm not the right person for the job", then I'll never do anything. My Mahjongg Solitaire game sucked when I started it, which is why I released it for free, which is why it got popular, which is why I kept working on it, and years later made it into something that still to this day tell me is a masterpiece. I still think it was a piece of crap, but you have to draw a line: yes, someone else could have done a better job at writing Kyodai Mahjongg, but he probably wouldn't have bothered to work on it for 9 years, like I did.
When you have the guts and the will to do it, and to finish it, then you can do it. Doesn't matter if you have to restart from scratch several times. It will take what it takes to do it.

TL:DR. Yes, he's hard to see through, and whenever you start talking with him, you can't help but feel frightened that he'll end up shunning you. Most of the times it would end happily and he'd be cordial and nice, but do one single mistake, or insist a bit too much for his taste, and he'll crush you. And now where he is, I won't be there to possibly help smooth things between him and other people.
Quote from Sara on November 11th, 2013, 09:28 PM
Yes, I did offer 100 dollars to the Wedge project instead of throwing it at a forum license for v.bulletin.  Wedge fits the structure I want for my websites perfectly (especially with the unique privacy features, something my main forum really works upon),
Yeah, it still needs work, but it's something that'll end up as one of Wedge's finest features.
I mean, some of my ideas aren't implemented yet, but... You'll see! Once I'm done with the contact list system, I'll devote myself to privacy settings, and the bulk of the work is done, so you'll see.

Interestingly, I caught a topic where a certain Arantor told someone that "SMF will never (stoop so low as to...) implement privacy features, because it's not what a forum is for." Aside from the fact that that particular topic shows his 'style' (half arrogant, half trustable), as well as his 'badge' thing (yes, we know you're proud to be at SMF, even though you said the exact opposite in this very topic), he also mentions the disastrous impact on privacy... Which, as championed recently by Pandos, is not exactly THAT big a deal.[1] So... Yeah, whatever.
Quote from Sara on November 11th, 2013, 09:28 PM
and I plan on using it in lieu of WordPress.  Yet even after saying all of that, I feel really bad.  I feel like I am leeching off of Nao's (and in essence Arantor's) hard work, hard work they pretty much did for free.
Well, we did sign up knowingly, you see... We just didn't expect to have more than six months of work ahead of us, which was manageable. My plans were to simply import my SMF->Noisen.com patch to Wedge (around 900KB of code which I progressively reduced to 400KB through implementations and deletions, before I finally gave up and figured the rest would best be rewritten), and his plans, err... He had more ambition than I did, which is the reason why we postponed every six months, and consequently why I started implementing other things 'because we had time'...

Now that I'm alone on the project (as the decision maker, I mean), I certainly can decide when I'm going to feature-freeze the entire thing. Not right now, but it's getting close. Hopefully, next month I'll have some releasable beta. And if any of Arantor's code is in an "unreleasable state", then we'll just work on it. At worst, I'll simply remove said code.[2]
Quote from Sara on November 11th, 2013, 09:28 PM
100 bucks is a drop in the bucket considering how many years was put into wedge.  Wedge is priceless and I am hopeless as to how to give back efficiently.
Well, if I ever was going to have people pay for Wedge, it would be for an inexpensive price, less than $50. Probably around $30. I wouldn't expect to sell more than a few hundred copies (at best!!), so it wouldn't even pay for a month's worth of work on my current 'rate', so... I don't know why I should bother. If I could make it work as a sustainable revenue maker, then I certainly could envision working on Wedge for years and years to come. But alas, I'm no marketing guy, and I have no plans to turn Wedge into a marketing machine. As I said before, I'm only targeting people who know a bit of PHP and are willing to do what needs to be done for Wedge to work well on their setup. It'll mean less support questions for me, and happier power users.

PS: oops, I just realized it's an Arantor-length post. Sorry about that! I could probably shorten it by half, but I'm not sure it's worth it.
 1. Actually, to be fair, Pete did tell me in private that he agreed to a suggestion of mine that we could simply disregard topic privacy at query time, and just hide unreachable topics at display time, to save processing time at the cost of getting empty pages if you stumble upon a series of hidden topics. I'm not going to do it this way, though; I'll only do it if privacy can provably be shown as having a real impact on overall forum performance.
 2. It'd be interesting to see which Wedge would be best: a Wedge without my code, or a Wedge without his. They would still both be very good, I have to say!
2308
Features / Re: New revs - Public comments
« on November 11th, 2013, 09:31 PM »
Yes, that's it.

The Welcome version has "Welcome, hacker!" or something along that line, it's a very limited file. I made Home for Wedge.org, and ended up straightening it out so that it'd remain 'usable' for a default homepage. But then I made a 'fork' of that file, and messed it up in here because I'd renamed it 'Home-Wedge', when I need to have a matching function name in the source files, and dashes aren't accepted in function names. Hence the 5-10 minutes of downtime in here earlier. ;)
2309
Features / Re: On Mobile Theme...
« on November 11th, 2013, 08:56 PM »
Yup... As I said, since I was able to reproduce on my iPod Touch with iOS 5.1, from now on I won't have to rely on others to tell me about whether it's okay or not.

Unfortunately, as I pointed out yesterday, I'm in a (sad) position where I have to consider disabling user menus entirely for iOS users.
2310
Features / Re: New revs
« on November 11th, 2013, 08:36 PM »
rev 2316
 4 files changed, 61 insertions(+), 55 deletions(-), 2.31 KiB

* Tweaked Wilde -- headers, and added flexboxing on the linktree, for mobile use mostly. (Wilde/extra.css)

* Updated Home template to be more... generic, really. It was tailored for wedge.org, and didn't have a reason to be that way in the repo. While the 'default' is still Welcome, I'd appreciate to get feedback from users -- which one should be the default? (If Home is, then Welcome will be completely removed.) (Home.template.php, Home.language.php)