Computer Aided Translation and Xcode - xcode

Is it somehow possible to use CAT Tools (Computer Aided Translation) like Swordfish in any senseful way to get i18n done? Copy/pasting strings is error prone and any MS Word is not exactly a pro application for translations.
Any other app/system/format that could work well with XCode for that job?

It looks like AppleGlot is such a tool I looked for. It doesn't translate, but extracts strings and allows incremental localization. It has XLIFF support (as Swordfish, mentioned above).
AppleGlot is available in the developers.apple.com area.

Related

Forth editor/customizable editor

I'm looking for an OS X editor (preferably a dedicated Forth editor, but I doubt it exists) that has/can be customized to change the font color of Forth variables, programs, etc. If not, is there any sort of workaround?
I know it's an old question, but: atom with the forth-language package. See http://atom.io/
Longer answer:
I have tried both emacs and atom on Mac OS X and both are more than adequate for editing Forth. Atom is lighter and easier to learn while maintaining many emacs-ish capabilities (cmd-shift-p in place of meta-x).
I don't have automatic indenting working in atom yet, the syntax package I found needs a little work, but this hasn't been a real problem as yet.
atom also plays well with git.
I'm using the following packages: emacs-plus, language-forth, clipboard-plus, disable-arrow-keys. The key and clipboard are for a more emacs like experience. There are more themes and color schemes than I need available, I'm using the 4-color-dark and minimal-syntax themes.
UltraEdit has a Forth syntax highlight mode. MicroProcessor Engineering have an up to date copy in there downloads page.
Look no further !!
I'm currently programming in FORTH using the 'Visual Studio Code; editor.
Has (installable) syntax-highlighting for many languages, including FORTH.
Have a try:
https://code.visualstudio.com/download
It has even automatic indenting, AND code folding!!
...and let me know if you like it like I do.
Robbert / PA3BKL
I would suggest Gedit and if you change the forth.lang in the app you can change the syntax highlighting

Converting Traditional Chinese into Simplified Chinese in Cocoa

A customer asked for a text conversion feature from traditional Chinese to simplified Chinese.
I did a little research and apparently it's the kind of thing that can be automated quite readily and Mac OS X even has a system wide service for doing this.. there seems to be something built into OS X to perform those changes, but I'm no expert at internationalization..
Does anybody know how to perform this miracle?
Best regards,
Frank
I think the functionality you requested exists inside an app that Apple shipped with OS X--I don't know of any built-in functionality.
If you are trying to implement conversion, it looks like wikimedia has some code that might do what you want, but you'll have to convert it from PHP:
http://svn.wikimedia.org/doc/classZhConverter.html
Also, it may not be just a matter of converting the characters, although that's most of it... there are also phrases that are different in mainland Chinese (simplified characters) and other places (traditional characters).

Best practices for internationalization using PyQt4

I want to add multiple language support to my application which is written in Python using PyQt4. I was looking for information on how to add multiple languages and would like to see how other people do this.
Here i read:
The PyQt behaviour is unsatisfactory and may be changed in the future.
It is recommended that QCoreApplication.translate() be used in
preference to tr() (and trUtf8()). This is guaranteed to work with
current and future versions of PyQt and makes it much easier to share
message files between Python and C++ code.
In files generated by pyuic4 i see something like:
WPopupCalendar.setWindowTitle(QtGui.QApplication.translate("WPopupCalendar", "Календарь", None, QtGui.QApplication.UnicodeUTF8))
This looks too long for me. I was thinking to make my own tr helper function which somehow would automate the process.
Also i could not find articles describing a workflow and specifics for developing multilingual apps in python with pyqt4.
Would you please advice me with some good and convenient techniques on this?
Just use tr (or trUtf8) everywhere to start with. Only bother with translate when you identify code that is affected by the issue with multiple inheritance (which could easily be never).
I would suggest you have a look at Qt's i18n overview, and the Qt Linguist Manual. They are obviously both oriented towards C++ projects, but it should give you a pretty clear idea of what's required.
For a working example, you could also download the source code of the Eric Python IDE - it's written in PyQt4, and has support for a half dozen or more languages.

Starting programming Mac OS X

