Skip to content

Commit

Permalink
Better gettext support for protocol version mismatch messages
Browse files Browse the repository at this point in the history
Previously, xgettext failed to resolve the dynamic call.
Thanks to @JakubVanek for pointing this out.
  • Loading branch information
est31 committed Oct 24, 2015
1 parent 2f19abd commit 85c6b5f
Showing 1 changed file with 22 additions and 9 deletions.
31 changes: 22 additions & 9 deletions builtin/mainmenu/common.lua
Expand Up @@ -284,17 +284,30 @@ function text2textlist(xpos,ypos,width,height,tl_name,textlen,text,transparency)
end

--------------------------------------------------------------------------------
function is_server_protocol_compat(proto_min, proto_max)
return not ((min_supp_proto > (proto_max or 24)) or (max_supp_proto < (proto_min or 13)))
function is_server_protocol_compat(server_proto_min, server_proto_max)
return not ((min_supp_proto > (server_proto_max or 24)) or (max_supp_proto < (server_proto_min or 13)))
end
--------------------------------------------------------------------------------
function is_server_protocol_compat_or_error(proto_min, proto_max)
if not is_server_protocol_compat(proto_min, proto_max) then
gamedata.errormessage = fgettext_ne("Protocol version mismatch, server " ..
((proto_min ~= proto_max) and "supports protocols between $1 and $2" or "enforces protocol version $1") ..
", we " ..
((min_supp_proto ~= max_supp_proto) and "support protocols between version $3 and $4." or "only support protocol version $3"),
proto_min or 13, proto_max or 24, min_supp_proto, max_supp_proto)
function is_server_protocol_compat_or_error(server_proto_min, server_proto_max)
if not is_server_protocol_compat(server_proto_min, server_proto_max) then
local server_prot_ver_info
local client_prot_ver_info
if server_proto_min ~= server_proto_max then
server_prot_ver_info = fgettext_ne("Server supports protocol versions between $1 and $2. ",
server_proto_min or 13, server_proto_max or 24)
else
server_prot_ver_info = fgettext_ne("Server enforces protocol version $1. ",
server_proto_min or 13)
end
if min_supp_proto ~= max_supp_proto then
client_prot_ver_info= fgettext_ne("We support protocol versions between version $1 and $2.",
min_supp_proto, max_supp_proto)
else
client_prot_ver_info = fgettext_ne("We only support protocol version $1.", min_supp_proto)
end
gamedata.errormessage = fgettext_ne("Protocol version mismatch. ")
.. server_prot_ver_info
.. client_prot_ver_info
return false
end

Expand Down

4 comments on commit 85c6b5f

@ShadowNinja
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This causes word order issues. (must be proto_mismatch, server_info, client_info)

@est31
Copy link
Contributor Author

@est31 est31 commented on 85c6b5f Oct 27, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its three different sentences, each terminated with a dot. The only thing I assume from a language is that it is split in sentences, and that different sentences can share a context.

@ShadowNinja
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@est31: No, if a language uses an ordering like (client_info, proto_mismatch, server_info) it won't work.

@est31
Copy link
Contributor Author

@est31 est31 commented on 85c6b5f Oct 27, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its proto_mismatch. server_info. client_info.. They are three distinct sentences. If it is an issue, then its no word order issue, but a sentence order issue. But I highly doubt there is any language that has rules distinct sentences. You might not catch the metrum, so there won't be a translation for LATIN_ELEGIC_DYSTICHON, but I can live with that. Do you know a language where the current order imposes problems?

Please sign in to comment.