1. My server language is set to "en". (I think it is default.) (command: /lang en?)

    At first, I don't know that I can create a new folder called "zh-TW" under \oxide\lang for Traditional Chinese.

    I modified all the language files under \oxide\lang\en and they work correctly.
    (In the rust game, if player choose their flag on top right of the game to England or Taiwan flag, they will still see Traditional Chinese.)

    Now, I want to set up the server to make it easier for people who understand English or Chinese to play.

    Therefore, I created a new folder called "zh-TW" under \oxide\lang and copy all the work I did previously.

    Then, I deleted all the language files under \oxide\lang\en, so the server can create the default English file.

    00001.PNG

    Now, my server has two language files for the plugins. However, for player with Chinese interface (Taiwan flag), some plugins are still in English. I don't know why. :(
    ----------------------------------------------------------------------------------------------
    The plugin language files which are working correctly for both game languages:
    EMInterface.json
    HuntPlugin.json
    QuickSort.json
    ServerRewards.json
    WheresMyCorpse.json
    ----------------------------------------------------------------------------------------------
    The plugin language files which are Not working correctly for both game languages:
    (Still showed English for player with Taiwan flag)
    ChopperSurvival.json
    EventManager.json
    ----------------------------------------------------------------------------------------------
    This plugin is the special one. Some messages in the game are in English and some are Chinese (Selected lines).
    SkipNightVote.json
    00002.PNG
    ----------------------------------------------------------------------------------------------
    The rest attached files are the language files which did not load.

    Hope someone can help me. Thank you for spending time reading this.
     

    Attached Files:

    Last edited by a moderator: Jun 7, 2017
  2. Wulf

    Wulf Community Admin

    If a message can't be read in one language, that generally means that it could not be found for that language due to no matching key or it doesn't exist, so it would default to English for the message.

    Also, setting /lang via chat only sets it for you, if you want it server-wide you'd have to use the lang console command as admin.
     
  3. You mean some plugins may not support lang files under \oxide\lang\zh-TW even they were just copied from oxide\lang\en and can display Chinese correctly ?
    When I type lang en in console, message from EventManager and ChopperSurvival will display in English no matter I use Chinese or English interface/flag. (The rest plugins were based on the interface language I choose.)

    If I type "lang zh-TW", these two plugins will display in Chinese no matter I use Chinese or English interface/flag. (The rest plugins were based on the interface language I choose.)

    Can client type /lang en|zh-TW to choose their prefer languages?
     
  4. Wulf

    Wulf Community Admin

    If you set "lang en" or any other language in your server's console, that will force all plugins and users to use that language, regardless of what they set in chat for themselves.

    If you have language files for a plugin in another language and it is showing English instead, then that means that the language file you customized or added does not match the keys from the English one or what the plugin expects/is looking for.
     
  5. Is there any way that I can reset the setting, so players can choose their own prefer languages by /lang?

    Sorry for the poor understanding.

    This is the English one.
    Code:
    {
      "Force open a new vote": "Force open a new vote",
      "Cancel the current vote": "Cancel the current vote",
      "There is not a vote currently open": "There is not a vote currently open",
      "You have voted to skip night": "You have voted to skip night",
      "have voted to skip night": "players have voted to skip night",
      "Voting was successful, skipping night.": "Voting was successful, skipping night.",
      "Voting was unsuccessful.": "Voting was unsuccessful.",
      "Minutes": "Minutes",
      "Minute": "Minute",
      "Seconds": "Seconds",
      "voteMSG": "{secCol}Type</color> {mainCol}/voteday</color> {secCol}now if you want to skip night. If </color>{mainCol}{reqVote}%</color> {secCol}of players vote night will be skipped</color>",
      "timeRem": "{secCol}Voting ends in</color> {mainCol}{time} {type}</color>{secCol}, use </color>{mainCol}/voteday</color>{secCol} to cast your vote</color>"
    }
    This is the Chinese one.
    Code:
    {
      "Force open a new vote": "強制開啟一個新的投票活動。",
      "Cancel the current vote": "取消目前的投票活動。",
      "There is not a vote currently open": "目前沒有開啟的投票活動。",
      "You have voted to skip night": "你在票上選擇了'我很害怕夜晚'!",
      "have voted to skip night": "玩家頭票選擇了'我很害怕夜晚'!",
      "Voting was successful, skipping night.": "投票人數達標,即將跳過夜晚。",
      "Voting was unsuccessful.": "投票人數未達標,面對現實吧孩子。",
      "Minutes": "分鐘s",
      "Minute": "分鐘",
      "Seconds": "秒",
      "voteMSG": "{secCol}現在輸入</color> {mainCol}/voteday</color> {secCol}來跳過夜晚。 如果 </color>{mainCol}{reqVote}%</color> {secCol}地玩家參與投票將會跳過夜晚。</color>",
      "timeRem": "{secCol}投票活動即將在</color> {mainCol}{time} {type}</color>{secCol}結束,輸入 </color>{mainCol}/voteday</color>{secCol} 來跳過夜晚。</color>"
    }
    Do you mean there is something wrong here?

    Thank you for helping me. >_<
     
  6. Wulf

    Wulf Community Admin

    Both of those appear to be fine visually. If you have used lang en on the server, then it should have already reset it to allow users to pick.

    Which messages are showing as English from those? Just the two you highlighted previously?
     
  7. I used lang en on server and myself used lang zh-TW in chat, ChopperSurvival, EventManager, and SkipNightVote are still in English.
    For SkipNightVote, only the highlighted part are in Chinese.
    20170607235521_1.jpg

    -----------------------------------------------------------------------------------------------------------------------------------------

    ChopperSurvival
    Code:
    {
      "noEvent": "Event plugin doesn't exist",
      "noConfig": "Creating a new config file",
      "title": "ChopperSurvival : ",
      "fFire": "有人敵我不分阿!",
      "nextWave": "下一波將在 {0} 秒後開始!",
      "noPlayers": "所有人都怯戰了,自動關閉活動。",
      "openBroad": "抵禦直升機的攻擊! 攻擊直升機可以獲得點數,主螺旋槳的分數較高。最後活下來的人或是擁有較多分數的人獲勝!",
      "eventWin": "{0} 是最大的贏家!",
      "eventDeath": "{0} 死了 {1}/{2} 次!",
      "waveInbound": "第 {0} 波開始!",
      "firstWave": "你有 {0} 秒來為第一波攻擊做準備!",
      "heliDest": "直升機被擊墜了!",
      "livesLeft": "你還剩下 {0} 復活機會!",
      "notEnough": "人數不足無法開始活動!"
    }
    Code:
    {
      "noEvent": "Event plugin doesn't exist",
      "noConfig": "Creating a new config file",
      "title": "ChopperSurvival : ",
      "fFire": "Friendly Fire!",
      "nextWave": "Next wave in {0} seconds!",
      "noPlayers": "The event has no more players, auto-closing.",
      "openBroad": "Fend off waves of attacking helicopters! Each hit gives you a point, Rotor hits are worth more. The last player standing, or the player with the most points wins!",
      "eventWin": "{0} has won the event!",
      "eventDeath": "{0} has died {1}/{2} times!",
      "waveInbound": "Wave {0} inbound!",
      "firstWave": "You have {0} seconds to prepare for the first wave!",
      "heliDest": "Helicopter Destroyed!",
      "livesLeft": "You have {0} lives remaining!",
      "notEnough": "Not enough players to start the event"
    }
    -----------------------------------------------------------------------------------------------------------------------------------------

    EventManager
    Code:
    {
      "Title": "Event Manager: ",
      "reachedMinPlayers": "活動 {0} 達到最小人數並將在 {1} 秒後開始",
      "reachedMaxPlayers": "活動 {0} 達爆最大人數,目前無法再加入了。",
      "eventBegin": "{0} 即將開始!",
      "leftEvent": "{0} 離開了活動! (目前活動總人數: {1})",
      "successJoined": "{0} 加入了活動!  (目前活動總人數: {1})",
      "alreadyJoined": "你已經參加了活動!",
      "restoringPlayers": "{0} 活動結束,回復玩家物品並送他們回家!",
      "MessagesEventEnd": "所有玩家重生,{0} 結束!",
      "noGamePlaying": "目前沒有活動進行中!",
      "eventCancel": "活動取消了!",
      "eventClose": "活動報名不再受理了!",
      "noEventSet": "An event config must first be chosen.",
      "noSpawnsSet": "You must select spawnfiles for this event",
      "eventAlreadyClosed": "活動已經結束了。",
      "alreadyStarted": "活動動已經開始了。",
      "notEnoughPlayers": "玩家人數不足!",
      "noAuto": "No automatic events configured",
      "noAutoInit": "No events were successfully initialized, check that your events are correctly configured",
      "TimeLimit": "到達限制時間!",
      "EventCancelled": "活動 {0} 取消了,因為: {1}",
      "eventOpen": "{0} 活動開始了,想要加入的話請輸入 /event join",
      "stillOpen": "{0} 仍然受理報名! 想要加入的話請輸入 /event join",
      "isClosed": "活動目前沒有舉辦。",
      "notInEvent": "你目前不在活動裡。",
      "kitNotExist": "The kit {0} doesn't exist",
      "zoneNotExist": "Invalid Zone ID",
      "CancelAuto": "自動活動被取消了",
      "ItemPickup": "Item pickup has been disabled during this event!",
      "NoLooting": "Looting has been disabled during this event!",
      "noEvent": "Unable to find a event called: {0}",
      "isAlreadyStarted": "已經有一個活動正在進行了!",
      "noneSelected": "No event has been selected",
      "noTypeSelected": "No event type has been selected",
      "isAlreadyOpen": "{0} 已經開放了!",
      "cantOpen": "This game type can not be opened once it has started",
      "Battlefield": "Battlefield",
      "tpError": "There was a error sending you to the event. Please try again",
      "a Helicopter": "直升機",
      "a AutoTurret": "機槍塔",
      "suicide": "你自殺了...厲害!",
      "deathBy": "你被 {0} 擊殺了!",
      "respawnWait": "等待重生中。",
      "respawnTime": "等待 {0} 秒後重生。",
      "respawnWave": "等待 {0} 秒後在下一波重生。",
      "oobMsg": "<color={MsgColor}>你有</color> <color={MainColor}>10</color><color={MsgColor}> 秒的時間回到競技場內。</color>",
      "oobMsg2": "<color={MainColor}>{time}</color><color={MsgColor}> 秒</color>",
      "oobMsg3": "<color={MainColor}>{playerName}</color><color={MsgColor}> 因為怯戰跑掉了。</color>",
      "errorAutoFind": "Error finding event config:",
      "rewardText": "你得到獎賞了!",
      "rewardCoins": "Coins",
      "rewardRP": "RP",
      "noKits": "You may not redeem a kit in the arena",
      "noTP": "You may not teleport in the arena",
      "noRemove": "You may not use the remover tool in the arena",
      "noShop": "You can not use the store in the arena",
      "restoreSuccess": "你成功地被復原了!",
      "noTrade": "You can not trade in the arena",
      "failedRestore": "An attempt to restore your previous state was unsuccessful. You can opt to manually restore at anytime by typing \"/restoreme\"",
      "noRestoreSaved": "You do not have any pending restore data",
      "restoreFailed": "Unable to restore you at this time as all requirements have not been met. Please try again shortly",
      "eventBeginIn": "活動將在 {0} 秒後開始!"
    }
    Code:
    {
      "Title": "Event Manager: ",
      "reachedMinPlayers": "The event {0} has reached min players and will start in {1} seconds",
      "reachedMaxPlayers": "The event {0} has reached max players. You may not join for the moment",
      "eventBegin": "{0} is about to begin!",
      "leftEvent": "{0} has left the Event! (Total Players: {1})",
      "successJoined": "{0} has joined the Event!  (Total Players: {1})",
      "alreadyJoined": "You are already in the Event.",
      "restoringPlayers": "{0} is now over, restoring players and sending them home!",
      "MessagesEventEnd": "All players respawned, {0} has ended!",
      "noGamePlaying": "An event game is not underway.",
      "eventCancel": "The event was cancelled!",
      "eventClose": "The event entrance is now closed!",
      "noEventSet": "An event config must first be chosen.",
      "noSpawnsSet": "You must select spawnfiles for this event",
      "eventAlreadyClosed": "The event is already closed.",
      "alreadyStarted": "An event game has already started.",
      "notEnoughPlayers": "Not enough players",
      "noAuto": "No automatic events configured",
      "noAutoInit": "No events were successfully initialized, check that your events are correctly configured",
      "TimeLimit": "Time limit reached",
      "EventCancelled": "Event {0} was cancelled because: {1}",
      "eventOpen": "{0} is now open, you can join it by typing /event join",
      "stillOpen": "{0} is still open for contestants! You can join it by typing /event join",
      "isClosed": "The event is currently closed.",
      "notInEvent": "You are not currently in the event.",
      "kitNotExist": "The kit {0} doesn't exist",
      "zoneNotExist": "Invalid Zone ID",
      "CancelAuto": "Auto events have been cancelled",
      "ItemPickup": "Item pickup has been disabled during this event!",
      "NoLooting": "Looting has been disabled during this event!",
      "noEvent": "Unable to find a event called: {0}",
      "isAlreadyStarted": "An event is already underway",
      "noneSelected": "No event has been selected",
      "noTypeSelected": "No event type has been selected",
      "isAlreadyOpen": "{0} is already open",
      "cantOpen": "This game type can not be opened once it has started",
      "Battlefield": "Battlefield",
      "tpError": "There was a error sending you to the event. Please try again",
      "a Helicopter": "a Helicopter",
      "a AutoTurret": "a AutoTurret",
      "suicide": "You killed yourself...",
      "deathBy": "You were killed by {0}",
      "respawnWait": "Waiting to respawn",
      "respawnTime": "Respawning in {0} seconds...",
      "respawnWave": "The next wave spawns in {0} seconds...",
      "oobMsg": "<color={MsgColor}>You have</color> <color={MainColor}>10</color><color={MsgColor}> seconds to return to the arena</color>",
      "oobMsg2": "<color={MainColor}>{time}</color><color={MsgColor}> seconds</color>",
      "oobMsg3": "<color={MainColor}>{playerName}</color><color={MsgColor}> tried to run away...</color>",
      "errorAutoFind": "Error finding event config:",
      "rewardText": "You have been awarded",
      "rewardCoins": "Coins",
      "rewardRP": "RP",
      "noKits": "You may not redeem a kit in the arena",
      "noTP": "You may not teleport in the arena",
      "noRemove": "You may not use the remover tool in the arena",
      "noShop": "You can not use the store in the arena",
      "restoreSuccess": "You have successfully been restored",
      "noTrade": "You can not trade in the arena",
      "failedRestore": "An attempt to restore your previous state was unsuccessful. You can opt to manually restore at anytime by typing \"/restoreme\"",
      "noRestoreSaved": "You do not have any pending restore data",
      "restoreFailed": "Unable to restore you at this time as all requirements have not been met. Please try again shortly",
      "eventBeginIn": "The event will start in {0} seconds!"
    }
     
  8. Wulf

    Wulf Community Admin

    Okay, so with some plugins they do not send the player's ID which is used for localization, so those plugins would need to have that changed else you can force the language you want for the entire server.
     
  9. OK, thank you!!
    I think it is better to use one language for now.
     
  10. Sorry to bother again.

    Does this means that only if author of the plugin changes the way it sends the message to player or I have to modify the plugin?
     
  11. Wulf

    Wulf Community Admin

    You can either force the language you want via the 'land xx' console command (not chat), or the author would have to fix how they broadcast messages to all to include each player's Steam ID.