I'm starting a Mac OS X app that will connect to a small website I'm currently developing.
The idea is that the app will store a number of snippets on a local database and then sync with the website whenever it can.
So my questions are:
Carbon or Cocoa?
SQLite for local storage / another solution?
Is there any decent free text-editor control with basic syntax highlighting to embed on the app?
For new projects you should use Cocoa. Carbon is only useful to port already existing apps.
Cocoa brings it's own database backend called Core Data. It's quite simple to use but at the same time really powerful.
For syntax highlighting use a NSTextField, they are really powerful in Cocoa. One can even write highly graphical applications like Pages with it. For some examples of syntax highlighting see syntax highlighting on cocoadev.
You could also have a look at how other editors do it. For example there's Smultron, which is discontinued for the moment.
If you know ruby you can try out MacRuby. This let's you use ruby with the Cocoa classes. I'm quite sure that ruby will be the second programming language for the Mac because of its similarities to Objective-C.
At this point in each product's lifecycle, there is not really any compelling reason to use Carbon.
It's a fine API, and fine applications are written using it (Photoshop, iTunes), but a 64 bit version has not been made available, and it just seems that the writing is on the wall.
If you are just learning, and you want your knowledge to transfer to new projects in the future, Cocoa all the way.
Carbon is being phased out. You should really go for Cocoa.
Cocoa has its own database solutions (a flavor of SQL I think).
Cocoa. Carbon is going the way of the dodo and is only available in 32 bits.
And Xcode is free, with lots of syntax highlighting ;)
Check out this link for info about syntax highlighting in cocoa

Pros and cons of using gettext instead of QObject.tr() for localization of PyQt4 application?

I have couple of application written in PyQt4 where I've used standard Python gettext library for internationalization and localization of GUI. It works good for me. But I've selected gettext just because I've already had knowledge and experience of gettext usage, and zero of experience with Qt4 tr() approach.
Now I'd like to better compare both approaches and understand what I'm missing by using gettext instead of QObject.tr, and does there any serious reason why I should not use gettext for Qt4/PyQt4 applications?
In my understanding advantages of using gettext are:
GNU gettext is mature and it seems to be standard de-facto in GNU/Linux world.
There is enough special editors for PO files to simplify translators work, although textual nature of PO templates makes it not strictly necessary.
There is even web services available which can be used for collaborative translations.
gettext is standard Python library, so I don't need to install anything special to use it in runtime.
It has very good support for singular/plural forms selection via ngettext().
What I see as advantages of QObject.tr():
This is native technology for Qt4/PyQt4 so maybe it will work better/faster (although I have no data to prove).
The messages to translate may have additional context information which will help translators to choose the best variants for homonym words, e.g. the english word "Letter" can be translates as "Character", "Mail" or even kind of "Paper size" depending on the actual context.
What I see as disadvantages of QObject.tr() vs gettext:
I did not found in the Qt documentation how's supported singular/plural selection there.
Qt4 TS translation template is in XML format and therefore more complex to edit without special editor (QT Linguist) and it seems there is no other third-party solutions or web services. So it would require for translators to learn new tool (if they are already familiar with PO tools).
But all the items above are not critical enough to clearly say that any tool is better of other. And I don't want to start flame war about what is better because it's very subjective. I just want to know what I missing as pros and cons of QObject.tr() vs gettext.
One simple reason to use QObject.tr() is:
It saves you the need to install gettext on Windows, making cross-platform work a bit easier.
I try to have as little binary dependencies as possible on Windows.
All have their pros and cons, but to define them more clearly you would have to define first if you're targeting a mobile environment or a desktop environment.
Within our company we use different methods simply because the ideal solution does not exist yet.
For desktop development we're using PO files simply because the buttons are not scaled and therefore text will fit.
For mobile development, the translation of a string depends on the button size which could be different on landscape and portrait devices.
So this complicates it a little because a PO file can just have 1 translation of a certain word.
So we selected XLIFF for this, so we could assign unique ID's to a string.
This is not an easy task as well, because there are no good solutions to convert .RC files to XLIFF files.
(Because current tools convert ALL strings between "" which is of course unwanted behavior).
So I wrote a converter for this task.
However, when thinking of localization, then plural forms are very important so not having this is not a good localization solution.
Therefore, I would say to go for PO gettext.
Greetings,
Floris.
At the current time, Qt does not handle plural forms when you're making use of QT_TRANSLATE_NOOP
You could add that args are managed differently...
With Gettext, we can do
_("Hello %(name)s from %(city)s") % {person.__dict__}
whereas in PyQt, we do
self.tr("Hello %1 from %2").arg(person.name).arg(person.city)

Resources