Fink, Mac Ports...


If you want to install Fink on Leopard, you'll need to go to the source release page because There is not currently a binary release for you. (Quote from the download page).

Download the package and follow the instructions found in INSTALL.html.

If you get a message like:

Use of uninitialized value in string ne at /sw/lib/perl5/Fink/ line 1579.

like that happened to me after I wanted to install a package, run:

fink selfupdate-rsync

and that will fix it. It looks like somebody run into the same problem on the Fink user list.

The list of packages can be found here.

Mac Ports

MacPorts has been updated to version 1.6 recently and the web site also looks like it has been updated. The install procedure for Leopart users is straightforward. Just click on the "Installing Mac Ports" and follow the instructions.

The list of available ports is here.

Learn Cocoa !

For the readers who have too much free time during the holiday, what about starting to learn programming applications the easy way ?

And I do mean easy, like not a single line of code written ! Yes, creating applications for your favorite machine can be that easy.

Scott Stevenson, the writer behind has updated his "Learn Cocoa" tutorial for Leopard. The old Tiger version is still available for those of you who have not updated your OS yet.

You'll need to install the developer tools that come with your OSX DVD and for the rest, just follow the tutorial. It is not only amazingly well written, it is also beautiful.

The Tiger version has a sequel (Learn Cocoa II) that is not yet updated for Leopard, but you should be able to make sense of most of it since it is mostly an introduction to Objective-C in the context of Cocoa applications.

Comments regarding the updated contents and Scott's replies are very useful too, in case you run into problems.

"Open With" too many applications...

All this started a few weeks ago, and it is most probably related to Leopard's Time Machine. It may be related to other things too but then I have no idea what they are. The result is that you end up with duplicates of all your applications popping up here and there, first in the SpotLight result window, then in Mail, when you right-click on an attachment, in Finder too...

Sometimes you launch the backup instead of the original, and you realize when the backup disks starts to scramble like crazy...

Eventually, I found a solution. A little drastic, and maybe it was not all necessary, but it also contributed to rationalize my backup procedures.


1) Time Machine copied _all_ my disk to an external backup disk
2) I had Sync!Sync!Sync! do an extra daily backup of my whole home hierarchy (including all the "user space" applications)
3) I had Spotlight index everything

What I wanted was Spotlight indexing everything _but_ the applications.

The problem was that the Privacy setting of SpotLight did not allow for the selection of a subfolder in the Time Machine backup (like Applications, for ex).


1) Time Machine copies everything but the system Application folder, the user Application folder, the whole Developer folder and the Download folder.
2) Sync!Sync!Sync! does an extra daily backup of my whole home hierarchy, including the user space Application folder
3) Sync!Sync!Sync! does also a daily backup of the system's Application folder
4) I have Spotlight index everything (including the TimeMachine backup, of course) but the Sync!Sync!Sync! backups where all the Application duplicates are now.

I have also reindexed Spotlight using the following command in Terminal:

 $ sudo mdutil -Es / /Volumes/backup_disk_name/

And I have rebuilt the LaunchServices database, the one that contains all the "knowledge" about which application is supposed to launch which file, with the following command, also in Terminal:

 $ /System/Library/Frameworks/CoreServices.framework/\
-kill -r -domain local -domain system -domain user

SInce the whole "recipe" is based on saving applications outside Time Machine, I also had to erase all the data Time Machine had accumulated for a month... Setting Time Machine to not save /Applications from any day does not remove /Applications from the previous days backup sets... There may be smarter ways to do that, but I thought that with my already existing extra daily backup I was on the safe side.

Now, I have much saner "Open With" drop down lists when I right-click a file with my mouse...

NeoOffice 2.2.2 Patch 5 and 6, OSX Security Update (and its own update), more QuickLook sites

NeoOffice 2.2.2 patch 5, then 6

The patch fixes a regression introduced in the previous patch and expands Asian text input and layout enhancements to include Chinese, Japanese, and Korean punctuation.


It seems patch 5 introduced regressions in the layout enhancements for CJK punctuation and path 6 specifically removed all the new code introduced by patch 5.

OSX Security Update 2007-009

For OSX 10.5.1 and 10.4.11.
Available from Software Update (under the Apple menu) or from the Apple Donwload page.

Details are here.


Apple released an update to that security update a few days later. It seems the first update introduced a number of new crashes in Safari...


