diff --git a/Moose Development/Moose/Ops/CTLD.lua b/Moose Development/Moose/Ops/CTLD.lua index 22ef5882f..bead68204 100644 --- a/Moose Development/Moose/Ops/CTLD.lua +++ b/Moose Development/Moose/Ops/CTLD.lua @@ -1483,6 +1483,7 @@ end -- @return #CTLD self function CTLD:_InitLocalization() self:T(self.lid.."_InitLocalization") + self.locale = string.lower(tostring(self.locale or "en")) self.gettext = TEXTANDSOUND:New("CTLD","en") -- Core.TextAndSound#TEXTANDSOUND for locale,table in pairs(self.Messages) do local Locale = string.lower(tostring(locale)) @@ -1495,6 +1496,20 @@ function CTLD:_InitLocalization() return self end +function CTLD:_GetMenuPluralSuffix(Count, Kind) + local count = tonumber(Count) or 0 + if self.locale == "ru" then + local n = math.abs(count) % 100 + local d = n % 10 + if n >= 11 and n <= 14 then return "ов" end + if d == 1 then return "" end + if d >= 2 and d <= 4 then return "а" end + return "ов" + end + if self.locale == "de" and Kind == "crate" then return count > 1 and "n" or "" end + return count > 1 and "s" or "" +end + --- [User] Set SRS TTS details - see @{Sound.SRS} for details.`SetSRS()` will try to use as many attributes configured with @{Sound.SRS#MSRS.LoadConfigFile}() as possible. -- @param #CTLD self -- @param #number Frequency Frequency to be used. Can also be given as a table of multiple frequencies, e.g. 30 or {30,124.5}. Defaults to {30,124.5}. There needs to be exactly the same number of modulations! @@ -6808,8 +6823,7 @@ function CTLD:_RefreshF10Menus() local txt local cargoLabel = self:_GetCargoDisplayName(cargoObj) if needed > 1 then - local plural = "s" - if self.locale == "de" then plural = "n" end + local plural = self:_GetMenuPluralSuffix(needed, "crate") txt = string.format(self.gettext:GetEntry("MENU_CRATES_NEEDED",self.locale),needed,plural,cargoLabel,cargoObj.PerCrateMass or 0) else txt = string.format("%s (%dkg)",cargoLabel,cargoObj.PerCrateMass or 0) @@ -6859,8 +6873,7 @@ function CTLD:_RefreshF10Menus() local txt local cargoLabel = self:_GetCargoDisplayName(cargoObj) if needed > 1 then - local plural = "s" - if self.locale == "de" then plural = "n" end + local plural = self:_GetMenuPluralSuffix(needed, "crate") txt = string.format(self.gettext:GetEntry("MENU_CRATES_NEEDED",self.locale),needed,plural,cargoLabel,cargoObj.PerCrateMass or 0) else txt = string.format("%s (%dkg)",cargoLabel,cargoObj.PerCrateMass or 0) @@ -6877,8 +6890,7 @@ function CTLD:_RefreshF10Menus() local txt local cargoLabel = self:_GetCargoDisplayName(cargoObj) if needed > 1 then - local plural = "s" - if self.locale == "de" then plural = "n" end + local plural = self:_GetMenuPluralSuffix(needed, "crate") txt = string.format(self.gettext:GetEntry("MENU_CRATES_NEEDED",self.locale),needed,plural,cargoLabel,cargoObj.PerCrateMass or 0) else txt = string.format("%s (%dkg)",cargoLabel,cargoObj.PerCrateMass or 0) @@ -6896,8 +6908,7 @@ function CTLD:_RefreshF10Menus() local txt local cargoLabel = self:_GetCargoDisplayName(cargoObj) if needed > 1 then - local plural = "s" - if self.locale == "de" then plural = "n" end + local plural = self:_GetMenuPluralSuffix(needed, "crate") txt = string.format(self.gettext:GetEntry("MENU_CRATES_NEEDED",self.locale),needed,plural,cargoLabel,cargoObj.PerCrateMass or 0) else txt = string.format("%s (%dkg)",cargoLabel,cargoObj.PerCrateMass or 0) @@ -6914,8 +6925,7 @@ function CTLD:_RefreshF10Menus() local txt local cargoLabel = self:_GetCargoDisplayName(cargoObj) if needed > 1 then - local plural = "s" - if self.locale == "de" then plural = "n" end + local plural = self:_GetMenuPluralSuffix(needed, "crate") txt = string.format(self.gettext:GetEntry("MENU_CRATES_NEEDED",self.locale),needed,plural,cargoLabel,cargoObj.PerCrateMass or 0) else txt = string.format("%s (%dkg)",cargoLabel,cargoObj.PerCrateMass or 0) @@ -7564,7 +7574,7 @@ function CTLD:_RefreshDropCratesMenu(Group, Unit) end,self,Group,Unit,cName,needed,1) else for q=1,sets do - local qm=MENU_GROUP:New(Group,string.format(self.gettext:GetEntry("MENU_DROP_N_SETS",self.locale),q,q>1 and "s" or ""),parentMenu) + local qm=MENU_GROUP:New(Group,string.format(self.gettext:GetEntry("MENU_DROP_N_SETS",self.locale),q,self:_GetMenuPluralSuffix(q, "set")),parentMenu) --local qm=MENU_GROUP:New(Group,string.format("Drop %d Set%s",q,q>1 and "s" or ""),parentMenu) MENU_GROUP_COMMAND:New(Group,self.gettext:GetEntry("MENU_DROP",self.locale),qm,function(selfArg,GroupArg,UnitArg,cNameArg,neededArg,qty) local uName=UnitArg:GetName() @@ -7661,7 +7671,7 @@ function CTLD:_RefreshDropCratesMenu(Group, Unit) end else for q=1,sets do - local qm=MENU_GROUP:New(Group,string.format(self.gettext:GetEntry("MENU_DROP_N_SETS",self.locale),q,q>1 and "s" or ""),parentMenu) + local qm=MENU_GROUP:New(Group,string.format(self.gettext:GetEntry("MENU_DROP_N_SETS",self.locale),q,self:_GetMenuPluralSuffix(q, "set")),parentMenu) --local qm=MENU_GROUP:New(Group,string.format("Drop %d Set%s",q,q>1 and "s" or ""),parentMenu) MENU_GROUP_COMMAND:New(Group,self.gettext:GetEntry("MENU_DROP",self.locale),qm,function(selfArg,GroupArg,UnitArg,cNameArg,neededArg,qty) local uName=UnitArg:GetName()