Jump to content

[Discussion] Localization (again)


Recommended Posts

I've just hit a problem with a sandhi effect - I don't know how to resolve this elegantly.

Convert %(wall)s to %(gate)s

Dèan %(gate)s dhen %(wall)s

Now, "gate" ="geata" and "wall" = balla, which will make this:

Dèan geata dhen balla

But what I need is:

Dèan geata dhen bhalla

I guess if there aren't too many types of walls, we could separate the strings and get rid of the place holder?

Link to comment
Share on other sites

I've just hit a problem with a sandhi effect - I don't know how to resolve this elegantly.

Convert %(wall)s to %(gate)s

Dèan %(gate)s dhen %(wall)s

Now, "gate" ="geata" and "wall" = balla, which will make this:

But what I need is:

I guess if there aren't too many types of walls, we could separate the strings and get rid of the place holder?

I will look into it this afternoon, thanks for reporting!

Link to comment
Share on other sites

It is. You can always leave the placeholder string untranslated or construct it in some way differently from the other strings so that, even if player might not notice the different because it still makes sense in your language, you do know that it is different.

Anyway, there should not be surprises here in the short term.

Link to comment
Share on other sites

I just stumbled upon another translation thread in the Modification forum, only because it was the last reply and it caught my eye in the forum index. What does everybody think about having a i18n/l10n forum and move all the relevant threads there? This would help attract translators and also make the translation/string fixing job a lot easier. I think if could be a sub-forum in the dev forum.

What do you guys think?

  • Like 1
Link to comment
Share on other sites

I would agree, although I'm not sure if we should not wait until the internationalization actually reaches the game. It's not just opening a forum, I would also need to write in the wiki extensive documentation both for developers and translators, and link it from some kind of sticky topic. And writing that documentation does not make sense in the first place if the internationalization is not in place, as the underlyign system may change when the development team reviews my patch.

Link to comment
Share on other sites

  • 2 weeks later...

Yes, the official documentation will have to wait, but I think we could start having a separate froum already. A sticky with instructions can always be added to that forum later IMHO.

I do think the separate forum can wait until the code is added to the game, however, in the mean time I've added the tag "translation" to the relevant topics I could find to make it easier to distinguish them from the other topics (and also enabled tagging for users in the Community Members group - i.e. everyone who's registered and has posted at least five posts).

Link to comment
Share on other sites