Two sites dedicated to QuickLook plugins.

It looks like the number of domain names that include "quick", "look", and "plugin" is decreasing... and

I have a preference for the second in terms of visibility and design.

Paperless office, PDF, XML, Zip...

From the Mac Dev Center, "My paperless office" by Gordon Meyer.

Gordon writes about how he used a Fujitsu ScanSnap scanner to archive all his paper documents to digital form. He also mentions DevonThink, a digital document managing system, and 2 PDF utilities: Skim, a PDF reader and note taker for OSX released under the Modified BSD License, and hence Free software, and PDFPen, a tool to organize and overwrite PDFs.

Considering the Leopard version of Preview, it looks like Skim as well as PDFPen are becoming obsolete, as some comments seem to confirm...

The other day there was a link on Slashdot pointing to Jim King's "Inside PDF" blog, about the fact that PDF 1.7 was becoming an ISO standard.

I've been reading a number of Jim's posts and here are a few that may interest some of you. They are all a little theoretical but give very interesting insights on a number of existing major documentation formats.

Quotes from the respective pages.

PDF by Design

I named this blog "Inside PDF" because I anticipated telling you a lot about PDF technology – what is inside of a PDF file and why. I have spent most of the time so far talking about PDF and standards. So, I thought it was about time to do an entry about PDF itself. I believe that PDF has been so successful because of the caldron out of which it was brewed. By 1990 Adobe was quite successful with PostScript. By then we had helped over 60 other companies make printers, image setters, and other imaging devices that used PostScript. We had also shipped Display PostScript and the Steve Jobs NeXT machine was a computer whose operating system's imaging model was Display PostScript. So Adobe had had considerable experience in displaying documents on a screen...

XML Documents

Today I hope to tie together two previous blogs about OOXML and about XML For ....

I am sure you have often heard the term “XML Document.”  I hope you realized that that term is nearly meaningless just like the term “XML.”  We should never use either in polite conversation. Let me tell you some of the totally different uses for the term “XML Document” which render it a useless term, and maybe you will agree with me to banish it from our vocabularies...

Archiving Documents

Archiving is a rather loaded word since doing it can be a widely varying activity. In many situations, archiving PDF files is a very good solution. In fact it was so attractive to some US Government agencies that they encouraged their personnel to work on an ISO committee/working group to define a special subset of PDF called PDF/A that meets their needs better than plain old PDF might...

ZIP Archives and Portable Directories

This is a topic that is dear to my heart and I would love to spur some interest in creating an open source project or something like that. Since about 1999 I have been talking to my colleagues about a concept that I call "portable directories." It is a simple idea once you "get it."

File systems, organized around the notion of directories or folders in which to collect files and other directories, have been the staple for how we save computer material on our hard drives, data CDs and DVDs, etc. I suppose it had its invention from an analogy with a file cabinet, but on the computer we can nest folders inside folders to any depth, something hard to do with real physical folders...

Automation on the Mac ! - Python

An Automator action "Run Python script" is provided by

That comes in addition to the already existing "Run AplleScript" and "Run Shell Script" provided by Apple.

This Automator action is Free Software, released under the Modified BSD License.

Apple Java 1.4 and 1.5 Update for OSX 10.4.10 and later...

Released yesterday: Java for Mac OS X 10.4, Release 6.

Make sure you don't get a version number wrong...

From the page:
Java for Mac OS X 10.4, Release 6 delivers improved reliability and compatibility for Java SE 5.0 and Java 1.4 on Mac OS X 10.4.10 and later. This release updates J2SE 5.0 to version 1.5.0_13 and Java 1.4 to version 1.4.2_16.

The release notes are here.

Happy Holiday season !

Santa Claus is coming to town !


Thanks to Jost Zetzsche and his Tool Kit Newsletter where a link to this study (441 kb PDF) was made available.

The 1.6 mb presentation file that comes with it is also very interesting.

A very thorough study on current QA tools that, of course, focuses on Windows tools and for good reason.

Excerpts from the document:

As expected, most of the respondents (141 or 86.5%) represented translation/localisation service provider companies while a few (more specifically, 11 people) were from service buyer side and 2 were software developer representatives. 3.07% of other organisations were consulting and academic institutions, and one respondent reported his organisation to be multilingual quality assurance service provider.


