Browse Source

aggiunto italiano.

John Doe 1 year ago
parent
commit
7fc89c24ee

+ 1 - 1
i18next-scanner.config.js

@@ -27,7 +27,7 @@ module.exports = {
         // Check out https://github.com/acornjs/acorn/tree/master/acorn#interface for additional options
       },
     },
-    lngs: ["en", "fr"],
+    lngs: ["en", "fr", "it"],
     ns: ["locale", "resource"],
     defaultLng: "en",
     defaultNs: "resource",

+ 6 - 2
src/i18n/en.json

@@ -210,7 +210,7 @@
   "You've locked your first element. Long click to select it again.": "You've locked your first element. Long click on it to select it again.",
   "Your games": "Your games",
   "Zone": "Zone",
-  "about": "<0>Air Board Game is a plateform designed to play any board games with your friends online. For more information or to access source code visit <1>Github</1>.</0><1>Legal mentions</1><2>This site is hosted by Netlify (San Francisco, US) and OVH (2, rue Kellermann, 59100 Roubaix)</2><3>Abuse report</3><4>To report abuse, please email at abu<1>anti-span</1>se-report@airboardgame.com</4><5>RGPD</5><6>No personnal data are collected. When you use your email to login, this information is lost and not used for anything else than sending you an authentication link.</6><7>Credits</7><8>Thanks to everybody !</8>",
+  "about": "<0>Air Board Game is a plateform designed to play any board games with your friends online. For more information or to access source code visit <1>Github</1>.</0><2>RGPD</2><3>No personnal data are collected. When you use your email to login, this information is lost and not used for anything else than sending you an authentication link.</3><4>Credits</4><5>Thanks to everybody !</5>",
   "baseline": "<0>Play board games online<1></1>with your friends - for free!</0><1>Choose from our selection or create your own.<1></1>No need to sign up. Just start a game and share the link with your friends.</1>",
   "games-available": "{{ nbOfGames }} games available",
   "helpBoard": "<0><0>Move the board with middle mouse button click. Alternatively you can use left button with alt key.</0><1>Zoom with mouse wheel.</1><2>Switch to edit mode with top button to be able to edit the game.</2><3>You can save and reload game by clicking the burger menu.</3><4>Use <5>Ctrl</5> + <5>1</5>…<5>9</5> to save a position and <5>1</5>…<5>9</5> to restore it.</4><4>Press <5>space</5> to zoom temporally.</4></0>",
@@ -300,5 +300,9 @@
   "Left": "Left",
   "Top": "Top",
   "Keep title": "Show title",
-  "Check it to keep the game title above the game image.": "Check it to keep the game title above the game image."
+  "Check it to keep the game title above the game image.": "Check it to keep the game title above the game image.",
+  "Bag": "Bag",
+  "Shuffle Bag": "Shuffle Bag",
+  "Empty Bag": "Empty Bag",
+  "Italian": "Italian"
 }

+ 6 - 2
src/i18n/fr.json

@@ -210,7 +210,7 @@
   "You've locked your first element. Long click to select it again.": "Vous avez figé votre premier élément. Un long click sur celui-ci permet de le sélectionner de nouveau.",
   "Your games": "Vos jeux",
   "Zone": "Zone",
