public ActionResult translate(FormCollection collection)
        {
            // Get the current domain
            Domain currentDomain = Tools.GetCurrentDomain();
            ViewBag.CurrentDomain = currentDomain;

            // Get all the form values
            Int32 translationLanguageId = Convert.ToInt32(collection["selectLanguage"]);
            Int32 post_id = Convert.ToInt32(collection["hiddenPostId"]);
            string title = collection["txtTranslatedTitle"];
            string description = collection["txtTranslatedDescription"];
            string meta_description = collection["txtTranslatedMetadescription"];
            string meta_keywords = collection["txtTranslatedMetakeywords"];
            string page_name = collection["txtTranslatedPagename"];
            DateTime date_added = DateTime.MinValue;
            DateTime.TryParse(collection["txtTranslatedDateAdded"], out date_added);
            bool inactive = Convert.ToBoolean(collection["cbInactive"]);
            string returnUrl = collection["returnUrl"];
            string keywords = collection["txtSearch"];
            Int32 currentPage = Convert.ToInt32(collection["hiddenPage"]);

            // Get query parameters
            ViewBag.QueryParams = new QueryParams(returnUrl);

            // Get the administrator
            Administrator administrator = Administrator.GetSignedInAdministrator();

            // Get the post
            Post standardPost = Post.GetOneById(post_id, currentDomain.back_end_language);

            // Check if the administrator is authorized
            if (Administrator.IsAuthorized(new string[] { "Administrator", "Editor", "Translator" }) == true)
            {
                ViewBag.AdminSession = true;
            }
            else if (administrator != null && administrator.admin_role == "Author" &&
                (standardPost == null || standardPost.administrator_id == administrator.id))
            {
                ViewBag.AdminSession = true;
            }
            else if (Administrator.IsAuthorized(Administrator.GetAllAdminRoles()) == true)
            {
                ViewBag.AdminSession = true;
                ViewBag.AdminErrorCode = 1;
                ViewBag.TranslatedTexts = StaticText.GetAll(currentDomain.back_end_language, "id", "ASC");
                return View("index");
            }
            else
            {
                // Redirect the user to the start page
                return RedirectToAction("index", "admin_login");
            }

            // Get translated texts
            KeyStringList tt = StaticText.GetAll(currentDomain.back_end_language, "id", "ASC");

            // Create the translated post
            Post translatedPost = new Post();
            translatedPost.id = post_id;
            translatedPost.title = title;
            translatedPost.main_content = description;
            translatedPost.meta_description = meta_description;
            translatedPost.meta_keywords = meta_keywords;
            translatedPost.page_name = page_name;
            translatedPost.date_added = AnnytabDataValidation.TruncateDateTime(date_added);
            translatedPost.date_updated = DateTime.UtcNow;
            translatedPost.inactive = inactive;

            // Check if the user wants to do a search
            if (collection["btnSearch"] != null)
            {
                // Set form values
                ViewBag.Keywords = keywords;
                ViewBag.CurrentPage = 1;
                ViewBag.LanguageId = translationLanguageId;
                ViewBag.Languages = Language.GetAll(currentDomain.back_end_language, "name", "ASC");
                ViewBag.StandardPost = standardPost;
                ViewBag.TranslatedPost = translatedPost;
                ViewBag.TranslatedTexts = tt;
                ViewBag.ReturnUrl = returnUrl;

                // Return the translate view
                return View("translate");
            }

            // Check if the user wants to do a search
            if (collection["btnPreviousPage"] != null)
            {
                // Set form values
                ViewBag.Keywords = keywords;
                ViewBag.CurrentPage = currentPage - 1;
                ViewBag.LanguageId = translationLanguageId;
                ViewBag.Languages = Language.GetAll(currentDomain.back_end_language, "name", "ASC");
                ViewBag.StandardPost = standardPost;
                ViewBag.TranslatedPost = translatedPost;
                ViewBag.TranslatedTexts = tt;
                ViewBag.ReturnUrl = returnUrl;

                // Return the translate view
                return View("translate");
            }

            // Check if the user wants to do a search
            if (collection["btnNextPage"] != null)
            {
                // Set form values
                ViewBag.Keywords = keywords;
                ViewBag.CurrentPage = currentPage + 1;
                ViewBag.LanguageId = translationLanguageId;
                ViewBag.Languages = Language.GetAll(currentDomain.back_end_language, "name", "ASC");
                ViewBag.StandardPost = standardPost;
                ViewBag.TranslatedPost = translatedPost;
                ViewBag.TranslatedTexts = tt;
                ViewBag.ReturnUrl = returnUrl;

                // Return the translate view
                return View("translate");
            }

            // Create a error message
            string errorMessage = string.Empty;

            // Get a post on page name
            Post postOnPageName = Post.GetOneByPageName(translatedPost.page_name, translationLanguageId);

            // Check for errors
            if (postOnPageName != null && translatedPost.id != postOnPageName.id)
            {
                errorMessage += "&#149; " + String.Format(tt.Get("error_field_language_unique"), tt.Get("page_name")) + "<br/>";
            }
            if (translatedPost.page_name == string.Empty)
            {
                errorMessage += "&#149; " + String.Format(tt.Get("error_field_required"), tt.Get("page_name")) + "<br/>";
            }
            if (AnnytabDataValidation.CheckPageNameCharacters(translatedPost.page_name) == false)
            {
                errorMessage += "&#149; " + String.Format(tt.Get("error_field_bad_chars"), tt.Get("page_name")) + "<br/>";
            }
            if (translatedPost.page_name.Length > 100)
            {
                errorMessage += "&#149; " + String.Format(tt.Get("error_field_length"), tt.Get("page_name"), "100") + "<br/>";
            }
            if (translatedPost.title.Length > 200)
            {
                errorMessage += "&#149; " + String.Format(tt.Get("error_field_length"), tt.Get("title"), "200") + "<br/>";
            }
            if (translatedPost.meta_description.Length > 200)
            {
                errorMessage += "&#149; " + String.Format(tt.Get("error_field_length"), tt.Get("meta_description"), "200") + "<br/>";
            }
            if (translatedPost.meta_keywords.Length > 200)
            {
                errorMessage += "&#149; " + String.Format(tt.Get("error_field_length"), tt.Get("keywords"), "200") + "<br/>";
            }

            // Check if there is errors
            if (errorMessage == "")
            {
                // Get the saved post
                Post post = Post.GetOneById(post_id, translationLanguageId);

                if (post == null)
                {
                    // Add a new translated post
                    Post.AddLanguagePost(translatedPost, translationLanguageId);
                }
                else
                {
                    // Update values for the saved post
                    post.title = translatedPost.title;
                    post.main_content = translatedPost.main_content;
                    post.meta_description = translatedPost.meta_description;
                    post.meta_keywords = translatedPost.meta_keywords;
                    post.page_name = translatedPost.page_name;
                    post.date_added = translatedPost.date_added;
                    post.date_updated = translatedPost.date_updated;
                    post.inactive = translatedPost.inactive;

                    // Update the post translation
                    Post.UpdateLanguagePost(post, translationLanguageId);
                }

                // Redirect the user to the list
                return Redirect(returnUrl);
            }
            else
            {
                // Set form values
                ViewBag.Keywords = keywords;
                ViewBag.CurrentPage = currentPage;
                ViewBag.LanguageId = translationLanguageId;
                ViewBag.Languages = Language.GetAll(currentDomain.back_end_language, "name", "ASC");
                ViewBag.StandardPost = standardPost;
                ViewBag.TranslatedPost = translatedPost;
                ViewBag.ErrorMessage = errorMessage;
                ViewBag.TranslatedTexts = tt;
                ViewBag.ReturnUrl = returnUrl;

                // Return the translate view
                return View("translate");
            }

        } // End of the translate method