The most popular operating system is Microsoft Windows, and 62.58% of respondents confirm their companies work only in MS Windows with no other OS11’s. Users of both Windows and MacOS who follow Windows users comprise only 19.35%. Users of three OS’s (Windows, MacOS and Unix/Linux) account for approx. 9%, and those who work under Windows and Linux comprise 7.1% of all respondents. 0.65% (1 respondent per each category) work only in MacOS, Unix/Linux and other (medical hardware) OS. So, the amount of translation professionals who never uses Windows was below 2%.


After SDL/Trados merger, SDL translation memory tools are indeed prevailing. Almost 60% of respondents use Trados and/or SDLX as their translation memory solution. Star Tranist (11.11%) is the third popular TM according to the feedback, and Wordfast and Déjà Vu account for 9.8% and 7.84% respectively. Other tools mentioned were across, Idiom, Logoport, MemoQ, Lingotek, Heartsome, MulitTrans, OmegaT, WordFischer and proprietary tools. Many respondents also named Passolo, Catalyst, RC-WinTrans, Helium, LocStudio and other localisation tools which, however, are beyond the scope of the paper. 4.9% of the respondents stated they don’t use any translation memory tool at all.

NeoOffice 2.2.2 Patch 4

NeoOffice 2.2.2 Patch 4 has just been released.

It comes with (from the announcement):

  • Improved Microsoft 2007 file handling
  • Improved Asian text input and layout
  • Closed a security hole in NeoOffice Base's underlying HSQLDB database engine

Patch 4 can be downloaded from the following URL: localization: an easy way to deal with .sdf files

What are .sdf files ?

A few days ago I wrote about 2.4 localization update.

For some reason related to the way SUN manages the UI/Help strings, the translation source file comes in a weird format: all the XML "<" and ">" etc are escaped with "\" and the file structure comes as a set of 2 lines pairs, the first line being the en-US original and the second line a placeholder for the target string.

This placeholder contains sometimes the en-US string and sometimes a close approximate of what would be the translation of the source string in the target language. All this is nicely embedded into a lot of meta information that makes the file impossible to parse with normal human senses...

Here is an example (without the meta information):

String in the .sdf:
\<ahelp hid=\".\" visibility=\"hidden\"\>something in the .sdf\</ahelp\>

(.sdf is the extension SUN has created to name the format)

SUN also provides translators with TMX files of the whole UI/Help for a number of languages (de, es, fr, hu, it, ja, ko, nl, pl, pt-BR, pt, ru, sv, zh-CN, zh-TW, at the time of this writting).

The TMX seem to have been created not from the original XML (with nicely encapsulating TMX 1.4 level2 tags) but from the funky .sdf file. Which means that all the original XML tags are found escaped as per the .sdf, alongside the translatable contents...

So the above string would be exactly the same in the TMX:
\<ahelp hid=\".\" visibility=\"hidden\"\>something in the .tmx\</ahelp\>

How to translate that ?

So, how to practically translate such files while making use of the TMX data ?

The no brainer way...

Edit the .sdf file directly, possibly after renaming it to .csv and importing it into, where all the {tab} separated meta information fields will nicely fill their own column and leave the translatable contents on its own...

It is not exactly translator friendly... But with a little playing with the column width you'll manage to have only the translatable parts displayed...

This procedure allows translators to separately (and manually) do searches in the TMX or the glossary (Sun Gloss) and to use the matched contents directly without having to play with the "\" too much.

It is not very practical because the TMX data is embedded in plenty of XML tags and the result is thus not exactly pretty...

The PO way

The PO way is not the best way to leverage the TMX contents. It also requires translators quite some editing when wanting to use TMX matches... Still, it seems to be the most common way to localize

PO files are provided by the team coordinators, they are created with the Translator's Toolkit's oo2po tool.

The above .sdf contents would be converted like this:

\\<ahelp hid=\\\".\\\" visibility=\\"hidden\\\"\\>something in the .po\\</ahelp\\>

The reason is that oo2po wants to be smart and adds an extra layer of escape characters (the ugly and ubiquitous "\"). And as you see above, the number of added "\" depends on what has been escaped: a simple [\] will become [\\], but [\"] will become [\\\"] because PO wants to escape both [\] and ["] with another [\]...