-  "about": "<0>Air Board Game is a plateform designed to play any board games with your friends online. For more information or to access source code visit <1>Github</1>.</0><1>Legal mentions</1><2>This site is hosted by Netlify (San Francisco, US) and OVH (2, rue Kellermann, 59100 Roubaix)</2><3>Abuse report</3><4>To report abuse, please email at abu<1>anti-span</1>se-report@airboardgame.com</4><5>RGPD</5><6>No personnal data are collected. When you use your email to login, this information is lost and not used for anything else than sending you an authentication link.</6><7>Credits</7><8>Thanks to everybody !</8>",
+  "about": "<0>Air Board Game is a plateform designed to play any board games with your friends online. For more information or to access source code visit <1>Github</1>.</0><2>RGPD</2><3>No personnal data are collected. When you use your email to login, this information is lost and not used for anything else than sending you an authentication link.</3><4>Credits</4><5>Thanks to everybody !</5>",
   "baseline": "<0>Jouez aux jeux de société en ligne<1></1>avec vos amis - gratuitement !</0><1>Choisissez parmi notre sélection ou ajoutez le votre.<1></1>Pas besoin de compte, démarrez un jeu et partagez le lien avec vos amis.</1>",
   "games-available": "{{ nbOfGames }} jeux disponibles",
   "helpBoard": "<0><0>Déplacez le plateau en cliquant avec le bouton du milieu de la souris. vous pouvez également utiliser le bouton gauche tout en maintenant la touche Alt de votre clavier.</0><1>Utilisez la molette pour zoomer.</1><2>Basculer en mode édition avec le bouton dédié afin d'éditer les éléments du jeu.</2><3>Vous pouvez enregistrer et charger vos parties en ouvrant le menu.</3><4>Utilisez <5>Ctrl</5> + <5>1</5>…<5>9</5> pour enregistrer une position et <5>1</5>…<5>9</5> la restaurer.</4><4>Pressez <5>espace</5> pour zoomer temporairement.</4></0>",
@@ -300,5 +300,9 @@
   "Left": "Gauche",
   "Top": "Haut",
   "Keep title": "Afficher le titre",
-  "Check it to keep the game title above the game image.": "Cochez pour conserver le titre sur l'image du jeu."
+  "Check it to keep the game title above the game image.": "Cochez pour conserver le titre sur l'image du jeu.",
+  "Bag": "Bag",
+  "Shuffle Bag": "Shuffle Bag",
+  "Empty Bag": "Empty Bag",
+  "Italian": "Italian"
 }

+ 2 - 1
src/i18n/index.jsx

@@ -4,12 +4,13 @@ import LanguageDetector from "i18next-browser-languagedetector";
 
 import en from "./en.json";
 import fr from "./fr.json";
