[BREAKING] Use client-side translations instead of intllib; add zh_CN translations
* Client-side translations is used instead of intllib. [Breaks MT4 compat] * Existing locale files have been moved to advtrains/locale and named with the format advtrains.[lang].tr * Add zh_CN locale. (requires a font that supports CJK text)
This commit is contained in:
parent
19509acf56
commit
cc78b63e34
|
@ -128,9 +128,9 @@ advtrains.atc_function = function(def, preset, suffix, rotation)
|
|||
if fields.mode then
|
||||
meta:set_string("mode", idxtrans[fields.mode])
|
||||
if fields.mode=="digiline" then
|
||||
meta:set_string("infotext", attrans("ATC controller, mode @1\nChannel: @2", fields.mode, meta:get_string("command")) )
|
||||
meta:set_string("infotext", attrans("ATC controller, mode @1\nChannel: @2", (fields.mode or "?"), meta:get_string("command")) )
|
||||
else
|
||||
meta:set_string("infotext", attrans("ATC controller, mode @1\nCommand: @2", fields.mode, meta:get_string("command")) )
|
||||
meta:set_string("infotext", attrans("ATC controller, mode @1\nCommand: @2", (fields.mode or "?"), meta:get_string("command")) )
|
||||
end
|
||||
meta:set_string("formspec", atc.get_atc_controller_formspec(pos, meta))
|
||||
end
|
||||
|
@ -141,9 +141,9 @@ advtrains.atc_function = function(def, preset, suffix, rotation)
|
|||
meta:set_string("command_on", fields.command_on)
|
||||
meta:set_string("channel", fields.channel)
|
||||
if fields.mode=="digiline" then
|
||||
meta:set_string("infotext", attrans("ATC controller, mode @1\nChannel: @2", fields.mode, meta:get_string("command")) )
|
||||
meta:set_string("infotext", attrans("ATC controller, mode @1\nChannel: @2", (fields.mode or "?"), meta:get_string("command")) )
|
||||
else
|
||||
meta:set_string("infotext", attrans("ATC controller, mode @1\nCommand: @2", fields.mode, meta:get_string("command")) )
|
||||
meta:set_string("infotext", attrans("ATC controller, mode @1\nCommand: @2", (fields.mode or "?"), meta:get_string("command")) )
|
||||
end
|
||||
meta:set_string("formspec", atc.get_atc_controller_formspec(pos, meta))
|
||||
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
|
||||
core.register_craftitem("advtrains:boiler", {
|
||||
description = "Boiler",
|
||||
description = attrans("Boiler"),
|
||||
inventory_image = "advtrains_boiler.png",
|
||||
})
|
||||
|
||||
|
||||
core.register_craftitem("advtrains:driver_cab", {
|
||||
description = "driver's cab",
|
||||
description = attrans("driver's cab"),
|
||||
inventory_image = "advtrains_driver_cab.png",
|
||||
})
|
||||
|
||||
|
||||
core.register_craftitem("advtrains:wheel", {
|
||||
description = "Wheel",
|
||||
description = attrans("Wheel"),
|
||||
inventory_image = "advtrains_wheel.png",
|
||||
})
|
||||
|
||||
|
||||
core.register_craftitem("advtrains:chimney", {
|
||||
description = "Chimney",
|
||||
description = attrans("Chimney"),
|
||||
inventory_image = "advtrains_chimney.png",
|
||||
})
|
||||
|
|
|
@ -22,12 +22,8 @@ Copyright (C) 2016-2020 Moritz Blei (orwell96) and contributors
|
|||
local lot = os.clock()
|
||||
minetest.log("action", "[advtrains] Loading...")
|
||||
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
if minetest.get_modpath("intllib") then
|
||||
attrans = intllib.Getter()
|
||||
else
|
||||
attrans = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
|
||||
end
|
||||
-- There is no need to support 0.4.x anymore given that the compatitability with it is already broken by 1bb1d825f46af3562554c12fba35a31b9f7973ff
|
||||
attrans = minetest.get_translator ("advtrains")
|
||||
|
||||
--advtrains
|
||||
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
# textdomain: advtrains
|
||||
This wagon is owned by @1, you can't destroy it.=Dieser Waggon gehört @1, du kannst ihn nicht abbauen.
|
||||
Warning: If you destroy this wagon, you only get some steel back! If you are sure, hold Sneak and left-click the wagon.=Warnung: Du erhältst nur etwas Stahl zurück. Wenn du sicher bist, dass du den Waggon zerstören willst, halte 'Schleichen' und klicke links.
|
||||
Show Inventory=Zeige Inventar
|
||||
Select seat:=Wähle einen Sitzplatz aus:
|
||||
ATC controller, unconfigured.=Zugbeeinflussungsschiene, nicht konfiguiert.
|
||||
ATC controller=Zugbeeinflussungsschiene
|
||||
ATC controller, mode @1@nChannel: @2=Zugbeeinflussungsschiene in Betriebsart "@1"@nKanal: @2
|
||||
ATC controller, mode @1@nCommand: @2=Zugbeeinflussungsschiene in Betriebsart "@1"@nBefehl: @2
|
||||
Command=Befehl
|
||||
Command (on)=Befehl (wenn ein)
|
||||
Digiline channel=Digiline-Kanal
|
||||
Save=Speichern
|
||||
ATC Reverse command warning: didn't reverse train, train moving!=Zugbeeinflussung - Warnung: Befehl 'R' nicht ausgeführt, Zug in Bewegung!
|
||||
ATC command syntax error: I statement not closed: @1=Zugbeeinflussung - Syntaxfehler: I-Anweisung nicht geschlossen: @1
|
||||
ATC command parse error: Unknown command: @1=Zugbeeinflussung - Fehler: Unbekannter Befehl: @1
|
||||
This position is protected!=Diese Position ist geschützt!
|
||||
You need to own at least one neighboring wagon to destroy this couple.=Du musst Besitzer eines angrenzenden Waggons sein, um hier abzukuppeln.
|
||||
@1 Platform (low)=Niedriger @1-Bahnsteig
|
||||
@1 Platform (high)=Hoher @1-Bahnsteig
|
||||
off=aus
|
||||
on=ein
|
||||
Lampless Signal (@1)=Mechanisches Signal (@1)
|
||||
Signal (@1)=Lichtsignal (@1)
|
||||
Track Worker Tool@n@nLeft-click: change rail type (straight/curve/switch)@nRight-click: rotate rail/bumper/signal/etc.=Schienenwerkzeug@n@nLinksklick: Schienentyp ändern, Rechtsklick: Objekt drehen.
|
||||
This node can't be rotated using the trackworker!=Kann diesen Block nicht mit dem Schienenwerkzeug drehen.
|
||||
This node can't be changed using the trackworker!=Kann diesen Block nicht mit dem Schienenwerkzeug bearbeiten.
|
||||
Can't place: not pointing at node=Kann nicht platzieren: Du zeigst nicht auf einen Block.
|
||||
Can't place: space occupied!=Kann nicht platzieren: Platz besetzt.
|
||||
Can't place: protected position!=Kann nicht platzieren: Position geschützt.
|
||||
Can't place: Not enough slope items left (@1 required)=Kann nicht platzieren: nicht genug Steigungsblöcke, es werden insgesamt @1 benötigt.
|
||||
Can't place: There's no slope of length @1=Kann nicht platzieren: Keine Steigung der Länge @1 definiert.
|
||||
Can't place: no supporting node at upper end.=Kann nicht platzieren: kein unterstützender Block am Ende der Steigung.
|
||||
Deprecated Track=ausrangierte Schiene, nicht verwenden.
|
||||
Track=Schiene
|
||||
Bumper=Prellbock
|
||||
Detector Rail=Detektorschiene
|
||||
Speed:=Geschw.:
|
||||
Target:=Zielges.:
|
||||
@1 Slope=@1 Steigung
|
||||
Can't get on: wagon full or doors closed!=Kann nicht einsteigen: Waggon voll oder Türen geschlossen.
|
||||
Use Sneak+rightclick to bypass closed doors!=Nutze Sneak+Rechtsklick, um die Türnotöffnung zu aktivieren und trotzdem einzusteigen.
|
||||
Lock couples=Kupplungen sperren
|
||||
Save wagon properties=Waggon-Einstellungen speichern
|
||||
Doors are closed! Use Sneak+rightclick to ignore the closed doors and get off!=Türen sind geschlossen! Sneak+Rechtsklick, um die Türnotöffnung zu aktivieren und trotzdem auszusteigen.
|
||||
Wagon properties=Waggon-Einstellungen
|
||||
Get off=Aussteigen
|
||||
Get off (forced)=Aussteigen (erzwingen)
|
||||
(Doors closed)=(Türen geschlossen)
|
||||
Access to @1=Zugang zu @1
|
||||
Default Seat=Standardsitzplatz
|
||||
Default Seat (driver stand)=Standardsitzplatz (Führerstand)
|
||||
Driver Stand=Führerstand
|
||||
Driver Stand (left)=Führerstand Links
|
||||
Driver Stand (right)=Führerstand Rechts
|
||||
Industrial Train Engine=Industrielle Lokomotive
|
||||
Industrial tank wagon=Tankwaggon
|
||||
Industrial wood wagon=Holztransportwaggon
|
||||
Japanese Train Engine=Japanische Personenzug-Lokomotive
|
||||
Japanese Train Wagon=Japanischer Personenzug-Passagierwaggon
|
||||
Steam Engine=Dampflokomotive
|
||||
Detailed Steam Engine=detaillierte Dampflokomotive
|
||||
Passenger Wagon=Passagierwaggon
|
||||
Box wagon=Güterwaggon
|
||||
Subway Passenger Wagon=U-Bahn-Waggon
|
|
@ -0,0 +1,107 @@
|
|||
# textdomain: advtrains
|
||||
|
||||
# Advtrains Core (unorganized)
|
||||
This wagon is owned by @1, you can't destroy it.=这是@1的车厢, 你不能摧毁它.
|
||||
Warning: If you destroy this wagon, you only get some steel back! If you are sure, hold Sneak and left-click the wagon.=警告: 如果你摧毁此车厢, 你只能拿到一些钢方块. 如果你确定要摧毁这个车厢,请按潜行键并左键单击此车厢.
|
||||
ATC controller, unconfigured.=ATC控制器 (未配置)
|
||||
ATC controller=ATC控制器
|
||||
ATC controller, mode @1@nChannel: @2=ATC控制器@n模式: @1@n频道: @2
|
||||
ATC controller, mode @1@nCommand: @2=ATC控制器@n模式: @1@n命令: @2
|
||||
Command=命令
|
||||
Command (on)=命令(激活时)
|
||||
Digiline channel=Digiline 频道
|
||||
ATC Reverse command warning: didn't reverse train, train moving!=ATC警告:未执行“R”命令, 火车在移动
|
||||
ATC command syntax error: I statement not closed: @1=ATC语法错误: "I"命令不完整: @1
|
||||
ATC command parse error: Unknown command: @1=ATC语法错误: 未知命令: @1
|
||||
This position is protected!=这里已被保护.
|
||||
You need to own at least one neighboring wagon to destroy this couple.=你必须至少拥有其中一个车厢才能解耦这两个车厢.
|
||||
This node can't be rotated using the trackworker!=你不能使用铁路调整工具旋转这个方块.
|
||||
This node can't be changed using the trackworker!=你不能使用铁路调整工具调整这个方块.
|
||||
Can't place: not pointing at node=无法放置: 你没有选择任何方块.
|
||||
Can't place: space occupied!=无法放置: 此区域已被占用.
|
||||
Can't place: protected position!=无法放置: 此区域已被保护.
|
||||
Can't place: Not enough slope items left (@1 required)=无法放置: 你没有足够的铁路斜坡放置工具 (你需要@1个)
|
||||
Can't place: There's no slope of length @1=无法放置: advtrains不支持长度为@1m的斜坡.
|
||||
Can't place: no supporting node at upper end.=无法放置: 较高端没有支撑方块.
|
||||
Deprecated Track=请不要使用
|
||||
Can't get on: wagon full or doors closed!=无法上车: 车门已关闭或车厢已满
|
||||
Use Sneak+rightclick to bypass closed doors!=请使用潜行+右键上车
|
||||
Lock couples=锁定连接处
|
||||
Doors are closed! Use Sneak+rightclick to ignore the closed doors and get off!=车门已关闭, 请使用潜行+右键单击下车
|
||||
Access to @1=可前往@1
|
||||
The clipboard couldn't access the metadata. Paste failed.=无法粘贴: 剪贴板无法访问元数据
|
||||
The clipboard couldn't access the metadata. Copy failed.=无法复制: 剪贴板无法访问元数据
|
||||
|
||||
# Train HUD/Formspecs
|
||||
Speed:=速度:
|
||||
Target:=目标速度:
|
||||
Show Inventory=显示物品栏
|
||||
Select seat:=请选择座位
|
||||
Wagon properties=车厢属性
|
||||
Save wagon properties=保存车厢属性
|
||||
Text displayed outside on train=车厢外部显示
|
||||
Text displayed inside train=车厢内部显示
|
||||
Line=火车线路
|
||||
Routingcode=路由码
|
||||
Get off=下车
|
||||
Get off (forced)=强制下车
|
||||
(Doors closed)=(车门已关闭)
|
||||
|
||||
# General
|
||||
Save=保存
|
||||
# "off" and "on" can be translated differently depending on the context and are therefore not translated.
|
||||
off=off
|
||||
on=on
|
||||
|
||||
# Line automation
|
||||
Station Code=车站代码
|
||||
Station Name=车站名称
|
||||
Door Delay=车门关闭时间
|
||||
Departure Speed=出发速度
|
||||
Stop Time=停站时间
|
||||
|
||||
# Items
|
||||
Track Worker Tool@n@nLeft-click: change rail type (straight/curve/switch)@nRight-click: rotate rail/bumper/signal/etc.=铁路调整工具@n@n左键单击: 切换轨道类型@n右键单击: 旋转方块
|
||||
Passive Component Naming Tool@n@nRight-click to name a passive component.=被动元件命名工具@n@n右键单击命名所选元件.
|
||||
Train copy/paste tool@n@nLeft-click: copy train@nRight-click: paste train=火车复制工具@n@n左键单击: 复制@n右键单击: 粘帖
|
||||
Track=铁轨
|
||||
Perpendicular Diamond Crossing Track=垂直交叉铁轨
|
||||
45/90 Degree Diamond Crossing Track=45度交叉铁轨
|
||||
Unloading Track=卸货铁轨
|
||||
Loading Track=装货铁轨
|
||||
Bumper=保险杠
|
||||
Detector Rail=探测铁轨
|
||||
@1 Slope=@1斜坡
|
||||
@1 Platform (low)=50cm高的@1站台
|
||||
@1 Platform (high)=1m高的@1站台
|
||||
@1 Platform (45 degree)=1m高的@1站台 (45度)
|
||||
Lampless Signal (@1)=臂板信号机 (@1)
|
||||
Signal (@1)=信号灯 (@1)
|
||||
Wallmounted Signal (l)=壁挂式信号灯 (左侧)
|
||||
Wallmounted Signal (r)=壁挂式信号灯 (右侧)
|
||||
Wallmounted Signal (t)=悬挂式信号灯
|
||||
Andrew's Cross=铁路道口信号灯
|
||||
Boiler=锅炉
|
||||
driver's cab=驾驶室
|
||||
Wheel=车轮
|
||||
Chimney=烟囱
|
||||
|
||||
# Seats
|
||||
Default Seat=默认座位
|
||||
Default Seat (driver stand)=默认座位 (司机座位)
|
||||
Driver Stand=司机座位
|
||||
Driver Stand (left)=左侧司机座位
|
||||
Driver Stand (right)=右侧司机座位
|
||||
|
||||
# Wagon/engine types
|
||||
Industrial Train Engine=工业用火车头
|
||||
Big Industrial Train Engine=大型工业用火车头
|
||||
Industrial tank wagon=液体运输车厢
|
||||
Industrial wood wagon=木材运输车厢
|
||||
Japanese Train Engine=高速列车车头
|
||||
Japanese Train Wagon=高速列车车厢
|
||||
Steam Engine=蒸汽机车
|
||||
Detailed Steam Engine=精细的蒸汽机车
|
||||
Passenger Wagon=客车
|
||||
Box Wagon=货运车厢
|
||||
Subway Passenger Wagon=地铁车厢
|
|
@ -1,50 +0,0 @@
|
|||
This wagon is owned by @1, you can't destroy it. = Dieser Waggon gehört @1, du kannst ihn nicht abbauen.
|
||||
Warning: If you destroy this wagon, you only get some steel back! If you are sure, hold Sneak and left-click the wagon. = Warnung: Du erhältst nur etwas Stahl zurück. Wenn du sicher bist, dass du den Waggon zerstören willst, halte 'Schleichen' und klicke links.
|
||||
Show Inventory = Zeige Inventar
|
||||
Select seat: = Wähle einen Sitzplatz aus:
|
||||
ATC controller, unconfigured. = Zugbeeinflussungsschiene, nicht konfiguiert.
|
||||
ATC controller = Zugbeeinflussungsschiene
|
||||
ATC controller, mode @1\nChannel: @2 = Zugbeeinflussungsschiene in Betriebsart "@1"\nKanal: @2
|
||||
ATC controller, mode @1\nCommand: @2 = Zugbeeinflussungsschiene in Betriebsart "@1"\nBefehl: @2
|
||||
Command = Befehl
|
||||
Command (on) = Befehl (wenn ein)
|
||||
Digiline channel = Digiline-Kanal
|
||||
Save = Speichern
|
||||
ATC Reverse command warning: didn't reverse train, train moving! = Zugbeeinflussung - Warnung: Befehl 'R' nicht ausgeführt, Zug in Bewegung!
|
||||
ATC command syntax error: I statement not closed: @1 = Zugbeeinflussung - Syntaxfehler: I-Anweisung nicht geschlossen: @1
|
||||
ATC command parse error: Unknown command: @1 = Zugbeeinflussung - Fehler: Unbekannter Befehl: @1
|
||||
This position is protected! = Diese Position ist geschützt!
|
||||
You need to own at least one neighboring wagon to destroy this couple. = Du musst Besitzer eines angrenzenden Waggons sein, um hier abzukuppeln.
|
||||
@1 Platform (low) = Niedriger @1-Bahnsteig
|
||||
@1 Platform (high) = Hoher @1-Bahnsteig
|
||||
off = aus
|
||||
on = ein
|
||||
Lampless Signal (@1) = Mechanisches Signal (@1)
|
||||
Signal (@1) = Lichtsignal (@1)
|
||||
Track Worker Tool\n\nLeft-click: change rail type (straight/curve/switch)\nRight-click: rotate rail/bumper/signal/etc. = Schienenwerkzeug\n\nLinksklick: Schienentyp ändern, Rechtsklick: Objekt drehen.
|
||||
This node can't be rotated using the trackworker! = Kann diesen Block nicht mit dem Schienenwerkzeug drehen.
|
||||
This node can't be changed using the trackworker! = Kann diesen Block nicht mit dem Schienenwerkzeug bearbeiten.
|
||||
Can't place: not pointing at node = Kann nicht platzieren: Du zeigst nicht auf einen Block.
|
||||
Can't place: space occupied! = Kann nicht platzieren: Platz besetzt.
|
||||
Can't place: protected position! = Kann nicht platzieren: Position geschützt.
|
||||
Can't place: Not enough slope items left (@1 required) = Kann nicht platzieren: nicht genug Steigungsblöcke, es werden insgesamt @1 benötigt.
|
||||
Can't place: There's no slope of length @1 = Kann nicht platzieren: Keine Steigung der Länge @1 definiert.
|
||||
Can't place: no supporting node at upper end. = Kann nicht platzieren: kein unterstützender Block am Ende der Steigung.
|
||||
Deprecated Track = ausrangierte Schiene, nicht verwenden.
|
||||
Track = Schiene
|
||||
Bumper = Prellbock
|
||||
Detector Rail = Detektorschiene
|
||||
Speed: = Geschw.:
|
||||
Target: = Zielges.:
|
||||
@1 Slope = @1 Steigung
|
||||
Can't get on: wagon full or doors closed! = Kann nicht einsteigen: Waggon voll oder Türen geschlossen.
|
||||
Use Sneak+rightclick to bypass closed doors! = Nutze Sneak+Rechtsklick, um die Türnotöffnung zu aktivieren und trotzdem einzusteigen.
|
||||
Lock couples = Kupplungen sperren
|
||||
Save wagon properties = Waggon-Einstellungen speichern
|
||||
Doors are closed! Use Sneak+rightclick to ignore the closed doors and get off! = Türen sind geschlossen! Sneak+Rechtsklick, um die Türnotöffnung zu aktivieren und trotzdem auszusteigen.
|
||||
Wagon properties = Waggon-Einstellungen
|
||||
Get off = Aussteigen
|
||||
Get off (forced) = Aussteigen (erzwingen)
|
||||
(Doors closed) = (Türen geschlossen)
|
||||
Access to @1 = Zugang zu @1
|
||||
|
|
@ -1,10 +1,4 @@
|
|||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S
|
||||
if minetest.get_modpath("intllib") then
|
||||
S = intllib.Getter()
|
||||
else
|
||||
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
|
||||
end
|
||||
local S = attrans
|
||||
|
||||
advtrains.register_wagon("engine_industrial", {
|
||||
mesh="advtrains_engine_industrial.b3d",
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
Driver Stand (left) = Führerstand Links
|
||||
Driver Stand (right) = Führerstand Rechts
|
||||
Industrial Train Engine = Industrielle Lokomotive
|
||||
Industrial tank wagon = Tankwaggon
|
||||
Industrial wood wagon = Holztransportwaggon
|
|
@ -1,9 +1,4 @@
|
|||
local S
|
||||
if minetest.get_modpath("intllib") then
|
||||
S = intllib.Getter()
|
||||
else
|
||||
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
|
||||
end
|
||||
local S = attrans
|
||||
|
||||
advtrains.register_wagon("engine_japan", {
|
||||
mesh="advtrains_engine_japan.b3d",
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
Driver Stand = Führerstand
|
||||
Japanese Train Engine = Japanische Personenzug-Lokomotive
|
||||
Default Seat = Standardsitzplatz
|
||||
Japanese Train Wagon = Japanischer Personenzug-Passagierwaggon
|
|
@ -1,9 +1,4 @@
|
|||
local S
|
||||
if minetest.get_modpath("intllib") then
|
||||
S = intllib.Getter()
|
||||
else
|
||||
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
|
||||
end
|
||||
local S = attrans
|
||||
|
||||
-- length of the steam engine loop sound
|
||||
local SND_LOOP_LEN = 5
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
Driver Stand (left) = Führerstand Links
|
||||
Driver Stand (right) = Führerstand Rechts
|
||||
Steam Engine = Dampflokomotive
|
||||
Detailed Steam Engine = detaillierte Dampflokomotive
|
||||
Passenger Wagon = Passagierwaggon
|
||||
Box wagon = Güterwaggon
|
|
@ -1,9 +1,4 @@
|
|||
local S
|
||||
if minetest.get_modpath("intllib") then
|
||||
S = intllib.Getter()
|
||||
else
|
||||
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
|
||||
end
|
||||
local S = attrans
|
||||
|
||||
advtrains.register_wagon("subway_wagon", {
|
||||
mesh="advtrains_subway_wagon.b3d",
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
Default Seat (driver stand) = Standardsitzplatz (Führerstand)
|
||||
Subway Passenger Wagon = U-Bahn-Waggon
|
Loading…
Reference in New Issue