Now, it does not take much to see that matching that against the TMX data will be a problem. Even if the translator uses a smart PO editor to refer to the TMX there will still be a need to add all the ugly extra "\" that oo2po has added to the .sdf contents.

Basically, oo2po adds a useless extra layer of complexity to an already complex process that also happens to render TMX matching pretty much useless.

The smart way that also happens to really ease the translator's work

Here we are. Now, to keep the post to a reasonable length, let me refer you to the mail I just wrote to the OOo-l10n-dev list where everything is explained.

The idea is basically that, since the TMX matches the structure of the .sdf, then it is easier to work from the .sdf. But to make the TMX really useful it is necessary to make the .sdf contents easily handled by a tool that will also make full use of the TMX contents.

OmegaT for example...

Within OmegaT you can have automatic TMX and glossary (Sun Gloss export) matching, automatic file encoding handling, automatic file naming handling etc...

So, there is a very small Java utility sdf2txt.jar that basically extracts all the translatable contents of the .sdf file and outputs it as a "key=value" format that OmegaT can parse natively.

From there you see what needs to be done...


  • put the extracted files in the /source/ folder of your newly created OmegaT translation project,

  • put the TMXs in /tm/,

  • put the glossary files (if any) in /glossary/,

  • load the project...

and enjoy translating in a Nice and Friendly to the translator Professional yet Free Computer Aided Translation tool....

Another smart but regexpy way...

Before using the CSV trick above ensure that the line pairs are converted so that the 2 lines are put on one line.

To do that in a text editor that supports regular expressions, search for:

replace with:

Now that your .sdf is "linearized", change its name to .csv and open it in OpenOffice by using "tab" as field separator and "nothing" as text delimiter.

The tabs in the original .sdf create a number of columns from where you just need to copy the column with the en-US translatable contents.

Paste that into a text file with the ".utf8" extension, load into OmegaT... Et voilà !

You'll have to paste the contents of the translated file into the target part of the CSV file, convert back to a 2 lines pair set.

The pattern we need to find to revert the 1 line blocks to 2 line blocks is something like:

(something)(followed by lots of en-US stuff)a tab(the same something)(followed by lots of translated stuff)


and we need to replace it with:

Make sure there are no mistakes (if there are any they are likely to appear right in the first lines).

Now you should have your 2 lines block.

Rename the file to .sdf and deliver...


There are plenty of ways to deal with's localization files. But to make sure that the contents of the TMX can be fully leveraged (and with close to 70,000 segments, it would be a waste if it were not) there is a real need to avoid the PO files created by oo2po. Problem is, anything that involves the .sdf files directly requires a little bit of massaging...

Ideally, SUN would provide XLIFF files that are created directly from the original XML files (and with empty targets), as well as properly encapsulating TMX files...


sdf2txt.jar has been created by Alex Buloichik. The word count included in the output may not be 100% exact but the extraction/merge works, which is what matters for now. The code is within the Jar file and the whole thing is GPLed. Thank you very much Alex.

TMX, XLIFF, etc...

Just to make sure you have them right at hand:


Localization Industry Standards Association

LISA's TMX page

LISA's standards page

LISA's Globalization Insider

LISA is also working on SRX, the segmentation exchange standard and TBX, the terminology exchange standard.


Organization for the Advancement of Structured Information Standards


OASIS' XML Daily Newslink

OASIS' Standards page (you may want to take a look at DocBook and OpenDocument)


World Wide Web Consortium

W3C's Internationalization activity page

W3C's Internationalization Tag Set page

W3C's Translated articles page


Web Hypertext Application Technology Working Group

And while we are at it, something that is likely to appear on your desktops earlier than you think, HTML 5.0

La traducción del software libre. Por Juan Rafael Fernández García.

A series of 5 articles, in Spanish, that describe everything you need to know to localize Free Software, and software with free tools too. Most of the tools described in the paper are available for the Mac.