+import it from "./it.json"
 
 i18n
   .use(initReactI18next) // passes i18n down to react-i18next
   .use(LanguageDetector)
   .init({
-    resources: { fr: { translation: fr }, en: { translation: en } },
+    resources: { fr: { translation: fr }, en: { translation: en }, it: {translation: it} },
     debug: false,
     fallbackLng: "en",
 

+ 308 - 0
src/i18n/it.json

@@ -0,0 +1,308 @@
+{
+  "About": "About",
+  "Action forbidden. Try logging in again.": "Action forbidden. Try logging in again.",
+  "Actions": "Actions",
+  "Add all": "Add all",
+  "Add file": "Add file",
+  "Add item": "Add an item",
+  "Add new table": "Add a new table",
+  "Add translation": "Add translation",
+  "Add": "Add an item",
+  "Age": "Age",
+  "Align as line": "Align as line",
+  "Align as square": "Align as square",
+  "All games": "Play",
+  "All players": "All players",
+  "Ask authentication link": "Ask an authentication link",
+  "Available actions": "Available actions",
+  "Back Text": "Back text",
+  "Back image": "Back image",
+  "Baseline": "Baseline",
+  "Board interactions": "Board interactions",
+  "Board size": "Board size",
+  "Box": "Box",
+  "Change game": "Change game",
+  "Change image": "Change",
+  "Chat": "Messages",
+  "Check it to make your board publicly visible": "Check it to make your board publicly visible",
+  "Checkerboard": "Checkerboard",
+  "Choose a new game": "Choose a new game",
+  "Click or drag'n'drop file here": "Click or drag'n'drop file here",
+  "Clone": "Clone",
+  "Close": "Close",
+  "Color 1": "Color 1",
+  "Color 2": "Color 2",
+  "Color": "Color",
+  "Column count": "Column count",
+  "Confirmation": "Confirmation",
+  "Continue a saved game session?": "Continue a saved game session?",
+  "Cookie are disabled or not yet accepted, can't connect": "Cookie are disabled or not yet accepted, can't connect",
+  "Cookie consent message": "This site uses cookies or similar technologies for technical purposes only. You can refuse these cookies but in this case you will not be able to authenticate yourself.",
+  "Copy": "Copy",
+  "Counter": "Counter",
+  "Create a new game": "Add a game",
+  "Cube": "Cube",
+  "Cylinder": "Cylinder",
+  "Default language": "Default language",
+  "Delete": "Delete",
+  "Description": "Description",
+  "Dice": "Dice",
+  "Do you really want to quit game edition?": "Do you really want to quit game edition?",
+  "Do you really want to remove this game?": "Do you really want to remove this game?",
+  "Do you really want to remove this media?": "Do you really want to remove this media?",
+  "Dragn drop file here": "Drop file here to load it",
+  "Duration (mins)": "Duration (mins)",
+  "Edit all items": "Edit all items",
+  "Edit game info": "Configuration",
+  "Edit game information": "Edit game information",
+  "Edit item": "Edit item",
+  "Edit": "Edit",
+  "English": "English",
+  "Enter an image url...": "Enter an image url...",
+  "Enter your email here": "Enter your email here",
+  "Enter your message and press ENTER": "Enter your message...",
+  "Error while deleting game. Try again later...": "Error while deleting game. Try again later...",
+  "Error while deleting media. Try again later...": "Error while deleting media. Try again later...",
+  "Error while logging, verify your email address": "Error while logging, verify your email address",
+  "Error while saving game. Try again later...": "Error while saving game. Try again later...",
+  "Export the board?": "Export the board?",
+  "Export": "Export",
+  "External": "External",
+  "Font size": "Font size",
+  "French": "French",
+  "Front image": "Front image",
+  "Game deleted": "Game deleted",
+  "Game information": "Game information",
+  "Game name": "Game name",
+  "Game saved": "Game saved",
+  "Game studio": "Studio",
+  "Game": "Game",
+  "Generating export": "Generating export...",
+  "Github": "Github",
+  "Go back to studio": "Go back to studio",
+  "Go back": "Back",
+  "Got it!": "Got it!",
+  "Grid type": "Grid type",
+  "Grid": "Grid",
+  "Height": "Height",
+  "Help & info": "Help & info",
+  "Hide action menu": "Hide action menu (m)",
+  "Hide for me": "Hide for me",
+  "Hide menu": "Hide menu",
+  "Hide": "Hide",
+  "Horizontal hexagons": "Horizontal hexagons",
+  "I want to play...": "I want to play...",
+  "If you have checked the publish checkbox your game will be public.": "If you have checked the publish checkbox your game will be public.",
+  "Image": "Image",
+  "In progress...": "In progress...",
+  "Informations": "Informations",
+  "Interaction help": "You can define action automatically executed on items dropped in this zone.",
+  "Interactions": "Interactions",
+  "Invite more player": "Invite more player",
+  "Item interactions": "Item interactions",
+  "Items": "Items",
+  "Jewel": "Jewel",
+  "Label": "Label",
+  "Language": "Language",
+  "Layer": "Layer",
+  "Library": "Library",
+  "Load game": "Load game",
+  "Load previously exported work?": "Load previously exported work?",
+  "Load session": "Load session",
+  "Load": "Load",
+  "Lock action help": "Lock element to avoid selection and unwanted move. Long clic to select it again.",
+  "Lock": "Lock",
+  "Locked?": "Locked?",
+  "Login": "Log in",
+  "Logout": "Log out",
+  "Long click to select locked elements": "Hint: long click to select locked elements",
+  "Magnetic Grid size": "Magnetic grid size",
+  "Mail sent, check your inbox and click the link to login.": "Mail sent, check your inbox and click the link to login.",
+  "Material language": "Material language",
+  "Media deleted": "Media deleted",
+  "Media library": "Media library",
+  "Meeple": "Meeple",
+  "Minimal age (years)": "Minimal age",
+  "Minimum age": "Minimum age",
+  "More information": "More information",
+  "Move mode": "Move mode",
+  "Move": "Move",
+  "Multi-lang": "All",
+  "New game": "New game",
+  "No image": "No image",
+  "No information": "No information",
+  "No": "No",
+  "None": "None",
+  "Note": "Note",
+  "Number of players": "Number of players",
+  "Overlay image": "Overlay image",
+  "Pawn": "Pawn",
+  "Publish": "Publish",
+  "Radius": "Radius",
+  "Ready to play ?": "Ready to play?",
+  "Rectangle": "Rectangle",
+  "Refuse": "Refuse",
+  "Remove all": "Remove all",
+  "Remove": "Remove",
+  "Reveal for me": "Reveal for me",
+  "Reveal": "Reveal",
+  "Roll": "Roll",
+  "Rotate 180": "Rotate 180°",
+  "Rotate 30": "Rotate 30°",
+  "Rotate 45": "Rotate 45°",
+  "Rotate 60": "Rotate 60°",
+  "Rotate 90": "Rotate 90°",
+  "Rotate randomly 180": "Randomly rotate 180°",
+  "Rotate randomly 30": "Randomly rotate 30°",
+  "Rotate randomly 45": "Randomly rotate 45°",
+  "Rotate randomly 60": "Randomly rotate 60°",
+  "Rotate randomly 90": "Randomly rotate 90°",
+  "Rotation": "Rotation",
+  "Round": "Round",
+  "Row count": "Row count",
+  "Save & export": "Save & export",
+  "Save game": "Save",
+  "Save session": "Save session",
+  "Save you work?": "Save you work?",
+  "Save": "Save",
+  "Search for a game": "Search for a game",
+  "Search...": "Search...",
+  "Select image": "Select",
+  "Select media": "Select media",
+  "Select mode": "Select mode",
+  "Select": "Select",
+  "Send": "Send",
+  "Session loading...": "Session loading...",
+  "Session": "Session",
+  "Share this link with your friends": "Share this link with your friends",
+  "Show action menu": "Show action menu (m)",
+  "Show menu": "Show menu",
+  "Shuffle": "Shuffle",
+  "Side count": "Side count",
+  "Size": "Size",
+  "Snap to grid": "Snap to grid",
+  "Stack To Center": "Stack To Center",
+  "Stack To Top Left": "Stack",
+  "Standard": "Standard",
+  "Start a game now": "Start a game now",
+  "Switch to move mode": "Switch to move mode",
+  "Switch to select mode": "Switch to select mode",
+  "Tap": "Tap",
+  "Text Color": "Text color",
+  "Text": "Text",
+  "Token": "Token",
+  "Translation": "Translation",
+  "Unlock": "Unlock",
+  "Unpublished": "Unpublished",
+  "Untap": "Untap",
+  "Uploading image(s)...": "Uploading image(s)...",
+  "Url copied to clipboard!": "Url copied to clipboard!",
+  "User details": "User details",
+  "Username": "Username",
+  "Vertical hexagons": "Vertical hexagons",
+  "Want to continue later?": "Want to continue later?",
+  "Web conference": "Video conference",
+  "Width": "Width",
+  "Yes": "Yes",
+  "You can also save it to your computer.": "You can also save it to your computer.",
+  "You can save the current session on your computer to load it later!": "You can save the current session on your computer to load it later!",
+  "You game will be saved and you can access it later in the studio!": "Your game will be saved and you can access it later in the studio!",
+  "You've locked your first element. Long click to select it again.": "You've locked your first element. Long click on it to select it again.",
+  "Your games": "Your games",
+  "Zone": "Zone",
+  "about": "<0>Air Board Game is a plateform designed to play any board games with your friends online. For more information or to access source code visit <1>Github</1>.</0><2>RGPD</2><3>No personnal data are collected. When you use your email to login, this information is lost and not used for anything else than sending you an authentication link.</3><4>Credits</4><5>Thanks to everybody !</5>",
+  "baseline": "<0>Play board games online<1></1>with your friends - for free!</0><1>Choose from our selection or create your own.<1></1>No need to sign up. Just start a game and share the link with your friends.</1>",
+  "games-available": "{{ nbOfGames }} games available",
+  "helpBoard": "<0><0>Move the board with middle mouse button click. Alternatively you can use left button with alt key.</0><1>Zoom with mouse wheel.</1><2>Switch to edit mode with top button to be able to edit the game.</2><3>You can save and reload game by clicking the burger menu.</3><4>Use <5>Ctrl</5> + <5>1</5>…<5>9</5> to save a position and <5>1</5>…<5>9</5> to restore it.</4><4>Press <5>space</5> to zoom temporally.</4></0>",
+  "helpItem": "<0><0>Double click on any item to execute his main action.</0><1>Long click an item to select a locked item</1><2>See other shortcut on action menu</2></0>",
+  "items": "One item",
+  "items_plural": "{{count}} items",
+  "moreInformation": "<0>For more information, visit <2>github repository</2>.</0>",
+  "{{count}} player": "{{count}} player",
+  "{{count}} player_plural": "{{count}} players",
+  "{{min}} - {{max}} players": "{{min}} - {{max}} players",
+  "{{min}}~{{max}} min": "{{min}}~{{max}} min",
+  "~{{count}} min": "~{{count}} minute",
+  "~{{count}} min_plural": "{{count}} minutes",
+  "Dice image {{index}}": "Side #{{index}}",
+  "Image dice": "Image dice",
+  "Black": "Black",
+  "White": "White",
+  "Red": "Red",
+  "Orange": "Orange",
+  "Yellow": "Yellow",
+  "Green": "Green",
+  "Blue": "Blue",
+  "Purple": "Purple",
+  "{{color}} pawn": "{{color}} pawn",
+  "{{color}} token": "{{color}} token",
+  "{{color}} cube": "{{color}} cube",
+  "{{color}} cylinder": "{{color}} cylinder",
+  "{{color}} meeple": "{{color}} meeple",
+  "{{color}} jewel": "{{color}} jewel",
+  "Board": "Board",
+  "8x8 board": "8x8 board",
+  "Premade": "Premade",
+  "Edit action": "Edit action",
+  "Move up": "Move up",
+  "Move down": "Move down",
+  "Select an action to add...": "Select an action to add...",
+  "Angle": "Angle",
+  "Item actions": "Item actions",
+  "Rotate {{angle}}°": "Rotate {{angle}}°",
+  "Rotate": "Rotate",
+  "Rotate randomly {{angle}}°": "Rotate randomly {{angle}}°",
+  "Rotate randomly": "Rotate randomly",
+  "Edit generated item": "Edit generated item",
+  "Generated item": "Generated item",
+  "Item type": "Generated item type",
+  "No item type defined": "No item type defined",
+  "Generator": "Generator",
+  "Share this link with your friends and start playing immediately.": "Share this link with your friends and start playing immediately.",
+  "Or": "Or",
+  "start a multi room session": "start a multi board session",
+  "Let's go...": "Let's go...",
+  "Choose your board": "Choose your board",
+  "Default": "Default",
+  "Dot": "Dot",
+  "Square": "Square",
+  "Horizontal Stripe": "Horizontal Stripe",
+  "Vertical Stripe": "Vertical Stripe",
+  "Crossed stripes": "Crossed stripes",
+  "Custom": "Custom",
+  "Background": "Background",
+  "Type": "Type",
+  "Main image": "Main image",
+  "Background color": "Background color",
+  "Border color": "Border color",
+  "Border style": "Border style",
+  "Dotted": "Dotted",
+  "solid": "Solid",
+  "Dashed": "Dashed",
+  "Screen": "Screen",
+  "Claim it": "Claim it",
+  "If you claim this screen, everything inside this zone will be hidden from other players.": "If you claim this screen, everything inside this zone will be hidden from other players.",
+  "This screen is owned by {{name}}": "This screen is owned by {{name}}",
+  "Release it": "Release it",
+  "Share game link": "Share game link",
+  "Font family": "Font family",
+  "Text color": "Text color",
+  "Horizontal offset": "Horizontal offset",
+  "Vertical offset": "Vertical offset",
+  "Roll on move": "Roll on move",
+  "Check it to roll the dice after each move.": "Check it to roll the dice after each move.",
+  "Snap families": "Snap families",
+  "Let this field empty to snap all items, or set a comma separated list of families that will be snapped.": "Let this field empty to snap all items, or set a comma separated list of families that will be snapped.",
+  "Family": "Family",
+  "Optional - Use the same family name for items that are part of the same set.": "Optional - Use the same family name for items that are part of the same set.",
+  "Anchor": "Anchor",
+  "Label position": "Label position",
+  "Left": "Left",
+  "Top": "Top",
+  "Keep title": "Show title",
+  "Check it to keep the game title above the game image.": "Check it to keep the game title above the game image.",
+  "Bag": "Sacchetto",
+  "Shuffle Bag": "Mescola Sacchetto",
+  "Empty Bag": "Svuota Sacchetto",
+  "Italian": "Italiano"
+}

+ 7 - 0
src/utils/api.js

@@ -115,6 +115,13 @@ const demoGame = {
         description:
           "# Démonstration\n\nCe jeu vous permet d'apprendre à jouer avec Airboardgame.\n\nPour les autres jeux, vous trouverez dans cette section différentes choses utiles comme le nom de l'auteur ou les règles.",
       },
+      {
+        language: "it",
+        name: "Come giocare?",
+        baseline: "Imparate a giocare con Airboardgame",
+        description:
+          "# Gioco demo\n\nQuesto è un gioco demo per imparare a giocare con Airboardgame.\n\nPer gli altri giochi, potrete trovare informazioni utili o i regolamenti.",
+      },
     ],
   },
 };

