diff --git a/website/next-i18next.config.js b/website/next-i18next.config.js index 7eb7649b69..aa1a480971 100644 --- a/website/next-i18next.config.js +++ b/website/next-i18next.config.js @@ -12,6 +12,7 @@ module.exports = { "eu", "fa", "fr", + "gl", "hu", "it", "ja", diff --git a/website/public/locales/gl/common.json b/website/public/locales/gl/common.json new file mode 100644 index 0000000000..747660ce90 --- /dev/null +++ b/website/public/locales/gl/common.json @@ -0,0 +1,38 @@ +{ + "about": "Acerca", + "account_settings": "Conta", + "admin_dashboard": "Panel de administración", + "connect": "Conectar", + "conversational": "IA conversacional para todos", + "copied": "Copiado", + "dark_mode": "Modo escuro", + "dashboard_home": "Panel principal", + "dashboard": "Panel", + "delete": "Eliminar", + "discord": "Discord", + "docs": "Documentación", + "github": "GitHub", + "leaderboard": "Táboa de líderes", + "legal": "Legal", + "light_mode": "Modo claro", + "loading": "Cargando...", + "messages_dashboard": "Panel de mensaxes", + "messages": "Mensaxes", + "more_information": "Máis información", + "no": "Non", + "parameters": "Parámetros", + "privacy_policy": "Política de privacidade", + "report_a_bug": "Informar dun erro", + "sign_in": "Iniciar sesión", + "sign_out": "Pechar sesión", + "status": "Estado", + "status_dashboard": "Panel de estado", + "success": "Éxito", + "terms_of_service": "Termos de servizo", + "title": "Open Assistant", + "trollboard": "Trollboard", + "user_leaderboard": "Táboa de usuarios", + "users_dashboard": "Panel de usuario", + "users": "Usuarios", + "yes": "Si" +} diff --git a/website/public/locales/gl/dashboard.json b/website/public/locales/gl/dashboard.json new file mode 100644 index 0000000000..96a63f7e0c --- /dev/null +++ b/website/public/locales/gl/dashboard.json @@ -0,0 +1,8 @@ +{ + "grab_a_task": "Colle unha tarefa!", + "create": "Crear", + "evaluate": "Avaliar", + "label": "Etiqueta", + "dashboard": "Panel", + "go": "Ir" +} diff --git a/website/public/locales/gl/index.json b/website/public/locales/gl/index.json new file mode 100644 index 0000000000..d013ceddb5 --- /dev/null +++ b/website/public/locales/gl/index.json @@ -0,0 +1,23 @@ +{ + "blurb": "Cremos que podemos crear unha revolución.", + "blurb1": "Do mesmo xeito que Stable Diffusion axudou ao mundo a facer arte e imaxes de novas maneiras, queremos mellorar o mundo proporcionando unha incríbel IA conversacional.", + "description": "AI conversacional para todos. Un proxecto de código aberto para crear un chat habilitado con GPT LLM dirixido por LAION e colaboradores de todo o mundo.", + "faq_items": { + "q0": "Como de avanzado está o proxecto?", + "a0": "Estamos nas primeiras etapas de desenvolvemento, traballando dende a investigación establecida na aplicación de RLHF (aprendizaxe por reforzo con retroalimentación humana) ata grandes modelos de linguaxe.", + "q1": "Quen está detrás de Open Assistant?", + "a1": "Open Assistant é un proxecto organizado por LAION e individuos de todo o mundo interesados en achegar esta tecnoloxía á xente.", + "q2": "Que licencia emprega Open Assistant?", + "a2": "O código e os modelos están licenciados baixo a licencia Apache 2.0.", + "q3": "Serán publicados os datos de adestramento?", + "a3": "Si, baixo a licencia CC BY 4.0.", + "q4": "Será Open Assistant libre?", + "a4": "Si, Open Assistant será libre de usar e modificar.", + "q5": "Que hardware será necesario para executar os modelos?", + "a5": "Haberá versións que se poderán executar en hardware de consumo." + }, + "faq_title": "Preguntas frecuentes", + "join_us_description": "Tódolos proxectos de código aberto comezan con xente coma ti. O código aberto é a crenza de que se colaboramos podemos agasallar o noso coñecemento e tecnoloxía ao mundo en beneficio da humanidade. Estás dentro? Atópanos aquí:", + "join_us_title": "Únete a nós", + "subtitle": "AI conversacional para todo o mundo." +} diff --git a/website/public/locales/gl/labelling.json b/website/public/locales/gl/labelling.json new file mode 100644 index 0000000000..658d880423 --- /dev/null +++ b/website/public/locales/gl/labelling.json @@ -0,0 +1,24 @@ +{ + "fails_task.question": "É unha mala reposta, segundo a tarefa pedida?", + "hate_speech": "Incitación ao odio", + "hate_speech.explanation": "Contido abusivo ou ameazante que expresa prexuicios contra unha característica protexida. O prexuízo refírese a opinións preconcebidas que non se basean na razón. As características protexidas inclúen o xénero, a etnia, a relixión, a orientación sexual e similares.", + "label_highlighted_flag_instruction": "Elixe calquera que sexa adoitada para a mensaxe destacada:", + "label_highlighted_likert_instruction": "Valora a mensaxe destacada:", + "label_highlighted_yes_no_instruction": "Responde á(s) seguinte(s) pregunta(s) sobre a mensaxe destacada:", + "label_message_flag_instruction": "Elixe calquera que sexa adoitada para a mensaxe:", + "label_message_likert_instruction": "Califica a mensaxe:", + "label_message_yes_no_instruction": "Responde á(s) seguinte(s) pregunta(s) sobre a mensaxe:", + "lang_mismatch": "Non é {{language}}", + "lang_mismatch.explanation": "Non está escrito en {{language}}.", + "moral_judgement": "Xuízo moral", + "moral_judgement.explanation": "Expresa xuízo moral.", + "not_appropriate": "Non apropiado", + "not_appropriate.explanation": "Non apropiado para un asistente.", + "pii": "Contén información de identificación persoal (PII)", + "pii.explanation": "Contén información de identificación persoal. Algúns exemplos son: detalles de contacto persoais, números de licenza e de identidade e detalles bancarios.", + "political_content": "Contido político", + "political_content.explanation": "Expresa opinións políticas.", + "sexual_content": "Contido sexual", + "sexual_content.explanation": "Contén contido sexual.", + "spam.question": "É spam?" +} diff --git a/website/public/locales/gl/leaderboard.json b/website/public/locales/gl/leaderboard.json new file mode 100644 index 0000000000..e2f997d9fe --- /dev/null +++ b/website/public/locales/gl/leaderboard.json @@ -0,0 +1,33 @@ +{ + "accepted": "↪ Aceptadas", + "accepted_prompts": "Indicacións aceptadas", + "daily": "Diario", + "day": "Día", + "good_rankings": "Boas calificacións", + "label": "Etiquetas", + "labels_full": "Etiquetas (completas)", + "labels_simple": "Etiquetas (sinxelas)", + "last_updated_at": "Última actualización: {{val, datetime}}", + "leaderboard": "Táboa de líderes", + "month": "Mes", + "monthly": "Mensual", + "next": "Seguinte", + "overall": "Global", + "previous": "Anterior", + "prompt": "Indicacións", + "rank": "Posición", + "rankings": "Clasificacións", + "replies_assistant": "Resposta como asistente", + "replies_prompter": "Resposta como apuntador", + "reply": "Respostas", + "reply_ranked_1": "Resposta calificada como 1ª", + "score": "Puntuación", + "top_5_contributors_today": "Os 5 principais colaboradores de hoxe", + "total": "Total", + "user": "Usuario", + "view_all": "Ver todo", + "week": "Semana", + "weekly": "Semanal", + "your_account": "A túa conta", + "your_stats": "As túas estatísticas" +} diff --git a/website/public/locales/gl/message.json b/website/public/locales/gl/message.json new file mode 100644 index 0000000000..28e5a43a59 --- /dev/null +++ b/website/public/locales/gl/message.json @@ -0,0 +1,21 @@ +{ + "copy_message_id": "Copiar ID da mensaxe", + "copy_message_link": "Copiar ligazón da mensaxe", + "label_action": "Etiquetar", + "label_title": "Etiqueta", + "message_deleted": "Mensaxe eliminada", + "message": "Mensaxe", + "open_new_tab_action": "Abrir nunha nova lapela", + "parent": "Pai", + "reactions": "Reaccións", + "recent_messages": "Mensaxes recentes en {{language}}", + "report_action": "Informar", + "report_placeholder": "Porque se debería informar desta mensaxe?", + "report_title": "Informe", + "send_report": "Enviar informe", + "stop_tree": "Parar árbore", + "submit_labels": "Enviar", + "tree_stopped": "Árbore parado {{id}}", + "view_user": "Ver usuario", + "your_recent_messages": "As túas mensaxes recentes" +} diff --git a/website/public/locales/gl/tasks.json b/website/public/locales/gl/tasks.json new file mode 100644 index 0000000000..de1bffd722 --- /dev/null +++ b/website/public/locales/gl/tasks.json @@ -0,0 +1,84 @@ +{ + "default": { + "unchanged_title": "Sen cambios", + "unchanged_message": "Estás seguro de que desexas continuar?" + }, + "random": { + "label": "Vou ter sorte", + "desc": "Axúdanos a mellorar Open Assistant comezando unha tarefa aleatoria." + }, + "create_initial_prompt": { + "label": "Crea Indicacións Iniciais", + "desc": "Escribe as indicacións iniciais para axudar a Open Assistant a responder a diversas mensaxes.", + "overview": "Crea unha mensaxe inicial para enviar ao asistente", + "instruction": "Proporciona as indicacións iniciais", + "response_placeholder": "Escribe a túa indicación aquí..." + }, + "reply_as_user": { + "label": "Responder como usuario", + "desc": "Fala con Open Assistant e axuda a mellorar as súas respostas mentres interactúas con él.", + "overview": "Dada a seguinte conversa, proporciona unha resposta axeitada", + "instruction": "Proporciona a resposta de usuario", + "response_placeholder": "Escribe a túa resposta aquí..." + }, + "reply_as_assistant": { + "label": "Responder como asistente", + "desc": "Axuda a Open Assistant a mellorar as súas respostas a conversas con outros usuarios.", + "overview": "Dada a seguinte conversa, proporciona unha resposta axeitada", + "response_placeholder": "Escribe a túa resposta aquí..." + }, + "rank_user_replies": { + "label": "Califica as respostas dos usuarios", + "desc": "Axuda a Open Assistant a mellorar as súas respostas a conversas con outros usuarios.", + "overview": "Dadas as seguintes respostas de usuarios, ordéaas da mellor á peor, sendo a mellor a primeira e a peor a última.", + "unchanged_title": "Orde sen cambios", + "unchanged_message": "Non cambiaches a orde das respostas. Estás seguro de que desexas continuar?" + }, + "rank_assistant_replies": { + "label": "Califica as respostas do asistente", + "desc": "Califica indicacións dadas por Open Assistant en función da súa precisión e lexibilidade.", + "overview": "Dadas as seguintes respostas do asistente, ordéaas da mellor á peor, sendo a mellor a primeira e a peor a última.", + "unchanged_title": "Orde sen cambios", + "unchanged_message": "Non cambiaches a orde das respostas. Estás seguro de que desexas continuar?" + }, + "rank_initial_prompts": { + "label": "Califica as indicacións iniciais", + "desc": "Califica indicacións dadas por Open Assistant en función da súa precisión e lexibilidade.", + "overview": "Dadas as seguintes indicacións iniciais, ordéaas da mellor á peor, sendo a mellor a primeira e a peor a última.", + "unchanged_title": "Orde sen cambios", + "unchanged_message": "Non cambiaches a orde das respostas. Estás seguro de que desexas continuar?" + }, + "label_initial_prompt": { + "label": "Etiqueta de Indicacións Iniciais", + "desc": "Proporciona etiquetas para unha indicación.", + "overview": "Proporciona etiquetas para a seguinte indicación" + }, + "label_prompter_reply": { + "label": "Etiqueta de Resposta do Apuntador", + "desc": "Proporciona etiquetas para unha indicación.", + "overview": "Dada a seguinte conversa, proporciona etiquetas para a indicación final." + }, + "label_assistant_reply": { + "label": "Etiqueta de Resposta do Asistente", + "desc": "Proporciona etiquetas para unha indicación.", + "overview": "Dada a seguinte conversa, proporciona etiquetas para a indicación final." + }, + "classify_initial_prompt": { + "label": "Clasifica as Indicación Inicial", + "desc": "Proporciona etiquetas para unha indicación.", + "overview": "Le a seguinte indicación e responde á pregunta acerca dela." + }, + "classify_prompter_reply": { + "label": "Clasifica as Repostas do Apuntador", + "desc": "Proporciona etiquetas para unha indicación.", + "overview": "Le a seguinte conversa e responde á pregunta do final." + }, + "classify_assistant_reply": { + "label": "Clasifica as Repostas do Asistente", + "desc": "Proporciona etiquetas para unha indicación.", + "overview": "Le a seguinte conversa e responde á pregunta do final." + }, + "available_task_count": "{{count}} tarefas dispoñibles", + "writing_wrong_langauge_a_b": "Parece que estás a escribir en {{detected_lang}} pero esto vai ser enviado en como {{submit_lang}}.", + "submitted_as": "Esto vai ser enviado como {{submit_lang}}" +} diff --git a/website/public/locales/gl/tos.json b/website/public/locales/gl/tos.json new file mode 100644 index 0000000000..122971a54c --- /dev/null +++ b/website/public/locales/gl/tos.json @@ -0,0 +1,6 @@ +{ + "title": "Termos de Servicio para Open Assistant", + "content": "Para continuar usando Open Assistant, tes que aceptar os nosos Termos de Servicio primeiro.", + "accept": "Aceptar", + "decline": "Rexeitar" +} diff --git a/website/src/lib/languages.ts b/website/src/lib/languages.ts index 1e6e1768e5..54b0691e0e 100644 --- a/website/src/lib/languages.ts +++ b/website/src/lib/languages.ts @@ -1,11 +1,15 @@ +const missingDisplayNamesForLocales = { + eu: "Euskara", + gl: "Galego", +}; + /** * Returns the locale's name. */ -export const getLocaleDisplayName = (locale, displayLocale = undefined) => { - // Different browsers seem to handle "eu" differently from the Node server. - // Special case this to avoid a hydration failure. - if (locale === "eu") { - return "Euskara"; +export const getLocaleDisplayName = (locale: string, displayLocale = undefined) => { + // Intl defaults to English for locales that are not oficially translated + if (missingDisplayNamesForLocales[locale]) { + return missingDisplayNamesForLocales[locale]; } const displayName = new Intl.DisplayNames([displayLocale || locale], { type: "language" }).of(locale); // Return the Titlecased version of the language name.