From Juan Rafael Fernández García.

  1. Una oPOrtunidad de colaborar
    Aunque no seamos programadores, hay una gran oportunidad de contribuir en los campos de la documentación y de la traducción. Por una vez querer es poder, ¿queremos ser miembros activos de la comunidad?

  2. Los problemas de PO y el abrazo fuerte En la primera entrega de esta serie hemos hablado de la tecnología gettext; ahora es el momento de resumir sus ventajas pero también de señalar sus defectos. Qué triste sería el artículo si no pudiéramos hablar también de las soluciones, de las alternativas...

  3. Memorias compartidas Hablábamos en la segunda entrega del momento fácil de la enumeración destructiva de problemas. Es el momento de enfrentarnos a los que tenían con ver con la necesidad de compartir esfuerzos, herramientas y resultados. Vamos a examinar las respuestas.

  4. ¿El momento de cambiar de herramientas? No podemos cerrar el estudio sin examinar las propuestas de la industria de la traducción: la especificación XLIFF y sus herramientas. ¿Está el software libre a la altura?

  5. Cerrando el ciclo El objetivo inmediato de esta serie de artículos es lograr la incorporación de voluntarios a los equipos de traducción, vamos a conocer estos equipos un poquito más de cerca.

TMX Editor, locale4j, File2XLIFF4j

A bunch of new exotic names for Mac...

TMX Editor

TMX Editor is a Java Swing GUI built for working with files supporting the TMX localization standard.
I found the application yesterday and tried to open an OmegaT tmx file just to see what the tool was able to do and, well, nothing happened. I sent a mail to Matthew Gagne, the project manager and received this answer a few minutes ago:

It seems as if this problem relates to the version of the TMX standard that is implemented currently. lists 1.4b as being the official revision level. The editor, however implements the newest TMX 2.0 draft standard using the locale4j library. This was a decision made when we began localization of our other projects here. Unfortunately there seems to be compatibility issues between the two TMX formats (1.4b vs 2.0).

Since TMX 2.0 is unlikely to be in widespread use before a while, Matthew also mentioned that he'd love if Java developers could join the project to work on backward compatibility with the current TMX version.

locale4j is the library that is at the core of TMX Editor. It currently works only with TMX 2.0 data.


Both TMX Editor and locale4j are licensed under the Mozilla 1.1 License, which is a Free Software License not compatible with the GPL.


File2XLIFF4j is quite another beast: File2XLIFF4j is a java based library for converting files to the XLIFF standard. The overview shows that the library is not exactly for the normal translator, but it is still important to know that such conversion libraries exist.

Interesting to see that the overview author, Weldon Whipple, has a "lingotek" email.


File2XLIFF4j is licensed under the GPL.

CEDICT for Apple Dictionary 1.0

One more dictionary for

Regarding the attempts at converting edict to the format (see previous posts), well they have been successful, but the issue is how to distribute the data ? The solution Prof. Breen has chosen is to make the XML data available from the site, along with a how-to that explains how to build the data. This how-to is currently being written and hopefully, everything will be ready around Christmas...

Looking for a QuickLook plugin ?

OSX Network

OSX Network is provided by Jeff Biggus and has a wonderful list of applications for OSX. OSX Network is also known for its extensive OSX development articles listing, to be found here.
Here is the page that lists all the registered QuickLook plugins. At the time of this writing, you can find plugins for the following file formats:

  • Brainsight QuickLook Generator - Supports medical image file formats

  • Colorxml-QuickLook - XML QuickLook

  • EPSQLPlugIn - EPS files

  • flv.qlgenerateo - Flash FLV files

  • Folder.qlgenerator - folder contents

  • illust.qlgenerator - Illustrator files

  • Mac2SpecQLPlugin - Spectrum SCR file

  • QLEnscript - Programming code

  • Quickcomic - Zip/cbz file

  • QuickLook Script - AppleScript source

  • TextMate in QuickLook - Renders QuickLook previews using TextMate highlighting

  • Zip.qlgenerator - zip file contents

  • ZipQuickLook - Zip file

Keep the URL in your bookmarks to check the updates.

Another site that has a list of QuickLook plugins (the two overlap a lot) is The page also has screenshots. Here again, the list seems to be updated quite often.


And if you want to create you own plugin, here is Apple's developer docs.

Apple does not seem to have a section dedicated to QL plugins on its download page...

Nice Xmas present...

It is not a Mac, but the machine has generated a huge lot of buzz since its inception.

The XO, also known as the OLPC is there for you to get !

Here are various links that actually tell something about the machine and the concept...

XO, the next lisp machine ?

Ivan Krstic's Google Tech Talk

One Laptop Per Child (New Version), Reviewed by 12-Year-Old

And of course, Alan Kay's keynote at EuroPython 2006 part 1, part 2 and part 3, with a summary by Guido van Rossum