Gallaecio, as far as I can tell I cloned things properly (and this was after your changes, so they ought to be included), but I still seem to get the same errors :P (For reference, these are the old errors: http://pastebin.com/RsvaTmBj )

1>------ Build started: Project: atlas, Configuration: Release Win32 ------
2>------ Build started: Project: simulation2, Configuration: Release Win32 ------
1> atlas.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\atlas.lib
2> simulation2.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\simulation2.lib
3>------ Build started: Project: mocks_test, Configuration: Release Win32 ------
3> mocks_test.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\mocks_test.lib
4>------ Build started: Project: mocks_real, Configuration: Release Win32 ------
5>------ Build started: Project: mongoose, Configuration: Release Win32 ------
4> mocks_real.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\mocks_real.lib
5> mongoose.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\mongoose.lib
6>------ Build started: Project: lowlevel, Configuration: Release Win32 ------
6> lowlevel.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\lowlevel.lib
7>------ Build started: Project: gui, Configuration: Release Win32 ------
8>------ Build started: Project: scriptinterface, Configuration: Release Win32 ------
8> scriptinterface.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\scriptinterface.lib
7> CGUI.cpp
9>------ Build started: Project: graphics, Configuration: Release Win32 ------
7>D:\0ad\source\lib/external_libraries/icu.h(26): fatal error C1083: Cannot open include file: 'unicode/smpdtfmt.h': No such file or directory
7> GUIRenderer.cpp
7>D:\0ad\source\lib/external_libraries/icu.h(26): fatal error C1083: Cannot open include file: 'unicode/smpdtfmt.h': No such file or directory
7> ScriptFunctions.cpp
9> graphics.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\graphics.lib
10>------ Build started: Project: engine, Configuration: Release Win32 ------
10> CLogger.cpp
7>D:\0ad\source\lib/external_libraries/icu.h(26): fatal error C1083: Cannot open include file: 'unicode/smpdtfmt.h': No such file or directory
7> L10n.cpp
7>..\..\..\source\i18n\L10n.cpp(23): warning C4627: '#include "i18n/L10n.h"': skipped when looking for precompiled header use
7> Add directive to 'precompiled.h' or rebuild precompiled header
7>..\..\..\source\i18n\L10n.cpp(27): warning C4627: '#include ': skipped when looking for precompiled header use
7> Add directive to 'precompiled.h' or rebuild precompiled header
7>..\..\..\source\i18n\L10n.cpp(29): warning C4627: '#include "lib/file/file_system.h"': skipped when looking for precompiled header use
7> Add directive to 'precompiled.h' or rebuild precompiled header
7>..\..\..\source\i18n\L10n.cpp(30): warning C4627: '#include "lib/utf8.h"': skipped when looking for precompiled header use
7> Add directive to 'precompiled.h' or rebuild precompiled header
7>..\..\..\source\i18n\L10n.cpp(32): warning C4627: '#include "ps/CLogger.h"': skipped when looking for precompiled header use
7> Add directive to 'precompiled.h' or rebuild precompiled header
7>..\..\..\source\i18n\L10n.cpp(33): warning C4627: '#include "ps/ConfigDB.h"': skipped when looking for precompiled header use
7> Add directive to 'precompiled.h' or rebuild precompiled header
7>..\..\..\source\i18n\L10n.cpp(34): warning C4627: '#include "ps/Filesystem.h"': skipped when looking for precompiled header use
7> Add directive to 'precompiled.h' or rebuild precompiled header
7>..\..\..\source\i18n\L10n.cpp(379): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "precompiled.h"' to your source?
7> Generating Code...
10>D:\0ad\source\lib/external_libraries/icu.h(26): fatal error C1083: Cannot open include file: 'unicode/smpdtfmt.h': No such file or directory
11>------ Build started: Project: network, Configuration: Release Win32 ------
10> SavedGame.cpp
11> network.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\network.lib
12>------ Build started: Project: Collada, Configuration: Release Win32 ------
12> Collada.vcxproj -> D:\0ad\build\workspaces\vc2010\..\..\..\binaries\system\Collada.dll
10>D:\0ad\source\lib/external_libraries/icu.h(26): fatal error C1083: Cannot open include file: 'unicode/smpdtfmt.h': No such file or directory
10> L10n.cpp
10>..\..\..\source\i18n\L10n.cpp(23): warning C4627: '#include "i18n/L10n.h"': skipped when looking for precompiled header use
10> Add directive to 'precompiled.h' or rebuild precompiled header
10>..\..\..\source\i18n\L10n.cpp(27): warning C4627: '#include ': skipped when looking for precompiled header use
10> Add directive to 'precompiled.h' or rebuild precompiled header
10>..\..\..\source\i18n\L10n.cpp(29): warning C4627: '#include "lib/file/file_system.h"': skipped when looking for precompiled header use
10> Add directive to 'precompiled.h' or rebuild precompiled header
10>..\..\..\source\i18n\L10n.cpp(30): warning C4627: '#include "lib/utf8.h"': skipped when looking for precompiled header use
10> Add directive to 'precompiled.h' or rebuild precompiled header
10>..\..\..\source\i18n\L10n.cpp(32): warning C4627: '#include "ps/CLogger.h"': skipped when looking for precompiled header use
10> Add directive to 'precompiled.h' or rebuild precompiled header
10>..\..\..\source\i18n\L10n.cpp(33): warning C4627: '#include "ps/ConfigDB.h"': skipped when looking for precompiled header use
10> Add directive to 'precompiled.h' or rebuild precompiled header
10>..\..\..\source\i18n\L10n.cpp(34): warning C4627: '#include "ps/Filesystem.h"': skipped when looking for precompiled header use
10> Add directive to 'precompiled.h' or rebuild precompiled header
10>..\..\..\source\i18n\L10n.cpp(379): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "precompiled.h"' to your source?
10> Generating Code...
13>------ Build started: Project: test, Configuration: Release Win32 ------
14>------ Build started: Project: pyrogenesis, Configuration: Release Win32 ------
14>LINK : fatal error LNK1181: cannot open input file 'tinygettext.lib'
13> test_root.cpp
13>LINK : fatal error LNK1181: cannot open input file '..\..\..\binaries\system\engine.lib'
========== Build: 10 succeeded, 4 failed, 0 up-to-date, 0 skipped ==========

Please let me know if there's anything I can change/test, but I don't get any further tonight, so I'll leave this here for tomorrow.

And again, for completeness sake, I'm compiling on Windows 7, using Microsoft Visual C++ 2010 Express. And I did run update-workspaces.bat before (well since it was from the clone I didn't have any choice as I needed to have the build files generated, but my main point is that perhaps you have some additional step on your OS that's just not included in the .bat file?).

Link to comment
Share on other sites

It is failing to find the ICU header files. Where do you have them?

In Linux libicu is installed system wide, so it “just works”, gcc finds the files. I’m guessing in MSVS something else is necessary.

Ah, it is that. I thought it might be something else since there are other things mentioned. I'll take a closer look at how to do that before bothering you any more :)

Link to comment
Share on other sites

<Philip`> Gallaecio: (You need to add stuff in extern_libs4.lua/premake4.lua to make it add those directories automatically in the relevant projects)

The offending code must be:

	icu = {		compile_settings = function()			if os.is("windows") then				add_default_include_paths("u")			end		end,		link_settings = function()			if os.is("windows") then				add_default_lib_paths("icu")			end			add_default_links({				win_names  = { "icu" },				unix_names = { "icui18n", "icuuc" },			})		end,	},
Edited by Gallaecio
Link to comment
Share on other sites

I've just joined the Portuguese translating team on Transifex.

Could someone explain me a little better how does the coordination work? For example, if I find a mistake, am I able to simply edit what others have already translated? Or is every modification subject to discussion? What happens when two people disagree on the best translation?

Thanks for your help!

Edited by Undo
Link to comment
Share on other sites

  • If you find a mistake, you can simply fix it.
  • If you are not sure if it was a mistake or was done on purpose, talk to the person who did it.
  • If two people disagree, either get a third, or see what other projects (e.g. KDE, GNOME) or games did and agree on using the most widespread approach.
  • In case of unresolvable conflict, reviewer triumphs over translator, coordinator triumphs over reviewer, 0 A.D. team triumphs over coordinator. It should never get to this, though.
Link to comment
Share on other sites

Can't it be argued that since people are modifying CC-BY-SA content (the English text) their translations will have to be CC-BY-SA automatically? Either way, I'm all for asking everyone to release the translations under that license. Better to be extra careful than the opposite :)

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

A problem with a recently added string (which I'm not sure here is the right place to ask about):

string #2890 on Transifex "second"/"%(time)s seconds" contains a pair not only different in pluralization, but in an additional variable.

This makes translation unable for non-plural languages, such as Japanese, because Transifex doesn't allow them to separate.

Is it solvable by changing the original string table or something?

  • Like 1
Link to comment
Share on other sites

This is the right place to ask. The string is

%(time)s seconds

so you can translate it into Japanese without any problems. Use whatever form you use after numbers and keep the place holder.

This is more of a problem for languages like mine that have more than one form, but a pattern different from English. Eventually, this string should be fetched with ngettext. I don't remember if our i18n system can do that already.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...