News:

Download Pelles C here: http://www.pellesc.se

Main Menu

Pelles C in russian

Started by Dadatel, August 14, 2026, 06:29:42 PM

Previous topic - Next topic

Dadatel

so, im gonna just patch rsrc0009.dll
right now not a bit of result is done but still

if ya can help me then just idk dm me on discord:
dadatel.cs

TimoVJL

#1
Just download translation project with rsrc file from http://www.pellesc.se/ and translate it for language dll.
May the source be with you

Dadatel

well im already translating it(well if this dll is da pack or i will just fuck everything up), but still thank you
may the source be with you ;D

rubidus

#3
Hi — same situation here. I'm working on a Korean (rsrc0012.dll, ko-KR) translation of the Pelles C IDE language pack and the compiler help. I've finished a first pass of both, and what's left is review. I don't want to publish anything without Pelle's permission, though, so I sent him a forum PM(personal message) a while back. No reply yet, and he doesn't seem to log in often, so I expect he's just busy.

Does anyone know a better way to reach him — a preferred email address, or a board he follows more closely? I'd rather wait for his answer than release anything without it.

Just to be clear, this isn't a request for help — the DLL and the CHM both work on my side; the only open question is Pelle's, and it's entirely his to answer whenever he has time.

[Edit] Since this thread is about translating Pelles C, here are notes from doing the Korean one. Some of these cost us real time.

--- LANGUAGE PACK (the DLL) ---

The number in rsrc00NN is the Windows primary language ID in hex: English is LANG_ENGLISH 0x09, hence rsrc0009. Korean is 0x12, so ours is rsrc0012; Russian is 0x19, so yours would be rsrc0019. Set LANGUAGE LANG_RUSSIAN,SUBLANG_DEFAULT in the .rc, rename eng.* to your prefix, and retarget the references in the .ppj and .ppx. Leave ids.h alone.

Don't hand-edit the .rc. Extract every quoted string together with its line and column span, translate in a table, and substitute back mechanically. The file is UTF-16LE with BOM and the line structure has to survive; a spreadsheet round trip is far safer than editing 2,800 strings in place.

Then verify mechanically, on every string:
 - format specifiers (%d, %ls) — same ones, same order
 - escapes (\t, \n)
 - the accelerator & — same count, and no duplicates inside one dialog
 - file filters like "Include file (*.h)|*.h|" — the | structure and patterns
 - trailing colons, ellipses, and shortcut suffixes such as \tCtrl+X
We run this over all 2,834 strings; it catches things the eye slides past.

Watch for the same English string needing different translations in different dialogs — and the reverse. We shipped "Command line arguments:" translated two different ways in two dialogs before a check caught it. Keep the resource name and control symbol next to every string so you can tell them apart.

Finally, translated labels are usually longer than the English, and dialog controls are fixed size, so plan on checking dialogs in the IDE for clipping.

--- HELP FILE (the CHM) ---

chmls extracts, chmcmd compiles; both come with Free Pascal and script well. Microsoft's HTML Help Workshop also works.

Before translating anything, prove you can put it back: extract, reassemble unchanged, and compare byte for byte with the original. If that fails, whatever you translate afterwards sits on sand.

Cut at paragraphs, not at HTML text nodes. Our first attempt translated each text node separately, so "The <b>strcpy</b> function copies <i>src</i>." arrived as five fragments with no context, and nothing rescues that. Take the paragraph as one unit and turn inline markup into numbered placeholders, e.g. "The <g1>strcpy</g1> function copies <g2>src</g2>." — the translator keeps the count and numbering but may move them, which matters when word order differs.

Counting placeholders will not catch everything: we had one paragraph where <g1>string2</g1> came back as <g1>string1</g1>, so the wcsstr page described the wrong argument. Compare identifiers between source and translation separately.

Encoding: pages declare windows-1252. Rewrite the meta charset to your codepage and set Language= in the .hhp to match — the contents tree and the search index depend on it.

In the .hhp, don't list .hhc/.hhk under [FILES] if you already name them with Contents file= / Index file=; ours ended up stored twice. And compare your archive's internals against the original with `chmls list` before shipping.

Deduplicate: 61,793 paragraph blocks, but only 29,779 distinct. Translating each unique string once saved about 18% and made the result consistent.

Do the DLL first if you're doing both. The help names menu items constantly, and those names must read exactly as they do in your translated IDE. We found 157 places where the help had invented its own wording — correct translations, but not what the screen said.

One last thing: a finished CHM that opens blank or seems to hang is usually Windows' mark-of-the-web, not a bad build. Properties, then Unblock.

Dadatel

well i don't know but resource hacker works(but there's a lot of strings from what you've said( ) but i will try da things that you've said

thanks