Computing does not have to be dumb !

References to emails in other applications

DaringFireball has an article on how emails can be linked to in other applications.

Interesting if you need to keep track of clients' mails for a given project. John Gruber even published an Applescript that makes this feature even easier to use.

Maxprograms is back !

About Maxprograms

Maxprograms is manned by Rodolfo Raya, of Heartsome and XLIFF fame. Maxprograms used to provide a few free Java utilites that were later included in Heartsome's Translation suite. Rodolfo quit Hearstome a few weeks ago and decided to put all his utilities back on Maxprograms' site.

The tools

The free tools that are now distributed directly from his site are:


TMXValidator checks your documents against TMX DTD and also verifies if they follow the requiremenst described in TMX specifications.


TBXMaker converts glossaries stored in CSV (Comma Separated Values) to TBX (TermBase eXchange) format.


CSVConverter converts glossaries stored in CSV (Comma Separated Values) to TMX (Translation Memory eXchange) standard.

Java Properties Viewer

A tool specially created for viewing translated Java .properties files comprising languages not supported by the ISO 8859-1 character encoding.

MARTIF to TBX Converter

A program designed to convert glossaries in MARTIF format, also known as ISO 12200, to TBX format.


RTFCleaner removes hidden text and Trados/Wordfast markup from translated Tagged RTF files.

It is very nice to see that they are now available without having to download the full HTS package.


The utilities require Java 1.5 or better. Which means that for the time being they can be used only on OSX 10.4.8 or better. See Apple's download page if you only have Java 1.4. Java 1.5 is the default version on Leopard.

Since the utilities were included with Heartsome's Translation Suite they can be put to even better use in a workflow that involves HTS.

Free software ?

Currently, only TMXValidator has been released as a free to use source package. The license Maxprograms used is the Eclipse Plugin License v. 1.0. This makes TMXValidator free (as in free speech) software, but the EPL v. 1.0 not being compatible with the GPL it won't be possible to use the source code for inclusion in GPLed products.

All the other utilities are not (yet ?) available as free software, they are just free as in "free beer".

Anyway, thank you very much for your work Rodolfo ! And good luck to Maxprograms !

Kazunari Hirano interview

Kazunari Hirano is a long time contributor to the Japanese community and has recently been involved with Open Solaris and its localization community.

He was recently interviewed by both Reiko Saito, Japanese Language lead at SUN for Solaris, Java and Sun Java Enterprise System and by Jim Grisanzio, Sr. Program Manager, OpenSolaris Engineering at Sun.

Reiko is also very active in the Japanese localization community where she helps us a lot.

The interview has been conducted in Japanese and English and is available on both Reiko's blog and Jim's.

Apples and Windows...

Just like with oranges, apples and windows do not compare.

Still, if you really need to have both on the same machine, there are ways to do that.

As a minimal introduction, check Bill Clementson's article on the subject.

Then, if you really need to stay on the Mac with the occasional Windows application, you may want to take a look at a few recent threads on the MacLingua forum (subscription required), where a few CAT tools are discussed in the context of Windows on Mac.

Now, if you want to dream a little, check this article on Ars Technica or this thread (for geeks) on the Wine HQ mailing lists...

By the way, Wine is yet another means to get Windows on your Mac. From the site:

Wine is an Open Source implementation of the Windows API on top of X, OpenGL, and Unix.

Think of Wine as a compatibility layer for running Windows programs. Wine does not require Microsoft Windows, as it is a completely free alternative implementation of the Windows API consisting of 100% non-Microsoft code, however Wine can optionally use native Windows DLLs if they are available. Wine provides both a development toolkit for porting Windows source code to Unix as well as a program loader, allowing many unmodified Windows programs to run on x86-based Unixes, including Linux, FreeBSD, Mac OS X, and Solaris.

BetterZip Quick Look Generator

Another developer has created a Quick Look plugin that accesses the contents of all types of archives:

From the site:
The currently supported archive formats are: ZIP, TAR, GZip, BZip2, ARJ, LZH, ISO, CHM, CAB, CPIO, RAR, 7-Zip, DEB, RPM, StuffIt's SIT, DiskDoubler, BinHex, and MacBinary.

The software costs $19.95 and comes with a one month free trial.

Popular posts (last 30 days):