+ 0 - 11
src/views/AboutModal.jsx

@@ -31,17 +31,6 @@ const AboutModal = ({ show, setShow }) => {
           your friends online. For more information or to access source code
           visit <a href="https://github.com/jrmi/airboardgame">Github</a>.
         </p>
-        <h3>Legal mentions</h3>
-        <p>
-          This site is hosted by Netlify (San Franscico, US) and OVH (2, rue
-          Kellermann, 59100 Roubaix)
-        </p>
-        <h3>Abuse report</h3>
-        <p>
-          To report abuse, please email at abu
-          <span style={{ display: "none" }}>anti-span</span>
-          se-report@airboardgame.com
-        </p>
         <h3>RGPD</h3>
         <p>
           No personnal data are collected. When you use your email to login,

+ 3 - 0
src/views/BoardView/BoardForm.jsx

@@ -156,6 +156,7 @@ const BoardConfigForm = () => {
         >
           <option />
           <option value="Multi-lang">🌍 {t("Multi-lang")}</option>
+          <option value="it">🇮🇹 {t("Italian")}</option>
           <option value="en">🇬🇧 {t("English")}</option>
           <option value="fr">🇫🇷 {t("French")}</option>
         </Field>
@@ -172,6 +173,7 @@ const BoardConfigForm = () => {
             style={{ width: "15em" }}
           >
             <option />
+            <option value="it">🇮🇹 {t("Italian")}</option>
             <option value="en">🇬🇧 {t("English")}</option>
             <option value="fr">🇫🇷 {t("French")}</option>
           </Field>
@@ -250,6 +252,7 @@ const BoardConfigForm = () => {
                   style={{ width: "15em" }}
                 >
                   <option />
+                  <option value="it">🇮🇹 {t("Italian")}</option>
                   <option value="en">🇬🇧 {t("English")}</option>
                   <option value="fr">🇫🇷 {t("French")}</option>
                 </Field>

+ 12 - 1
src/views/GameListView.jsx

@@ -188,7 +188,7 @@ const GameListView = () => {
     searchTerm: NULL_SEARCH_TERM,
     nbOfPlayers: [1, 9],
     durations: [15, 90],
-    languages: ["fr", "en"],
+    languages: ["fr", "en", "it"],
   });
 
   const { isLoading, data: gameList } = useQuery("games", async () =>
@@ -343,6 +343,17 @@ const GameListView = () => {
                     />
                     <label htmlFor="english-filter">{t("English")}</label>
                   </li>
+                  <li>
+                    <input
+                      type="checkbox"
+                      id="italian-filter"
+                      name="italian-filter"
+                      defaultChecked={filterCriteria.languages.includes("it")}
+                      onChange={() => onChangelanguageFilter("it")}
+                      data-lang="it"
+                    />
+                    <label htmlFor="italian-filter">{t("Italian")}</label>
+                  </li>
                 </ul>
               </div>
             </li>