diff --git a/.codeclimate.yml b/.codeclimate.yml
index 975bbe566c8..009a4859a06 100644
--- a/.codeclimate.yml
+++ b/.codeclimate.yml
@@ -6,7 +6,6 @@ languages:
exclude_paths:
- "app/assets/javascripts/defer/*"
- - "app/assets/javascripts/discourse/lib/Markdown.Editor.js"
- "app/assets/javascripts/ember-addons/*"
- "lib/autospec/*"
- "lib/es6_module_transpiler/*"
diff --git a/.eslintignore b/.eslintignore
index 5b61bf6c51f..a520c62c910 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -6,9 +6,8 @@ app/assets/javascripts/pagedown_custom.js
app/assets/javascripts/vendor.js
app/assets/javascripts/locales/i18n.js
app/assets/javascripts/defer/html-sanitizer-bundle.js
-app/assets/javascripts/discourse/lib/Markdown.Editor.js
app/assets/javascripts/ember-addons/
-jsapp/lib/Markdown.Editor.js
+app/assets/javascripts/discourse/lib/autosize.js.es6
lib/javascripts/locale/
lib/javascripts/messageformat.js
lib/javascripts/moment.js
@@ -18,8 +17,8 @@ lib/es6_module_transpiler/support/es6-module-transpiler.js
public/javascripts/
spec/phantom_js/smoke_test.js
vendor/
-test/javascripts/helpers/
test/javascripts/test_helper.js
test/javascripts/test_helper.js
test/javascripts/fixtures
+test/javascripts/helpers/assertions.js
app/assets/javascripts/ember-addons/
diff --git a/.eslintrc b/.eslintrc
index d2a13ae262d..2b3ed3ba7df 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -90,6 +90,7 @@
"no-undef": 2,
"no-unused-vars": 2,
"no-with": 2,
+ "no-this-before-super": 2,
"semi": 2,
"strict": 0,
"valid-typeof": 2,
diff --git a/.gitignore b/.gitignore
index 7b2156d4d56..95d44c86f8a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,6 +47,7 @@ log/
!/plugins/emoji/
!/plugins/lazyYT/
!/plugins/poll/
+!/plugins/discourse-details/
/plugins/*/auto_generated/
/spec/fixtures/plugins/my_plugin/auto_generated
@@ -57,6 +58,9 @@ log/
# Ignore Eclipse .buildpath file
/.buildpath
+# Ignore byebug history
+/.byebug_history
+
# Ignore RubyMine settings
/.idea
diff --git a/.travis.yml b/.travis.yml
index 62961abc4a2..b06b741d924 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,7 +6,6 @@ env:
- RUBY_GC_MALLOC_LIMIT=50000000
matrix:
- "RAILS_MASTER=0"
- - "RAILS42=1"
- "RAILS_MASTER=1"
addons:
@@ -21,7 +20,6 @@ addons:
matrix:
allow_failures:
- env: "RAILS_MASTER=1"
- - env: "RAILS42=1"
- rvm: rbx-2
fast_finish: true
@@ -29,6 +27,7 @@ rvm:
- 2.0.0
- 2.1
- 2.2
+ - 2.3.0
services:
- redis-server
@@ -41,7 +40,7 @@ cache:
before_install:
- gem install bundler
- - npm i -g eslint babel-eslint
+ - npm i -g eslint@2.2 babel-eslint
- eslint app/assets/javascripts
- eslint --ext .es6 app/assets/javascripts
- eslint --ext .es6 test/javascripts
@@ -51,7 +50,6 @@ before_script:
- bundle exec rake db:create db:migrate
install:
- - bash -c "if [ '$RAILS42' == '1' ]; then bundle update --retry=3 --jobs=3 rails rails-observers; fi"
- bash -c "if [ '$RAILS_MASTER' == '1' ]; then bundle update --retry=3 --jobs=3 arel rails rails-observers seed-fu; fi"
- bash -c "if [ '$RAILS_MASTER' == '0' ]; then bundle install --without development --deployment --retry=3 --jobs=3; fi"
diff --git a/.tx/config b/.tx/config
index bba3633be7f..718e97b54cb 100644
--- a/.tx/config
+++ b/.tx/config
@@ -1,6 +1,6 @@
[main]
host = https://www.transifex.com
-lang_map = es_ES: es, fr_FR: fr, ko_KR: ko, pt_PT: pt
+lang_map = es_ES: es, fr_FR: fr, ko_KR: ko, pt_PT: pt, sk_SK: sk, vi_VN: vi
[discourse-org.clientenyml]
file_filter = config/locales/client.
-
-
+
+
@@ -22,9 +22,9 @@ Browse [lots more notable Discourse instances](http://www.discourse.org/faq/cust
## Development
-1. If you're **brand new to Ruby and Rails**, please see [**Discourse as Your First Rails App**](http://blog.discourse.org/2013/04/discourse-as-your-first-rails-app/) or our [**Discourse Vagrant Developer Guide**](docs/VAGRANT.md), which includes a development environment in a virtual machine.
+1. If you're **brand new to Ruby and Rails**, please see [**Discourse as Your First Rails App**](http://blog.discourse.org/2013/04/discourse-as-your-first-rails-app/) or our [**Discourse Vagrant Developer Guide**](docs/VAGRANT.md), which includes a development environment in a virtual machine.
-2. If you're familiar with how Rails works and are comfortable setting up your own environment, use our [**Discourse Advanced Developer Guide**](docs/DEVELOPER-ADVANCED.md).
+2. If you're familiar with how Rails works and are comfortable setting up your own environment, use our [**Discourse Advanced Developer Guide**](docs/DEVELOPER-ADVANCED.md).
Before you get started, ensure you have the following minimum versions: [Ruby 2.0.0+](http://www.ruby-lang.org/en/downloads/), [PostgreSQL 9.3+](http://www.postgresql.org/download/), [Redis 2.6+](http://redis.io/download). If you're having trouble, please see our [**TROUBLESHOOTING GUIDE**](docs/TROUBLESHOOTING.md) first!
@@ -40,13 +40,11 @@ Discourse is built for the *next* 10 years of the Internet, so our requirements
| Browsers | Tablets | Smartphones |
| -------- | ------- | ----------- |
-| Safari 5.1+| iPad 2+ | iOS 7+ |
-| Google Chrome 23+ | Android 4.1+ | Android 4.1+ |
+| Safari 5.1+| iPad 2+ | iOS 7+ |
+| Google Chrome 23+ | Android 4.3+ | Android 4.3+ |
| Internet Explorer 10+ | Windows 8 | Windows Phone 8 |
| Firefox 16+ | |
-Internet Explorer 9.0 will no longer be supported in 2016.
-
## Built With
- [Ruby on Rails](https://github.com/rails/rails) — Our back end API is a Rails app. It responds to requests RESTfully in JSON.
@@ -58,7 +56,7 @@ Plus *lots* of Ruby Gems, a complete list of which is at [/master/Gemfile](https
## Contributing
-[](https://travis-ci.org/discourse/discourse)
+[](https://travis-ci.org/discourse/discourse)
[](https://codeclimate.com/github/discourse/discourse)
Discourse is **100% free** and **open source**. We encourage and support an active, healthy community that
@@ -69,7 +67,9 @@ Before contributing to Discourse:
1. Please read the complete mission statements on [**discourse.org**](http://www.discourse.org). Yes we actually believe this stuff; you should too.
2. Read and sign the [**Electronic Discourse Forums Contribution License Agreement**](http://discourse.org/cla).
3. Dig into [**CONTRIBUTING.MD**](CONTRIBUTING.md), which covers submitting bugs, requesting new features, preparing your code for a pull request, etc.
-4. Not sure what to work on? [**We've got some ideas.**](http://meta.discourse.org/t/so-you-want-to-help-out-with-discourse/3823)
+4. Always strive to collaborate [with mutual respect](https://github.com/discourse/discourse/blob/master/docs/code-of-conduct.md).
+5. Not sure what to work on? [**We've got some ideas.**](http://meta.discourse.org/t/so-you-want-to-help-out-with-discourse/3823)
+
We look forward to seeing your pull requests!
diff --git a/app/assets/fonts/FontAwesome.otf b/app/assets/fonts/FontAwesome.otf
index 681bdd4d4c8..3ed7f8b48ad 100644
Binary files a/app/assets/fonts/FontAwesome.otf and b/app/assets/fonts/FontAwesome.otf differ
diff --git a/app/assets/fonts/fontawesome-webfont.eot b/app/assets/fonts/fontawesome-webfont.eot
index a30335d748c..9b6afaedc0f 100644
Binary files a/app/assets/fonts/fontawesome-webfont.eot and b/app/assets/fonts/fontawesome-webfont.eot differ
diff --git a/app/assets/fonts/fontawesome-webfont.svg b/app/assets/fonts/fontawesome-webfont.svg
index 6fd19abcb9e..d05688e9e28 100644
--- a/app/assets/fonts/fontawesome-webfont.svg
+++ b/app/assets/fonts/fontawesome-webfont.svg
@@ -1,6 +1,6 @@
-
"
+ title: "HTML que se inserirá antes da etiqueta "
+ override_default: "Non incluír folla de estilo estándar"
+ enabled: "Activado?"
+ preview: "previsualizar"
+ undo_preview: "eliminar previsualización"
+ rescue_preview: "estilo predeterminado"
+ explain_preview: "Ver o sitio con esta folla de estilo personalizada"
+ explain_undo_preview: "Volver á folla de estilo personalizada activada actualmente"
+ explain_rescue_preview: "Ver o sitio coa folla de estilo predeterminada"
+ save: "Gardar"
+ new: "Novo"
+ new_style: "Novo estilo"
+ import: "Importar"
+ import_title: "Seleccionar un ficheiro ou pegar un texto"
+ delete: "Eliminar"
+ delete_confirm: "Queres eliminar esta personalización?"
+ about: "Modificar as follas de estilo CSS e as cabeceiras HTML do sitio. Engadir unha personalización para comezar."
+ color: "Cor"
+ opacity: "Opacidade"
+ copy: "Copiar"
+ email_templates:
+ title: "Modelos de correo-e"
+ subject: "Asunto"
+ multiple_subjects: "Este modelo de correo-e ten varios asuntos."
+ body: "Corpo"
+ none_selected: "Selecciona un modelo de correo-e para comezar a edición."
+ revert: "Reverter os cambios"
+ revert_confirm: "Confirmas a reversión dos cambios?"
+ css_html:
+ title: "CSS/HTML"
+ long_title: "Personalizacións do CSS e do HTML"
+ colors:
+ title: "Cores"
+ long_title: "Esquemas de cor"
+ about: "Modifica as cores usadas no sitio sen ter que escribir en CSS. Engade un esquema para comezar."
+ new_name: "Novo esquema de cores"
+ copy_name_prefix: "Copiar de"
+ delete_confirm: "Queres eliminar este esquema de cor?"
+ undo: "desfacer"
+ undo_title: "Desfai os teus cambio nesta cor desde a última vez que a gardaches."
+ revert: "reverter"
+ revert_title: "Restabelecer o esquema de cor ao predeterminado de Discourse."
+ primary:
+ name: 'primario'
+ description: 'Principalmente texto, iconas e bordos.'
+ secondary:
+ name: 'secundario'
+ description: 'Cor principal do fondo e cor do texto dalgúns botóns.'
+ tertiary:
+ name: 'terciario'
+ description: 'Ligazóns, algúns botóns, notificacións e cor de resalte.'
+ quaternary:
+ name: "cuaternario"
+ description: "Ligazóns de navegación"
+ header_background:
+ name: "Fondo da cabeceira"
+ description: "Cor do fondo na cabeceira do sitio."
+ header_primary:
+ name: "cabeceira primaria"
+ description: "Texto e iconas na cabeceira do sitio."
+ highlight:
+ name: 'resaltes'
+ description: 'Cor do fondo dos elementos resaltados da páxina, como publicacións e temas.'
+ danger:
+ name: 'perigo'
+ description: 'Cor de resalte para accións como eliminar publicacións e temas.'
+ success:
+ name: 'correcto'
+ description: 'Usado para indicar que unha acción se realizou correctamente.'
+ love:
+ name: 'gústame'
+ description: "Cor do botón Gústame."
+ email:
+ title: "Correos electrónicos"
+ settings: "Axustes"
+ templates: "Modelos"
+ preview_digest: "Previsualización do compendio"
+ sending_test: "Enviando correo-e de proba..."
+ error: "ERRO - %{server_error}"
+ test_error: "Produciuse un problema enviando o correo-e de proba. Revisa os teus axustes de correo electrónico, comproba que o teu host non está bloqueando as conexións de correo e téntao de novo."
+ sent: "Enviado"
+ skipped: "Saltado"
+ received: "Recibidos"
+ rejected: "Rexeitado"
+ sent_at: "Enviado ás"
+ time: "Hora"
+ user: "Usuario"
+ email_type: "Tipo de correo-e"
+ to_address: "Ao enderezo"
+ test_email_address: "enderezo de correo-e de proba"
+ send_test: "Enviar correo-e de proba"
+ sent_test: "enviado!"
+ delivery_method: "Metodo de entrega"
+ preview_digest_desc: "Previsualiza o contido dos correos-e compendio enviados a usuarios inactivos."
+ refresh: "Actualizar"
+ format: "Formato"
+ html: "html"
+ text: "texto"
+ last_seen_user: "Último usuario visto:"
+ reply_key: "Tecla para responder"
+ skipped_reason: "Saltar razón"
+ incoming_emails:
+ from_address: "De"
+ to_addresses: "A"
+ cc_addresses: "Cc"
+ subject: "Asunto"
+ error: "Erro"
+ none: "Non se atoparon correos entrantes."
+ modal:
+ title: "Detalles dos correos-e entrantes"
+ error: "Erro"
+ subject: "Asunto"
+ body: "Corpo"
+ rejection_message: "Correo-e de rexeitamento"
+ filters:
+ from_placeholder: "de@exemplo.com"
+ to_placeholder: "a@exemplo.com"
+ cc_placeholder: "cc@exemplo.com"
+ subject_placeholder: "Asunto..."
+ error_placeholder: "Erro"
+ logs:
+ none: "Non se atoparon rexistros."
+ filters:
+ title: "Filtro"
+ user_placeholder: "nome de usuario"
+ address_placeholder: "nome@exemplo.com"
+ type_placeholder: "compendio, rexistro..."
+ reply_key_placeholder: "tecla para responder"
+ skipped_reason_placeholder: "razón"
+ logs:
+ title: "Rexistros"
+ action: "Acción"
+ created_at: "Creado"
+ last_match_at: "Último resultado"
+ match_count: "Resultados"
+ ip_address: "IP"
+ topic_id: "ID do tema"
+ post_id: "ID da publicación"
+ category_id: "ID da categoría"
+ delete: 'Eliminar'
+ edit: 'Editar'
+ save: 'Gardar'
+ screened_actions:
+ block: "bloquear"
+ do_nothing: "non facer nada"
+ staff_actions:
+ title: "Accións do equipo"
+ instructions: "Premer nos nomes dos usuarios e nas accións para filtrar a lista. Premer nas imaxes dos perfís para ir ás páxinas dos usuarios."
+ clear_filters: "Amosar todo"
+ staff_user: "Usuario do equipo"
+ target_user: "Usuario obxectivo"
+ subject: "Asunto"
+ when: "Cando"
+ context: "Contexto"
+ details: "Detalles"
+ previous_value: "Anterior"
+ new_value: "Novo"
+ diff: "Diferenzas"
+ show: "Amosar"
+ modal_title: "Detalles"
+ no_previous: "Non hai ningún valor previo."
+ deleted: "Non hai ningún valor. O rexistro foi eliminado."
+ actions:
+ delete_user: "eliminar usuario"
+ change_trust_level: "cambiar nivel de confianza"
+ change_username: "cambiar nome do usuario"
+ change_site_setting: "cambiar axuste do sitio"
+ change_site_customization: "cambiar a personalización do sitio"
+ delete_site_customization: "eliminar a personalización do sitio"
+ change_site_text: "cambiar o texto do sitio"
+ suspend_user: "suspender usuario"
+ unsuspend_user: "non suspender usuario"
+ grant_badge: "conceder insignia"
+ revoke_badge: "revogar insignia"
+ check_email: "comprobar correo-e"
+ delete_topic: "eliminar tema"
+ delete_post: "eliminar publicación"
+ impersonate: "suplantar"
+ anonymize_user: "facer o usuario anónimo"
+ roll_up: "encartar os bloques de IP"
+ change_category_settings: "cambiar axustes da categoría"
+ delete_category: "eliminar categoría"
+ create_category: "crear categoría"
+ block_user: "bloquear usuario"
+ unblock_user: "desbloquear usuario"
+ grant_admin: "conceder administración"
+ revoke_admin: "revogar administración"
+ grant_moderation: "conceder moderación"
+ revoke_moderation: "revogar moderación"
+ backup_operation: "operación de copia de seguranza"
+ screened_emails:
+ title: "Correos-e controlados"
+ description: "Cando alguén tente crear unha nova conta, comprobaranse os seguintes enderezos de correo electrónico e bloquearase o rexistro ou se tomará outra medida."
+ email: "Enderezo de correo-e"
+ actions:
+ allow: "Permitir"
+ screened_urls:
+ title: "URL controladas"
+ description: "As URL listadas aquí usáronse en publicacións de usuarios que foron identificados como spammers."
+ url: "URL"
+ domain: "Dominio"
+ screened_ips:
+ title: "IP controladas"
+ description: 'Enderezos IP observados. Usa «Permitir» para engadilos á lista branca.'
+ delete_confirm: "Confirmas a eliminación da regra para %{ip_address}?"
+ roll_up_confirm: "Confirmas que queres agrupar en subredes os enderezos IP controlados comunmente?"
+ rolled_up_some_subnets: "Agrupáronse correctamente en subredes as entradas de IP para bloquear: %{subnets}."
+ rolled_up_no_subnet: "Non hai nada que agrupar."
+ actions:
+ block: "Bloquear"
+ do_nothing: "Permitir"
+ allow_admin: "Permitir administrador"
+ form:
+ label: "Novo:"
+ ip_address: "Enderezo IP"
+ add: "Engadir"
+ filter: "Buscar"
+ roll_up:
+ text: "Agrupar"
+ title: "Crea unha nova subrede de entradas para bloquear se hai cando menos «min_ban_entries_for_roll_up» entradas."
+ logster:
+ title: "Rexistros de erros"
+ impersonate:
+ title: "Suplantar"
+ help: "Usar esta ferramenta para suplantar unha conta de usuario co obxecto de detectar e corrixir erros. Deberás saír da sesión ao rematar."
+ not_found: "Non é posíbel atopar o usuario."
+ invalid: "Sentímolo pero non podes suplantar este usuario."
+ users:
+ title: 'Usuarios'
+ create: 'Engadir usuario administrador'
+ last_emailed: "Últimos envíos por correo-e"
+ not_found: "Sentímolo pero o nome do usuario non existe no sistema."
+ id_not_found: "Sentímolo pero o usuario non existe no sistema."
+ active: "Activo"
+ show_emails: "Amosar correos-e"
+ nav:
+ new: "Novo"
+ active: "Activo"
+ pending: "Pendente"
+ staff: 'Equipo'
+ suspended: 'Suspendido'
+ blocked: 'Bloqueado'
+ suspect: 'Sospeitoso'
+ approved: "Aprobado?"
+ approved_selected:
+ one: "aprobar usuario"
+ other: "aprobar os ({{count}}) usuarios"
+ reject_selected:
+ one: "rexeitar usuario"
+ other: "rexeitar os ({{count}}) usuarios"
+ titles:
+ active: 'Usuarios activos'
+ new: 'Novos usuarios'
+ pending: 'Usuarios pendentes de revisión'
+ newuser: 'Usuarios cun nivel de confianza 0 (novo usuario)'
+ basic: 'Usuarios cun nivel de confianza 1 (usuario básico)'
+ member: 'Usuarios cun nivel de confianza 2 (membro)'
+ regular: 'Usuarios cun nivel de confianza 3 (normal)'
+ leader: 'Usuarios cun nivel de confianza 4 (líder)'
+ staff: "Equipo"
+ admins: 'Usuarios administradores'
+ moderators: 'Moderadores'
+ blocked: 'Usuarios bloqueados'
+ suspended: 'Usuarios suspendidos'
+ suspect: 'Usuarios sospeitosos'
+ reject_successful:
+ one: "Rexeitouse un usuario correctamente."
+ other: "Rexeitáronse %{count} usuarios correctamente."
+ reject_failures:
+ one: "Produciuse un fallo rexeitando o usuario."
+ other: "Produciuse un fallo rexeitando os %{count} usuarios."
+ not_verified: "Sen verificar"
+ check_email:
+ title: "Amosar o enderezo de correo-e deste usuario"
+ text: "Amosar"
+ user:
+ suspend_failed: "Algo fallou rexeitando este usuario {{error}}"
+ unsuspend_failed: "Algo foi mal levantando a suspensión deste usuario {{error}}"
+ suspend_duration: "Canto tempo estará suspendido o usuario?"
+ suspend_duration_units: "(días)"
+ suspend_reason_label: "Cal é o motivo da suspensión? Este texto será visíbel para todo o mundo na páxina do perfil deste usuario e amosaráselle ao usuario cando tente iniciar sesión. Procura ser breve."
+ suspend_reason: "Razón"
+ suspended_by: "Suspendido por"
+ delete_all_posts: "Eliminar todas as publicacións"
+ delete_all_posts_confirm: "Confirmas a eliminación de %{posts} publicacións e %{topics} temas?"
+ suspend: "Suspender"
+ unsuspend: "Non suspender"
+ suspended: "Suspendido?"
+ moderator: "Moderador?"
+ admin: "Administrador?"
+ blocked: "Bloqueado?"
+ staged: "Transitorio?"
+ show_admin_profile: "Administración"
+ edit_title: "Editar título"
+ save_title: "Gardar título"
+ refresh_browsers: "Forzar a actualización do navegador"
+ refresh_browsers_message: "Mensaxe enviada a todos os clientes."
+ show_public_profile: "Amosar o perfil público"
+ impersonate: 'Suplantar'
+ ip_lookup: "Busca de IP"
+ log_out: "Saír da sesión"
+ logged_out: "O usuario foi desconectado en todos os dispositivos"
+ revoke_admin: 'Revogar administrador'
+ grant_admin: 'Facer administrador'
+ revoke_moderation: 'Revogar moderación'
+ grant_moderation: 'Conceder moderación'
+ unblock: 'Desbloquear'
+ block: 'Bloquear'
+ reputation: Reputación
+ permissions: Permisos
+ activity: Actividade
+ like_count: Gústames dados / Recibidos
+ last_100_days: 'nos últimos 100 días'
+ private_topics_count: Temas privados
+ posts_read_count: Publicacións lidas
+ post_count: Publicacións creadas
+ topics_entered: Temas vistos
+ flags_given_count: Denuncias dadas
+ flags_received_count: Denuncias recibidas
+ warnings_received_count: Avisos recibidos
+ flags_given_received_count: 'Denuncias dadas / Recibidas'
+ approve: 'Aprobar'
+ approved_by: "aprobado por"
+ approve_success: "Usuario aprobado, enviouse un correo-e coas instrucións de activación."
+ approve_bulk_success: "Todos os usuarios seleccionados foron aprobados e notificados."
+ time_read: "Tempo de lectura"
+ anonymize: "Facer o usuario anónimo"
+ anonymize_confirm: "Confirmas que desexas converter esta conta en anónima? Cambiaranse o nome do usuario e o correo electrónico e restabelecerase toda a información do perfil."
+ anonymize_yes: "Si, converter a conta en anónima"
+ anonymize_failed: "Produciuse un problema convertendo a conta en anónima."
+ delete: "Eliminar usuario"
+ delete_forbidden_because_staff: "Non é posíbel eliminiar os administradores e moderadores."
+ delete_posts_forbidden_because_staff: "Non é posíbel eliminar todas as publicacións dos administradores ou moderadores."
+ delete_forbidden:
+ one: "Non é posíbel eliminar usuarios se teñen publicacións. Elimina as publicacións antes de eliminar o usuario (non é posíbel eliminar publicacións de máis de %{count} día)"
+ other: "Non é posíbel eliminar usuarios se teñen publicacións. Elimina as publicacións antes de eliminar o usuario (non é posíbel eliminar publicacións de máis de %{count} días)"
+ cant_delete_all_posts:
+ one: "Non é posíbel eliminar todas as publicacións. Algunhas teñen máis de %{count} día. (o axuste delete_user_max_post_age.)"
+ other: "Non é posíbel eliminar todas as publicacións. Algunhas teñen máis de %{count} días. (o axuste delete_user_max_post_age.)"
+ cant_delete_all_too_many_posts:
+ one: "Non é posíbel eliminar todas as publicacións porque o usuario ten máis dunha publicación. (delete_all_posts_max)"
+ other: "Non é posíbel eliminar todas as publicacións porque o usuario ten máis de %{count} publicacións. (delete_all_posts_max)"
+ delete_confirm: "CONFIRMAS a eliminación deste usuario? Non se poderá desfacer!"
+ delete_and_block: "Eliminar e bloquear este correo-e e enderezo IP"
+ delete_dont_block: "Só eliminar"
+ deleted: "Eliminouse o usuario."
+ delete_failed: "Produciuse un erro eliminando este usuario. Asegúrate que se eliminan todas as publicacións antes de tentar eliminar o usuario."
+ send_activation_email: "Enviar correo-e de activación"
+ activation_email_sent: "Enviouse un correo electrónico de activación."
+ send_activation_email_failed: "Produciuse un problema enviando outro correo-e de activación. %{error}"
+ activate: "Activar conta"
+ activate_failed: "Produciuse un problema activando o usuario."
+ deactivate_account: "Desactivar a conta"
+ deactivate_failed: "Produciuse un problema desactivando o usuario."
+ unblock_failed: 'Produciuse un problema desbloqueando o usuario.'
+ block_failed: 'Produciuse un problema bloqueando o usuario.'
+ block_confirm: 'Confirmas o bloqueo deste usuario? Non poderá crear máis temas nin publicacións.'
+ block_accept: 'Si, bloquealo'
+ deactivate_explanation: "Un usuario desactivado debe revalidar o seu correo-e."
+ suspended_explanation: "Un usuario suspendido non pode iniciar sesión."
+ block_explanation: "Un usuario bloquedo non pode publicar nin iniciar temas."
+ stage_explanation: "Un usuario transitorio só pode publicar por correo electrónico en temas específicos."
+ trust_level_change_failed: "Produciuse un problema cambiando o nivel de confianza do usuario."
+ suspend_modal_title: "Suspender usuario"
+ trust_level_2_users: "Usuarios con nivel 2 de confianza"
+ trust_level_3_requirements: "Requirimentos para o nivel de confianza 3"
+ trust_level_locked_tip: "o nivel de confianza está bloqueado, o sistema non promocionará nin rebaixará o usuario"
+ trust_level_unlocked_tip: "o nivel de confianza está desbloqueado, o sistema pode promocionar ou rebaixar o usuario"
+ lock_trust_level: "Bloquear o nivel de confianza"
+ unlock_trust_level: "Desbloquear o nivel de confianza"
+ tl3_requirements:
+ title: "Requerimentos para o nivel 3 de confianza"
+ table_title: "Nos últimos %{time_period} días:"
+ value_heading: "Valor"
+ requirement_heading: "Requirimento"
+ visits: "Visitas"
+ days: "días"
+ topics_replied_to: "Temas os que respondeu"
+ topics_viewed: "Temas vistos"
+ topics_viewed_all_time: "Temas vistos (todo o tempo)"
+ posts_read: "Publicacións lidas"
+ posts_read_all_time: "Publicacións lidas (todo o tempo)"
+ flagged_posts: "Publicacións denunciadas"
+ flagged_by_users: "Usuarios que denunciaron"
+ likes_given: "Gústames dados"
+ likes_received: "Gústames recibidos"
+ likes_received_days: "Gústames recibidos: por días"
+ likes_received_users: "Gústames recibidos: usuarios"
+ qualifies: "Cumpre os requisitos para o nivel de confianza 3."
+ does_not_qualify: "Non cumpre os requisitos para o nivel de confianza 3."
+ will_be_promoted: "Será promocionado pronto."
+ will_be_demoted: "Será rebaixado pronto."
+ on_grace_period: "Actualmente ne periodo de graza da promoción, non será rebaixado"
+ locked_will_not_be_promoted: "Nivel de confianza bloqueado. Non se promocionará nunca."
+ locked_will_not_be_demoted: "Nivel de confianza bloqueado. Non será rebaixado nunca."
+ sso:
+ title: "Inicio de sesión simple"
+ external_id: "ID externo"
+ external_username: "Nome do usuario"
+ external_name: "Nome"
+ external_email: "Correo electrónico"
+ external_avatar_url: "URL da imaxe do perfil"
+ user_fields:
+ title: "Campos do usuario"
+ help: "Engade campos que os usuarios poidan encher."
+ create: "Crear un campo de usuario"
+ untitled: "Sen título"
+ name: "Nome do campo"
+ type: "TIpo de campo"
+ description: "Descrición do campo"
+ save: "Gardar"
+ edit: "Editar"
+ delete: "Eliminar"
+ cancel: "Cancelar"
+ delete_confirm: "Confirmas a eliminación deste campo do usuario?"
+ options: "Opcións"
+ required:
+ title: "Requirido para rexistrarse?"
+ enabled: "obrigatorio"
+ disabled: "non obrigatorio"
+ editable:
+ title: "Editábel despois do rexistro?"
+ enabled: "editábel"
+ disabled: "non editábel"
+ show_on_profile:
+ title: "Amosar no perfil público?"
+ enabled: "amosado no perfil"
+ disabled: "non amosado no perfil"
+ field_types:
+ text: 'Campo de texto'
+ confirm: 'Confirmación'
+ dropdown: "Despregábel"
+ site_text:
+ description: "Podes personalizar calquera texto do teu foro. Comeza por buscar debaixo:"
+ search: "Busca o texto que queres editar"
+ title: 'Contido do texto'
+ edit: 'editar'
+ revert: "Reverter os cambios"
+ revert_confirm: "Confirmas a reversión dos cambios?"
+ go_back: "Volver á busca"
+ recommended: "Recomendamos personalizar o seguinte texto para axeitalo ás túas necesidades:"
+ show_overriden: 'Amosar só os cambios'
+ site_settings:
+ show_overriden: 'Amosar só os cambios'
+ title: 'Axustes'
+ reset: 'restabelecer'
+ none: 'ningunha'
+ no_results: "Non se atoparon resultados."
+ clear_filter: "Borrar"
+ add_url: "engadir URL"
+ add_host: "engadir host"
+ categories:
+ all_results: 'Todas'
+ required: 'Obrigatorio'
+ basic: 'Configuración básica'
+ users: 'Usuarios'
+ posting: 'Publicación'
+ email: 'Correo electrónico'
+ files: 'Ficheiros'
+ trust: 'Niveis de confianza'
+ security: 'Seguranza'
+ onebox: "Onebox"
+ seo: 'SEO'
+ spam: 'Spam'
+ rate_limits: 'Límites de frecuencia'
+ developer: 'Desenvolvedor'
+ embedding: "Encaixado"
+ legal: "Legal"
+ uncategorized: 'Outro'
+ backups: "Copias de seguranza"
+ login: "Iniciar sesión"
+ plugins: "Plugins"
+ user_preferences: "Preferencias do usuario"
+ badges:
+ title: Insignias
+ new_badge: Nova insignia
+ new: Novo
+ name: Nome
+ badge: Insignia
+ display_name: Nome público
+ description: Descrición
+ badge_type: Tipo de insignia
+ badge_grouping: Grupo
+ badge_groupings:
+ modal_title: Grupos de insignias
+ granted_by: Concedido por
+ granted_at: Concedido
+ reason_help: (Ligazón a unha publicación ou tema)
+ save: Gardar
+ delete: Eliminar
+ delete_confirm: Confirmas a eliminación desta insignia?
+ revoke: Revogar
+ reason: Razón
+ expand: Expandir …
+ revoke_confirm: Confirmas a revogación desta insignia?
+ edit_badges: Editar insignias
+ grant_badge: Conceder insignia
+ granted_badges: Insignias concedidas
+ grant: Conceder
+ no_user_badges: "A %{name} non se lle concedeu ningunha insignia."
+ no_badges: Non hai insignias para conceder.
+ none_selected: "Selecciona unha insignia para comezar"
+ allow_title: Permitir que se use a insignia como un título
+ multiple_grant: Pode concederse múltiples veces
+ listable: Amosar a insignia na páxina de insignias públicas
+ enabled: Activar insignia
+ icon: Icona
+ image: Imaxe
+ icon_help: "Usar a clase Font Awesome ou unha URL a unha imaxe"
+ query: Consulta sobre insignia (SQL)
+ target_posts: Consulta dirixida a mensaxes
+ auto_revoke: Executar a consulta de revogación diariamente
+ show_posts: Amosar a publicación concedendo a insignia na páxina das insignias
+ trigger: Activador
+ trigger_type:
+ none: "Actualizar diariamente"
+ post_action: "Cando un usuario actúa sobre unha publicación"
+ post_revision: "Cando un usuario edita ou crea unha publicación"
+ trust_level_change: "Cando un usuario cambia o nivel de confianza"
+ user_change: "Cando se crea ou edita un usuario"
+ preview:
+ link_text: "Previsualizar as insignias concedidas"
+ plan_text: "Vista previa do plan da consulta"
+ modal_title: "Previsualizar a consulta de insignias"
+ sql_error_header: "Produciuse un erro coa consulta."
+ error_help: "Busca axuda nas seguintes ligazóns sobre consultas de insignias."
+ bad_count_warning:
+ header: "AVISO"
+ text: "Faltan algunhas mostras para a concesión da insignia. Isto acontece cando a consulta sobre insignias devolve unha ID do usuario, ou de publicacións que non existen. Pode causar resultados inesperados posteriormente. Revisa outra vez a solicitude."
+ no_grant_count: "Non hai insignias para asignar."
+ grant_count:
+ one: "1 insignia para asignar."
+ other: "%{count} insignias para asignar."
+ sample: "Mostra:"
+ grant:
+ with: %{username}
+ with_post: %{username} para publicación en %{link}
+ with_post_time: %{username} para publicación en %{link} o %{time}
+ with_time: %{username} o %{time}
+ emoji:
+ title: "Emoji"
+ help: "Engade novo emoji que estará dispoñíbel para todos. (Suxestión: arrastra e solta múltiples ficheiros dunha vez)"
+ add: "Engadir novo Emoji"
+ name: "Nome"
+ image: "Imaxe"
+ delete_confirm: "Confirmas a eliminación do emoji :%{name}:?"
+ embedding:
+ get_started: "Se queres encaixar o Discourse noutro sitio web, comeza engadindo o seu host."
+ confirm_delete: "Confirmas a eliminación deste host?"
+ sample: "Usa o seguinte código HTML no teu sitio para crear e encaixar temas do Discourse. Substitúe REPLACE_ME pola URL canónica da páxina que recibe o encaixado. "
+ title: "Encaixado"
+ host: "Hosts permitidos"
+ edit: "editar"
+ category: "Publicación a categoría"
+ add_host: "Engadir host"
+ settings: "Axustes para o encaixado"
+ feed_settings: "Axustes das fontes"
+ feed_description: "Dotar dunha fonte RSS/ATOM o teu sitio pode mellorar a capacidade de Discourse para importar o teu contido."
+ crawling_settings: "Axustes do extractor"
+ crawling_description: "Cando o Discourse crea temas para as túas publicacións, se non existe unha fonte RSS/ATOM, tentará analizar o contido do teu HTML. Ás veces pode ser difícil extraer o contido, por iso damos a posibilidade de especificar as regras do CSS para facilitar a extracción."
+ embed_by_username: "Nome do usuario para crear o tema"
+ embed_post_limit: "Número máximo de publicacións a encaixar"
+ embed_username_key_from_feed: "Clave para extraer da fonte o nome do usuario do discourse"
+ embed_truncate: "Truncar as publicacións encaixadas"
+ embed_whitelist_selector: "Selector CSS de elementos permitidos nos encaixados"
+ embed_blacklist_selector: "Selector CSS para elementos retirados nos encaixados"
+ feed_polling_enabled: "Importar publicacións vía RSS/ATOM"
+ feed_polling_url: "URL da fonte RSS/ATOM para facer a extracción"
+ save: "Gardar axustes de encaixado"
+ permalink:
+ title: "Ligazóns permanentes"
+ url: "URL"
+ topic_id: "ID do tema"
+ topic_title: "Tema"
+ post_id: "ID da publicación"
+ post_title: "Publicación"
+ category_id: "ID da categoría"
+ category_title: "Categoría"
+ external_url: "URL externa"
+ delete_confirm: Confirmas a eliminación desta ligazón permanente?
+ form:
+ label: "Novo:"
+ add: "Engadir"
+ filter: "Buscar (URLou URL externa)"
+ lightbox:
+ download: "descargar"
+ search_help:
+ title: 'Buscar axuda'
+ keyboard_shortcuts_help:
+ title: 'Atallos do teclado'
+ jump_to:
+ title: 'Ir a'
+ home: 'g, h Inicio'
+ latest: 'g, l Último'
+ new: 'g, n Novo'
+ unread: 'g, u Sen ler'
+ categories: 'g, c Categorías'
+ top: 'g, t Arriba'
+ bookmarks: 'g, b Marcadores'
+ profile: 'g, p Perfil'
+ messages: 'g, m Mensaxes'
+ navigation:
+ title: 'Navegación'
+ jump: '# Ir á publicación #'
+ back: 'u Volver'
+ up_down: 'k/j Mover selección ↑ ↓'
+ open: 'o ou Intro Abrir tema seleccionado'
+ next_prev: 'maiús.+j/maiús.+k Sección Seguinte/Anterior'
+ application:
+ title: 'Aplicativo'
+ create: 'c Crear un novo tema'
+ notifications: 'n Abrir notificacións'
+ hamburger_menu: '= Abrir o menú hamburguesa'
+ user_profile_menu: 'p Abrir o menú do usuario'
+ show_incoming_updated_topics: '. Amosar temas actualizados'
+ search: '/ Buscar'
+ help: '? Abrir a axuda do teclado'
+ dismiss_new_posts: 'x, r Desbotar Novas/Publicacións'
+ dismiss_topics: 'x, t Desbotar temas'
+ log_out: 'maiús.+z maiús.+z Saír da sesión'
+ actions:
+ title: 'Accións'
+ bookmark_topic: 'f Cambiar marcar tema'
+ pin_unpin_topic: 'Maiús+p Pegar/Despegar tema'
+ share_topic: 'maiús.+s Compartir tema'
+ share_post: 's Compartir publicación'
+ reply_as_new_topic: 't Responder como tema ligado'
+ reply_topic: 'maiús.+r Responder o tema'
+ reply_post: 'r Responder a publicación'
+ quote_post: 'q Citar publicación'
+ like: 'l Gústame a publicación'
+ flag: '! Denunciar publicación'
+ bookmark: 'b Marcar publicación'
+ edit: 'e Editar publicación'
+ delete: 'd Eliminar publicación'
+ mark_muted: 'm, m Silenciar tema'
+ mark_regular: 'm, r Tema normal (predeterminado)'
+ mark_tracking: 'm, t Seguir tema'
+ mark_watching: 'm, w Ver tema'
+ badges:
+ earned_n_times:
+ one: "Conseguiu esta insignia unha vez"
+ other: "Conseguiu esta insignia %{count} veces"
+ title: Insignias
+ badge_count:
+ one: "1 insignia"
+ other: "%{count} insignias"
+ more_badges:
+ one: "1 máis"
+ other: "%{count} máis"
+ granted:
+ one: "1 concedido"
+ other: "%{count} concedidos"
+ select_badge_for_title: Selecciona insignia para usar como o teu título
+ none: "
+ Buscar no Google
+
diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml index 3f931cf4d0d..8572aba7dc3 100644 --- a/config/locales/client.he.yml +++ b/config/locales/client.he.yml @@ -101,7 +101,7 @@ he: one: "אחרי שנה אחת" other: "אחרי {{count}}% שנים" share: - topic: 'שתפו קישור לנושא זה' + topic: 'שתפו קישור לפוסט זה' post: 'פרסום #%{postNumber}' close: 'סגור' twitter: 'שתפו קישור זה בטוויטר' @@ -109,6 +109,9 @@ he: google+: 'שתף קישור זה בגוגל+' email: 'שלח קישור בדוא"ל' action_codes: + split_topic: "פצל את הפוסט %{when}" + invited_user: "%{who} הוזמנ/ה ב-%{when}" + removed_user: "%{who} הוסר/ה ב-%{when}" autoclosed: enabled: 'סגר %{when}' disabled: 'פתח %{when}' @@ -127,9 +130,21 @@ he: visible: enabled: 'נכנס לרשימה %{when}' disabled: 'הוצא מהרשימה %{when}' - topic_admin_menu: "פעולות ניהול לנושא" + topic_admin_menu: "פעולות ניהול לפוסט" emails_are_disabled: "כל הדוא\"ל היוצא נוטרל באופן גורף על ידי מנהל אתר. שום הודעת דוא\"ל, מכל סוג שהוא, תשלח." - edit: 'ערוך את הכותרת והקטגוריה של הנושא' + s3: + regions: + us_east_1: "מזרח ארה\"ב (צפון וירג'יניה)" + us_west_1: "מערב ארה\"ב (צפון קליפורניה)" + us_west_2: "מערב ארה\"ב (ארגון)" + eu_west_1: "האיחוד האירופי (אירלנד)" + eu_central_1: "האיחוד האירופי (פרנקפורט)" + ap_southeast_1: "אסיה הפסיפית (סינגפור)" + ap_southeast_2: "אסיה הפסיפית (סידני)" + ap_northeast_1: "אסיה הפסיפית (טוקיו)" + ap_northeast_2: "אסיה הפסיפית (סיאול)" + sa_east_1: "דרום אמריקה (סאו פאולו)" + edit: 'ערוך את הכותרת והקטגוריה של הפוסט' not_implemented: "סליחה, תכונה זו עדיין לא מומשה!" no_value: "לא" yes_value: "כן" @@ -171,7 +186,7 @@ he: one: "תו אחד" other: "{{count}} תווים" suggested_topics: - title: "נושאים מוצעים" + title: "פוסטים מוצעים" about: simple_title: "אודות" title: "אודות %{title}" @@ -183,7 +198,7 @@ he: last_7_days: "7 הימים האחרונים" last_30_days: "ב-30 הימים האחרונים" like_count: "לייקים" - topic_count: "נושאים" + topic_count: "פוסטים" post_count: "פרסומים" user_count: "חדשים" active_user_count: "משתמשים פעילים" @@ -193,24 +208,24 @@ he: title: "סימניה" clear_bookmarks: "ניקוי סימניות" help: - bookmark: "הקליקו כדי ליצור סימניה לפרסום הראשון בנושא זה" - unbookmark: "הקליקו להסרת כל הסימניות בנושא זה" + bookmark: "הקליקו כדי ליצור סימניה לפרסום הראשון בפוסט זה" + unbookmark: "הקליקו להסרת כל הסימניות בפוסט זה" bookmarks: not_logged_in: "סליחה, עליך להיות מחובר כדי להוסיף פוסט למועדפים" created: "סימנת הודעה זו כמועדפת" not_bookmarked: "קראת הודעה זו, לחץ להוספה למועדפים" last_read: "זו ההודעה האחרונה שקראת, לחץ להוספה למועדפים" remove: "הסר מהמועדפים" - confirm_clear: "האם את/ה בטוחים שאתם מעוניינים לנקות את כל הסימניות מנושא זה?" + confirm_clear: "האם את/ה בטוחים שאתם מעוניינים לנקות את כל הסימניות מפוסט זה?" topic_count_latest: - one: "נושא חדש או עדכון {{count}} ." - other: "{{count}} נושאים חדשים או עדכונים." + one: "פוסט חדש או עדכון {{count}} ." + other: "{{count}} פוסטים חדשים או עדכונים." topic_count_unread: one: "נושא שלא נקרא {{count}}." - other: "{{count}} נושאים שלא נקראו." + other: "{{count}} פוסטים שלא נקראו." topic_count_new: - one: "נושא {{count}} חדש." - other: "{{count}} נושאים חדשים." + one: "פוסט {{count}} חדש." + other: "{{count}} פוסטים חדשים." click_to_show: "הקליקו כדי להציג." preview: "תצוגה מקדימה" cancel: "ביטול" @@ -227,16 +242,17 @@ he: revert: "לחזור" failed: "נכשל" switch_to_anon: "מצב אנונימי" + switch_from_anon: "צא ממצב אנונימי" banner: close: "שחרור באנר זה." edit: "ערוך את הבאנר" choose_topic: - none_found: "לא נמצאו נושאים." + none_found: "לא נמצאו פוסטים." title: - search: "חפש נושא לפי שם, כתובת או מזהה:" - placeholder: "הקלד את כותרת הנושא כאן" + search: "חפש פוסט לפי שם, כתובת או מזהה:" + placeholder: "הקלד את כותרת הפוסט כאן" queue: - topic: "נושא:" + topic: "פוסט:" approve: 'לאשר' reject: 'לדחות' delete_user: 'מחק משתמש' @@ -247,9 +263,8 @@ he: view_pending: "הצג הודעות ממתינות" has_pending_posts: one: " בנושא זה ישנה הודעה אחת הממתינה לאישור" - other: "בנושא זה ישנם {{count}} הודעות הממתינות לאישור" + other: "בפוסט זה ישנם {{count}} הודעות הממתינות לאישור" confirm: "שמור שינויים" - delete_prompt: "אתה בטוח שאתה רוצה למחוק את המשתמש %{username}? פעולה זו תמחק את כל ההודעות , תחסום את הדואר האלקטרוני וכתובת ה-IP של המשתמש." approval: title: "ההודעה זקוקה לאישור" description: "קיבלנו את הודעתך אך נדרש אישור של מנחה לפני שההודעה תוצג, אנא המתן בסבלנות." @@ -258,12 +273,12 @@ he: other: "יש לך {{count}} הודעות ממתינות." ok: "אשר" user_action: - user_posted_topic: "{{user}} פרסם את הנושא" - you_posted_topic: "את/ה פרסמת את הנושא" + user_posted_topic: "{{user}} פרסם את הפוסט" + you_posted_topic: "את/ה פרסמת את הפוסט" user_replied_to_post: "{{user}} הגיב ל: {{post_number}}" you_replied_to_post: "את/ה הגבת ל: {{post_number}}" - user_replied_to_topic: "{{user}} הגיב לנושא הזה" - you_replied_to_topic: "את/ה הגבת לנושא הזה" + user_replied_to_topic: "{{user}} הגיב לפוסט הזה" + you_replied_to_topic: "את/ה הגבת לפוסט הזה" user_mentioned_user: "{{user}} הזכיר את {{another_user}}" user_mentioned_you: "{{user}} הזכיר אותך" you_mentioned_user: "את/ה הזכרת את {{another_user}}" @@ -277,10 +292,10 @@ he: likes_given: "ניתנ/ו" likes_received: "התקבל/ו" topics_entered: "כניסות" - topics_entered_long: "נושאים אליהם נכנסת" + topics_entered_long: "פוסטים אליהם נכנסת" time_read: "זמן קריאה" - topic_count: "נושאים" - topic_count_long: "נושאים שנוצרו" + topic_count: "פוסטים" + topic_count_long: "פוסטים שנוצרו" post_count: "תגובות" post_count_long: "תגובות שפורסמו" no_results: "לא נמצאו תוצאות" @@ -292,6 +307,15 @@ he: one: "משתמש/ת 1" other: "%{count} משתמשים" groups: + empty: + posts: "אין פרסום של חברים בקבוצה זו" + members: "אין חברים בקבוצה זו." + mentions: "אין אזכורים של קבוצה זו." + messages: "אין מסרים לקבוצה זו." + topics: "אין נושא מטעם חברים בקבוצה זו." + add: "הוספה" + selector_placeholder: "הוספת חברים וחברות" + owner: "מנהל" visible: "הקבוצה זמינה לכל המשתמשים" title: one: "קבוצה" @@ -299,7 +323,7 @@ he: members: "חברים" posts: "הודעות" alias_levels: - title: "מי יכול להשתמש בקבוצה זו ככינוי?" + title: "מי יכול/ה לשלוח מסרים ו@לאזכר בקבוצה זו?" nobody: "אף אחד" only_admins: "רק מנהלים" mods_and_admins: "רק מנחים ומנהלים" @@ -308,16 +332,21 @@ he: trust_levels: title: "רמת אמון הניתנת אוטומטית למשתמשים כשהם נוספים:" none: "ללא" + notifications: + watching: + title: "במעקב" + description: "תקבל/י הודעה על כל פרסום במסגרת כל מסר, וסך התשובות יוצג." + tracking: + title: "במעקב" user_action_groups: '1': "לייקים שניתנו" '2': "לייקים שהתקבלו" '3': "מועדפים" - '4': "נושאים" + '4': "פוסטים" '5': "תשובות" '6': "תגובות" '7': "אזכורים" '9': "ציטוטים" - '10': "כוכבים" '11': "עריכות" '12': "פריטים שנשלחו" '13': "דואר נכנס" @@ -336,15 +365,15 @@ he: apply_all: "הפעל" position: "מיקום" posts: "פרסומים" - topics: "נושאים" + topics: "פוסטים" latest: "לאחרונה" latest_by: "לאחרונה על ידי" toggle_ordering: "שנה בקר סדר" subcategories: "תתי קטגוריות" - topic_stats: "מספר הנושאים החדשים." + topic_stats: "מספר הפוסטים החדשים." topic_stat_sentence: - one: "נושא חדש אחד ב-%{unit}." - other: "%{count} נושאים חדשים ב-%{unit}." + one: "פוסט חדש אחד ב-%{unit}." + other: "%{count} פוסטים חדשים ב-%{unit}." post_stats: "מספר ההודעות החדשות." post_stat_sentence: one: "הודעה חדשה אחת ב-%{unit}." @@ -361,11 +390,11 @@ he: username: "שם משתמש" trust_level: "TL" read_time: "זמן צפייה" - topics_entered: "כניסה לנושאים" + topics_entered: "כניסה לפוסטים" post_count: "# פרסומים" confirm_delete_other_accounts: "אתה בטוח שברצונך למחוק חשבונות אלו?" user_fields: - none: "(בחר נושא)" + none: "(בחר אפשרות)" user: said: "{{username}}:" profile: "פרופיל" @@ -388,16 +417,13 @@ he: not_supported: "התראות לא נתמכות בדפדפן זה. מצטערים." perm_default: "הדלק התראות" perm_denied_btn: "הרשאות נדחו" - perm_denied_expl: "נטרלת הראשות עבור התראות. השתמש בדפדפן שלך לאפשר התראות, לאחר מכן לחץ על הכפתור. " disable: "כבה התראות" - currently_enabled: "(כרגע מאופשר)" enable: "אפשר התראות" - currently_disabled: "(כרגע לא מאופשר)" each_browser_note: "הערה: עליך לשנות הגדרה זו עבור כל דפדפן בנפרד." dismiss_notifications: "סימון הכל כנקרא" dismiss_notifications_tooltip: "סימון כל ההתראות שלא נקראו כהתראות שנקראו" disable_jump_reply: "אל תקפצו לפרסומים שלי לאחר שאני משיב/ה" - dynamic_favicon: "הצג את מספר נושאים חדשים/מעודכנים על האייקון של הדפדפן" + dynamic_favicon: "הצג את מספר פוסטים חדשים/מעודכנים על האייקון של הדפדפן" edit_history_public: "אפשרו למשתמשים אחרים לראות את תיקוני הפרסומים שלי" external_links_in_new_tab: "פתח את כל הקישורים החיצוניים בעמוד חדש" enable_quoting: "אפשרו תגובת ציטוט לטקסט מסומן" @@ -410,13 +436,12 @@ he: suspended_notice: "המשתמש הזה מושעה עד לתאריך: {{date}}." suspended_reason: "הסיבה: " github_profile: "גיטהאב" - mailing_list_mode: "שלחו לי דוא\"ל על כל פרסום חדש (אלא אם אשתיק את המעקב אחר הנושא או הקטגוריה)" + mailing_list_mode: "שלחו לי דוא\"ל על כל פרסום חדש (אלא אם אשתיק את המעקב אחר הפוסט או הקטגוריה)" watched_categories: "עוקב" - watched_categories_instructions: "תעקבו באופן אוטומטי אחרי כל הנושאים החדשים בקטגוריות אלה. תקבלו התראה על כל פרסום ונושא חדש." + watched_categories_instructions: "תעקבו באופן אוטומטי אחרי כל הפוסטים החדשים בקטגוריות אלה. תקבלו התראה על כל פרסום ופוסט חדש." tracked_categories: "רגיל+" - tracked_categories_instructions: "בקטגוריות אלה סך הפרסומים החדשים שלא נקראו יופיע לצד שם הנושא." + tracked_categories_instructions: "בקטגוריות אלה סך הפרסומים החדשים שלא נקראו יופיע לצד שם הפוסט." muted_categories: "מושתק" - muted_categories_instructions: "לא תקבלו התראות על נושאים חדשים בקטגוריות אלו, והם לא יופיעו בעמוד הלא נקראו שלך." delete_account: "מחק את החשבון שלי" delete_account_confirm: "אתה בטוח שברצונך למחוק את החשבון? לא ניתן לבטל פעולה זו!" deleted_yourself: "חשבונך נמחק בהצלחה." @@ -426,6 +451,7 @@ he: users: "משתמשים" muted_users: "מושתק" muted_users_instructions: "להשבית כל התראה ממשתמשים אלו" + muted_topics_link: "הצג פוסטים שהוסתרו" staff_counters: flags_given: "סימונים שעוזרים" flagged_posts: "הודעות מסומנות" @@ -434,8 +460,6 @@ he: warnings_received: "אזהרות" messages: all: "הכל" - mine: "שלי" - unread: "לא נקראו" change_password: success: "(דואר אלקטרוני נשלח)" in_progress: "(שולח דואר אלקטרוני)" @@ -480,10 +504,6 @@ he: ok: "נשלח לך דואר אלקטרוני לאישור" invalid: "בבקשה הכנס כתובת דואר אלקטרוני חוקית" authenticated: "כתובת הדואר האלקטרוני שלך אושרה על ידי {{provider}}" - frequency: - zero: "נעדכן אותך מיד בדוא\"ל אם לא קראת את הדבר שעליו אנחנו שולחים אליך דוא\"ל." - one: "נשלח לך דוא\"ל אם לא ראינו אותך כאן בדקה האחרונה." - other: "נשלח לך דוא\"ל אם לא ראינו אותך כאן ב-{{count}} הדקות האחרונות." name: title: "שם" instructions: "שמך המלא (רשות)" @@ -525,20 +545,20 @@ he: every_three_days: "כל שלושה ימים" weekly: "שבועית" every_two_weeks: "כל שבועיים" - email_direct: "שלחו לי דוא\"ל כשמישהו/י מצטטים אותי, מגיבם לפרסום שלי, מזכירים את @שם_המשתמש/ת שלי, או מזמינים אותי לנושא" + email_direct: "שלחו לי דוא\"ל כשמישהו/י מצטטים אותי, מגיבם לפרסום שלי, מזכירים את @שם_המשתמש/ת שלי, או מזמינים אותי לפוסט" email_private_messages: "שלחו לי דוא\"ל כשמישהו/י שולחים לי מסר" email_always: "שלח לי נוטיפקציות מייל גם כשאני פעיל/ה באתר. " other_settings: "אחר" categories_settings: "קטגוריות" new_topic_duration: - label: "נושא יחשב כנושא חדש כאשר" + label: "פוסט יחשב כפוסט חדש כאשר" not_viewed: "עוד לא ראיתי אותם" last_here: "נוצרו מאז הביקור האחרון שלי כאן" after_1_day: "נוצר ביום האחרון" after_2_days: "נוצר במהלך היומיים האחרונים" after_1_week: "נוצר במהלך השבוע האחרון" after_2_weeks: "נוצר בשבועיים האחרונים" - auto_track_topics: "מעקב אוטומטי נושאים אליהם נכנסתי" + auto_track_topics: "מעקב אוטומטי פוסטים אליהם נכנסתי" auto_track_options: never: "אף פעם" immediately: "מיידי" @@ -555,7 +575,9 @@ he: user: "משתמש/ת שהוזמנו" sent: "נשלח" none: "אין הזמנות ממתינות להציג" - truncated: "מראה את {{count}} ההזמנות הראשונות." + truncated: + one: "מראה את ההזמנה הראשונה." + other: "מראה את {{count}} ההזמנות הראשונות." redeemed: "הזמנות נוצלו" redeemed_tab: "נענו" redeemed_tab_with_count: "נוצלו ({{count}})" @@ -563,7 +585,7 @@ he: pending: "הזמנות ממתינות" pending_tab: "ממתין" pending_tab_with_count: "ממתינות ({{count}})" - topics_entered: "נושאים נצפו" + topics_entered: "פוסטים נצפו" posts_read_count: "הודעות נקראו" expired: "פג תוקף ההזמנה." rescind: "הסרה" @@ -606,7 +628,7 @@ he: posted_by: "פורסם על ידי" sent_by: "נשלח על ידי" private_message: "הודעה" - the_topic: "הנושא" + the_topic: "הפוסט" loading: "טוען..." errors: prev_page: "בזמן הניסיון לטעון" @@ -615,11 +637,13 @@ he: server: "שגיאת שרת" forbidden: "תקלת גישה" unknown: "תקלה" + not_found: "העמוד אותו אתה מחפש לא נמצא" desc: network: "אנא בדקו את החיבור שלכם" network_fixed: "נראה שזה חזר לעבוד." server: "קוד שגיאה: {{status}}" forbidden: "אינך רשא/ית לצפות בזה." + not_found: "אופס, ניסינו לטעון עמוד שאיננו קיים." unknown: "משהו השתבש." buttons: back: "חזרה" @@ -630,15 +654,17 @@ he: logout: "נותקת מהמערכת" refresh: "רענן" read_only_mode: - enabled: "מופעל מצב קריאה בלבד. אפשר להמשיך לגלוש באתר, אך חלק מהפעולות עלולות לא לעבוד." login_disabled: "התחברות אינה מתאפשרת כשהאתר במצב קריאה בלבד." + too_few_topics_and_posts_notice: "בוא נתחיל את הדיון הזה! יש כרגע %{currentTopics} / %{requiredTopics} נושאים ו-%{currentPosts} / %{requiredPosts} הודעות. אורחים חדשים צריכים כמה דיונים לקרוא ולהגיב אליהם." + too_few_topics_notice: "בוא נתחיל את הדיון הזה! יש כרגע %{currentTopics} / %{requiredTopics} נושאים. אורחים חדשים צריכים כמה דיונים לקרוא ולהגיב אליהם." + too_few_posts_notice: "בוא נתחיל את הדיון הזה! יש כרגע %{currentPosts} / %{requiredPosts} הודעות. אורחים חדשים צריכים כמה דיונים לקרוא ולהגיב אליהם." learn_more: "למד עוד..." year: 'שנה' - year_desc: 'נושאים שפורסמו ב-365 הימים האחרונים' + year_desc: 'פוסטים שפורסמו ב-365 הימים האחרונים' month: 'חודש' - month_desc: 'נושאים שפורסמו ב-30 הימים האחרונים' + month_desc: 'פוסטים שפורסמו ב-30 הימים האחרונים' week: 'שבוע' - week_desc: 'נושאים שפורסמו ב-7 הימים האחרונים' + week_desc: 'פוסטים שפורסמו ב-7 הימים האחרונים' day: 'יום' first_post: הודעה ראשונה mute: השתק @@ -648,15 +674,20 @@ he: replies_lowercase: one: תגובה other: תגובות + signup_cta: + sign_up: "הרשמה" + hide_session: "הזכר לי מחר" + hide_forever: "לא תודה" + hidden_for_session: "אוקי, אשאל אותך מחר. אתה גם תמיד יכול להשתמש ב'התחבר' כדי ליצור משתמש." + intro: "שלום לך :heart_eyes: זה נראה כאילו אתה נהנה מקריאה אבל אתה לא רשום." + value_prop: "כשאתה נרשם, אנחנו זוכרים בדיוק מה קראת כך כשאתה חוזר אתה ממשיך בדיוק מאיפה שהפסקת. בנוסף אתה תקבל התראות דרך האתר ודרך הדואר האלקטרוני שלך כשפוסטים חדשים נוצרים ועוד משהו, אתה יכול לעשות לייק לפוסטים שאהבת. :heartbeat:" summary: - enabled_description: "אתם צופים בסיכום נושא זה: הפרסומים המעניינים ביותר כפי שסומנו על ידי הקהילה." - description: "ישנן {{count}} תגובות" - description_time: "ישנן {{count}} תגובות, עם הערכת זמן קריאה של כ- {{readingTime}} דקות ." - enable: 'סכם נושא זה' + enabled_description: "אתם צופים בסיכום פוסט זה: הפרסומים המעניינים ביותר כפי שסומנו על ידי הקהילה." + enable: 'סכם פוסט זה' disable: 'הצג את כל ההודעות' deleted_filter: - enabled_description: "נושא זה מכיל פרסומים שנמחקו ולכן אינם מוצגים." - disabled_description: "פרסומים שנמחקו בנושא זה מוצגים כעת." + enabled_description: "פוסט זה מכיל פרסומים שנמחקו ולכן אינם מוצגים." + disabled_description: "פרסומים שנמחקו בפוסט זה מוצגים כעת." enable: "הסתר פרסומים שנמחקו" disable: "הצגת פרסומים שנמחקו" private_message_info: @@ -705,6 +736,9 @@ he: admin_not_allowed_from_ip_address: "אינך יכול/ה להתחבר כמנהל מערכת מכתובת IP זו." resend_activation_email: "יש ללחוץ כאן לשליחת דואר אלקטרוני חוזר להפעלת החשבון." sent_activation_email_again: "שלחנו לך הודעת דואר אלקטרוני נוספת להפעלת החשבון לכתובת {{currentEmail}}. זה יכול לקחת כמה דקות עד שיגיע, לא לשכוח לבדוק את תיבת דואר הזבל." + to_continue: "התחברו בבקשה" + preferences: "אתם צריכים להיות מחוברים כדי לשנות את העדפות המשתמש שלכם." + forgot: "אין לי את פרטי החשבון שלי" google: title: "עם גוגל" message: "התחברות עם גוגל (יש לוודא שחוסם חלונות קופצים אינו פעיל)" @@ -727,14 +761,21 @@ he: google: "גוגל" twitter: "טוויטר" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + more_emoji: "עוד..." + options: "אפשרויות" + whisper: "לחישה" add_warning: "זוהי התראה רשמית." - posting_not_on_topic: "לאיזה נושא רצית להגיב?" + toggle_whisper: "הפעלת Whisper" + posting_not_on_topic: "לאיזה פוסט רצית להגיב?" saving_draft_tip: "שמירה..." saved_draft_tip: "נשמר" saved_local_draft_tip: "נשמר מקומית" - similar_topics: "הנושא שלך דומה ל..." + similar_topics: "הפוסט שלך דומה ל..." drafts_offline: "טיוטות מנותקות" error: title_missing: "יש להזין כותרת." @@ -745,11 +786,11 @@ he: try_like: 'האם ניסית את כפתור ה-' category_missing: "עליך לבחור קטגוריה." save_edit: "שמירת עריכה" - reply_original: "תגובה לנושא המקורי" + reply_original: "תגובה לפוסט המקורי" reply_here: "תגובה כאן" reply: "תגובה" cancel: "ביטול" - create_topic: "יצירת נושא" + create_topic: "יצירת פוסט" create_pm: "הודעה" title: "או לחץ Ctrl+Enter" users_placeholder: "הוספת משתמש" @@ -758,7 +799,7 @@ he: show_edit_reason: "(הוספת סיבת עריכה)" reply_placeholder: "הקלד כאן. השתמש ב Markdown, BBCode או HTML לערוך. גרור או הדבק תמונות." view_new_post: "הצגת את ההודעה החדשה שלך." - saving: "שומר..." + saving: "שומר" saved: "נשמר!" saved_draft: "טיוטאת פרסום בתהליך, לחצו כדי להמשיך." uploading: "מעלה..." @@ -773,6 +814,7 @@ he: link_description: "הזן תיאור קישור כאן" link_dialog_title: "הזן קישור" link_optional_text: "כותרת אופציונלית" + link_placeholder: "http://example.com \"טקסט אופציונלי\"" quote_title: "ציטוט" quote_text: "ציטוט" code_title: "טקסט מעוצב" @@ -785,29 +827,29 @@ he: heading_title: "כותרת" heading_text: "כותרת" hr_title: "קו אופקי" - undo_title: "בטל" - redo_title: "חזור" help: "עזרה על כתיבה ב-Markdown" toggler: "הסתר או הצג את פאנל העריכה" - admin_options_title: "אפשרויות צוות אופציונליות לנושא זה" + modal_ok: "אישור" + modal_cancel: "ביטול" + cant_send_pm: "מצטערים, אינכם יכולים לשלוח הודעה ל %{username}." + admin_options_title: "אפשרויות צוות אופציונליות לפוסט זה" auto_close: - label: "מועד סגירה אוטומטית של נושא:" + label: "מועד סגירה אוטומטית של פוסט:" error: "הזינו בבקשה ערך תקין." - based_on_last_post: "לא לסגור עד שהפרסום האחרון בנושא זה יהיה לפחות בגיל זה." + based_on_last_post: "לא לסגור עד שהפרסום האחרון בפוסט זה יהיה לפחות בגיל זה." all: examples: 'הזינו מספר שעות (24), שעה מדוייקת (17:30) או חותמת זמן (2013-11-22 14:00).' limited: units: "(# מספר שעות)" examples: 'הזינו מספר שעות (24).' notifications: - title: "התראות אודות אזכור @שם, תגובות לפרסומים ולנושאים שלך, הודעות וכו'" + title: "התראות אודות אזכור @שם, תגובות לפרסומים ולפוסטים שלך, הודעות וכו'" none: "לא ניתן לטעון כעת התראות." more: "הצגת התראות ישנות יותר" - total_flagged: "סך הכל נושאים מדוגללים" + total_flagged: "סך הכל פוסטים מדוגללים" mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -826,7 +868,7 @@ he: liked: "אהב את הפרסום שלך" private_message: "הודעה פרטית מ" invited_to_private_message: "הזמנה להודעה פרטית מ" - invited_to_topic: "הוזמנת לנושא חדש מ" + invited_to_topic: "הוזמנת לפוסט חדש מ" invitee_accepted: "הזמנה התקבלה על ידי" moved_post: "הפרסום שלך הוזז על ידי" linked: "קישור לפרסום שלך" @@ -844,18 +886,25 @@ he: from_my_computer: "מהמחשב שלי" from_the_web: "מהאינטרנט" remote_tip: "קישור לתמונה" - remote_tip_with_attachments: "קישור לתמונה או קובץ ({{authorized_extensions}})" + remote_tip_with_attachments: "קישור לתמונה או לקובץ {{authorized_extensions}}" local_tip: "בחר תמונות ממכשירך" - local_tip_with_attachments: "בחר תמונות או קבצים ממכשירך ({{authorized_extensions}})" hint: "(ניתן גם לגרור לעורך להעלאה)" hint_for_supported_browsers: "תוכלו גם לגרור או להדביק תמונות לעורך" uploading: "מעלה" select_file: "בחר קובץ" image_link: "קישור לתמונה יצביע ל" search: + sort_by: "מיון על פי" + relevance: "רלוונטיות" + latest_post: "הפוסטים האחרונים" + most_viewed: "הנצפה ביותר" + most_liked: "האהובים ביותר" select_all: "בחר הכל" clear_all: "נקה הכל" - title: "חיפוש נושאים, פרסומים, משתמשים או קטגוריות" + result_count: + one: "תוצאה אחת ל \"{{term}}\"" + other: "{{count}} תוצאות ל \"{{term}}\"" + title: "חיפוש פוסטים, פרסומים, משתמשים או קטגוריות" no_results: "אין תוצאות." no_more_results: "לא נמצאו עוד תוצאות." search_help: עזרה בחיפוש @@ -864,29 +913,30 @@ he: context: user: "חיפוש פרסומים לפי @{{username}}" category: "חיפוש בקטגוריה \"{{category}}\"" - topic: "חפשו בנושא זה" + topic: "חפשו בפוסט זה" private_messages: "חיפוש הודעות" - hamburger_menu: "עבור לרשימת נושאים אחרת או קטגוריה" + hamburger_menu: "עבור לרשימת פוסטים אחרת או קטגוריה" new_item: "חדש" go_back: 'חזור אחורה' not_logged_in_user: 'עמוד משתמש עם סיכום פעילות נוכחית והעדפות' current_user: 'לך לעמוד המשתמש שלך' topics: bulk: + unlist_topics: "הסרת נושאים" reset_read: "איפוס נקראו" - delete: "מחיקת נושאים" - dismiss_posts: "ביטול פרסומים" - dismiss_posts_tooltip: "ניקוי ספירת הלא-נקראים בנושאים אלו, תווך המשך הצגתם ברשימת הלא נקראים כאשר נוספים פרסומים חדשים" - dismiss_topics: "דחיית נושאים" - dismiss_topics_tooltip: "הפסקת הצגת נושאים אלו ברשימת הלא-נקראו האישית כאשר נוספים פרסומים חדשים" + delete: "מחיקת פוסטים" + dismiss: "ביטול" + dismiss_read: "Dismiss all unread" + dismiss_button: "ביטול..." + dismiss_tooltip: "ביטול הצגת פוסטים חדשים או מעקב אחר נושאים" dismiss_new: "שחרור חדשים" - toggle: "החלף קבוצה מסומנת של נושאים" + toggle: "החלף קבוצה מסומנת של פוסטים" actions: "מקבץ פעולות" change_category: "שינוי קטגוריה" - close_topics: "סגירת נושאים" - archive_topics: "ארכיון הנושאים" + close_topics: "סגירת פוסטים" + archive_topics: "ארכיון הפוסטים" notification_level: "שינוי רמת התראה" - choose_new_category: "בחרו את הקטגוריה עבור הנושאים:" + choose_new_category: "בחרו את הקטגוריה עבור הפוסטים:" selected: one: "בחרת נושא אחד." other: "בחרת {{count}} נושאים." @@ -895,86 +945,83 @@ he: new: "אין לך נושאים חדשים." read: "עדיין לא קראת אף נושא." posted: "עדיין לא פרסמת באף נושא." - latest: "אין נושאים מדוברים. זה עצוב." - hot: "אין נושאים חמים." - bookmarks: "אין לך עדיין סימניות לנושאים." - category: "אין נושאים בקטגוריה {{category}}." - top: "אין נושאים מובילים." + latest: "אין פוסטים מדוברים. זה עצוב." + hot: "אין פוסטים חמים." + bookmarks: "אין לך עדיין סימניות לפוסטים." + category: "אין פוסטים בקטגוריה {{category}}." + top: "אין פוסטים מובילים." search: "אין תוצאות חיפוש" - educate: - new: '
הנושאים החדשים שלך יופיעו כאן.
כברירת מחדל, נושאים נחשבים חדשים ויופיעו עם האינדיקציה חדש אם הם נוצרו ב-2 הימים האחרונים. .
תוכלו לשנות זאת ב העדפות .
' - unread: '
הנושאים הלא-נקראים שלך מופיעים כאן.
כברירת מחדל נושאים נחשבים ככאלה שלא נקראו ויוצגו כ- 1 אם את/ה:
או אם כיוונתם את הנושא הזה להיות תחת מעקב או צפייה באמצעות כפתור ההתראות שבתחתית כל נושא.
את/ה יכולים לשנות זאת בהעדפות.
' bottom: - latest: "אין עוד נושאים מדוברים." - hot: "אין עוד נושאים חמים." - posted: "אין עוד נושאים שפורסמו." - read: "אין עוד נושאים שנקראו." - new: "אין עוד נושאים חדשים." - unread: "אין עוד נושאים שלא נקראו." - category: "אין עוד נושאים בקטגוריה {{category}}." - top: "אין עוד נושאים מובילים." - bookmarks: "אין עוד סימניות לנושאים." + latest: "אין עוד פוסטים מדוברים." + hot: "אין עוד פוסטים חמים." + posted: "אין עוד פוסטים שפורסמו." + read: "אין עוד פוסטים שנקראו." + new: "אין עוד פוסטים חדשים." + unread: "אין עוד פוסטים שלא נקראו." + category: "אין עוד פוסטים בקטגוריה {{category}}." + top: "אין עוד פוסטים מובילים." + bookmarks: "אין עוד סימניות לפוסטים." search: "אין עוד תוצאות חיפוש" topic: unsubscribe: stop_notifications: "תקבלו פחות התראות עבור {{title}}" change_notification_state: "מצב ההתראות הנוכחי שלך הוא" - filter_to: "{{post_count}} הודעות בנושא" - create: 'נושא חדש' - create_long: 'יצירת נושא חדש' + filter_to: "{{post_count}} הודעות בפוסט" + create: 'פוסט חדש' + create_long: 'יצירת פוסט חדש' private_message: 'תחילת הודעה' - list: 'נושאים' - new: 'נושא חדש' + list: 'פוסטים' + new: 'פוסט חדש' unread: 'לא נקרא/ו' new_topics: - one: 'נושא חדש אחד' - other: '{{count}} נושאים חדשים' + one: 'פוסט חדש אחד' + other: '{{count}} פוסטים חדשים' unread_topics: one: '1 שלא נקרא' - other: '{{count}} נושאים שלא נקראו' - title: 'נושא' + other: '{{count}} פוסטים שלא נקראו' + title: 'פוסט' invalid_access: - title: "הנושא פרטי" - description: "סליחה, איך אין לך גישה לנושא הזה!" - login_required: "עליכם להתחבר כדי לצפות בנושא זה." + title: "הפוסט פרטי" + description: "סליחה, איך אין לך גישה לפוסט הזה!" + login_required: "עליכם להתחבר כדי לצפות בפוסט זה." server_error: - title: "שגיאה בטעינת נושא" - description: "סליחה, לא יכולנו לטעון את הנושא הזה, ייתכן שבשל תקלת תקשורת. אנא נסי שוב. אם הבעיה נמשכת, הודיעו לנו." + title: "שגיאה בטעינת הפוסט" + description: "סליחה, לא יכולנו לטעון את הפוסט הזה, ייתכן שבשל תקלת תקשורת. אנא נסי שוב. אם הבעיה נמשכת, הודיעו לנו." not_found: - title: "נושא לא נמצא" - description: "סליחה, לא יכולנו למצוא את הנושא הזה. אולי הוא הוסר על ידי מנהל?" + title: "הפוסט לא נמצא" + description: "סליחה, לא יכולנו למצוא את הפוסט הזה. אולי הוא הוסר על ידי מנהל?" total_unread_posts: one: "יש לכם פרסום אחד שלא נקרא בנושא זה" - other: "יש לכם {{count}} פרסומים שלא נקראו בנושא זה" + other: "יש לכם {{count}} פרסומים שלא נקראו בפוסט זה" unread_posts: one: "יש לך הודעה אחת שלא נקראה בנושא הזה" - other: "יש לך {{count}} הודעות ישנות שלא נקראו בנושא הזה" + other: "יש לך {{count}} הודעות ישנות שלא נקראו בפוסט הזה" new_posts: one: "יש הודעה אחת חדשה בנושא הזה מאז שקראת אותו לאחרונה" - other: "יש {{count}} הודעות חדשות בנושא הזה מאז שקראת אותו לאחרונה" + other: "יש {{count}} הודעות חדשות בפוסט הזה מאז שקראת אותו לאחרונה" likes: one: "יש לייק אחד בנושא הזה" - other: "יש {{count}} לייקים בנושא הזה" - back_to_list: "חזרה לרשימת נושאים" - options: "אפשרויות נושא" - show_links: "הצג קישורים בתוך הנושא הזה" - toggle_information: "הצגת פרטי נושא" - read_more_in_category: "רוצה לקרוא עוד? עיין נושאים אחרים ב {{catLink}} או {{latestLink}}." + other: "יש {{count}} לייקים בפוסט הזה" + back_to_list: "חזרה לרשימת הפוסטים" + options: "אפשרויות פוסט" + show_links: "הצג קישורים בתוך הפוסט הזה" + toggle_information: "הצגת פרטי פוסט" + read_more_in_category: "רוצה לקרוא עוד? עיין פוסטים אחרים ב {{catLink}} או {{latestLink}}." read_more: "רוצה לקרוא עוד? {{catLink}} or {{latestLink}}." read_more_MF: "There { UNREAD, plural, =0 {} one { is 1 unread } other { are # unread } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false {is } other{}} 1 new topic} other { {BOTH, select, true{and } false {are } other{}} # new topics} } remaining, or {CATEGORY, select, true {browse other topics in {catLink}} false {{latestLink}} other {}}" browse_all_categories: עיין בכל הקטגוריות - view_latest_topics: הצגת נושאים מדוברים - suggest_create_topic: לחץ כאן כדי ליצור נושא חדש. + view_latest_topics: הצגת פוסטים מדוברים + suggest_create_topic: לחץ כאן כדי ליצור פוסט חדש. jump_reply_up: קפיצה לתגובה קודמת jump_reply_down: קפיצה לתגובה מאוחרת - deleted: "הנושא הזה נמחק" - auto_close_notice: "הנושא הזה ינעל אוטומטית %{timeLeft}." - auto_close_notice_based_on_last_post: "נושא זה ייסגר %{duration} אחר התגובה האחרונה." + deleted: "הפוסט הזה נמחק" + auto_close_notice: "הפוסט הזה ינעל אוטומטית %{timeLeft}." + auto_close_notice_based_on_last_post: "פוסט זה ייסגר %{duration} אחר התגובה האחרונה." auto_close_title: 'הגדרות נעילה אוטומטית' auto_close_save: "שמור" - auto_close_remove: "אל תנעל נושא זה אוטומטית" + auto_close_remove: "אל תנעל פוסט זה אוטומטית" progress: - title: התקדמות נושא + title: התקדמות פוסט go_top: "למעלה" go_bottom: "למטה" go: "קדימה" @@ -986,31 +1033,31 @@ he: notifications: reasons: '3_6': 'תקבלו התראות כיוון שאת/ה עוקב אחרי קטגוריה זו.' - '3_5': 'תקבל/י התראות כיוון שהתחלת לעקוב אחרי הנושא הזה אוטומטית.' - '3_2': 'תקבל/י התראות כיוון שאת/ה עוקב אחרי נושא הזה.' - '3_1': 'תקבל/י התראות כיוון שאת/ה יצרת את הנושא הזה.' - '3': 'תקבל/י התראות כיוון שאת/ה עוקב אחרי נושא זה.' + '3_5': 'תקבל/י התראות כיוון שהתחלת לעקוב אחרי הפוסט הזה אוטומטית.' + '3_2': 'תקבל/י התראות כיוון שאת/ה עוקב אחרי הפוסט הזה.' + '3_1': 'תקבל/י התראות כיוון שאת/ה יצרת את הפוסט הזה.' + '3': 'תקבל/י התראות כיוון שאת/ה עוקב אחרי פוסט זה.' '2_8': 'תקבלו התראות כיוון שאת/ה צופה בקטגוריה הזו.' - '2_4': 'תקבל/י התראות כיוון שפרסמת תגובה לנושא הזה.' - '2_2': 'תקבל/י התראות כיוון שאת/ה צופה אחרי הנושא הזה.' - '2': 'תקבל/י התראות כיוון שקראת את הנושא הזה.' + '2_4': 'תקבל/י התראות כיוון שפרסמת תגובה לפוסט הזה.' + '2_2': 'תקבל/י התראות כיוון שאת/ה צופה אחרי הפוסט הזה.' + '2': 'תקבל/י התראות כיוון שקראת את הפוסט הזה.' '1_2': 'תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך.' '1': 'תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך.' '0_7': 'את/ה מתעלם/מתעלמת מכל ההתראות בקטגוריה זו.' - '0_2': 'אתה מתעלם מכל ההתראות בנושא זה.' - '0': 'אתה מתעלם מכל ההתראות בנושא זה.' + '0_2': 'אתה מתעלם מכל ההתראות בפוסט זה.' + '0': 'אתה מתעלם מכל ההתראות בפוסט זה.' watching_pm: title: "עוקב" description: "תקבל/י התראה על כל תגובה חדשה בהודעה זו. בנוסף מספר התגובות שלא נקראו יופיעו ליד ההודעה. " watching: title: "עוקב" - description: "תקבל/י התראה על כל תגובה חדשה בנושא זה ומספר התגובות החדשות יוצג. " + description: "תקבל/י התראה על כל תגובה חדשה בפוסט זה ומספר התגובות החדשות יוצג. " tracking_pm: title: "רגיל+" description: "כמו רגיל, בנוסף מספר התגובות החדשות יוצג ליד ההודעה. " tracking: title: "רגיל+" - description: "כמו רגיל, בנוסף מספר התגובות שלא נקראו יוצג לנושא זה. " + description: "כמו רגיל, בנוסף מספר התגובות שלא נקראו יוצג לפוסט זה. " regular: title: "רגיל" description: "תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך." @@ -1022,67 +1069,55 @@ he: description: "לעולם לא תקבל/י התראה בנוגע להודעה זו." muted: title: "מושתק" - description: "לעולם לא תקבל/י התראות על הנושא הזה, והוא לא יופיע בעמוד ה\"לא נקראו\" שלך." actions: - recover: "שחזר נושא" - delete: "מחק נושא" - open: "פתח נושא" - close: "נעל נושא" + recover: "שחזר פוסט" + delete: "מחק פוסט" + open: "פתח פוסט" + close: "נעל פוסט" multi_select: "בחר/י פרסומים..." auto_close: "סגירה אוטומטית..." - pin: "נעיצת נושא.." - unpin: "שחרור נעיצת נושא..." - unarchive: "הוצא נושא מארכיון" - archive: "הכנס נושא לארכיון" + pin: "נעיצת פוסט.." + unpin: "שחרור נעיצת פוסט..." + unarchive: "הוצא פוסט מארכיון" + archive: "הכנס פוסט לארכיון" invisible: "הסתרה" visible: "גילוי" reset_read: "אפס מידע שנקרא" feature: - pin: "נעיצת נושא" - unpin: "שחרור נעיצת נושא" - pin_globally: "נעיצת נושא גלובלית" - make_banner: "באנר נושא" - remove_banner: "הסרת באנר נושא" + pin: "נעיצת פוסט" + unpin: "שחרור נעיצת פוסט" + pin_globally: "נעיצת פוסט גלובלית" + make_banner: "באנר פוסט" + remove_banner: "הסרת באנר פוסט" reply: title: 'תגובה' - help: 'החל בכתיבת הודעה לנושא זה' + help: 'החל בכתיבת הודעה לפוסט זה' clear_pin: title: "נקה נעיצה" - help: "נקה סטטוס נעוץ של נושא זה כדי שהוא לא יופיע עוד בראש רשימת הנושאים שלך" + help: "נקה סטטוס נעוץ של פוסט זה כדי שהוא לא יופיע עוד בראש רשימת הפוסטים שלך" share: title: 'שיתוף' - help: 'שתפו קישור לנושא זה' + help: 'שתפו קישור לפוסט זה' flag_topic: title: 'סימון' - help: 'סמנו נושא זה באופן פרטי לתשומת לב או שלחו התראה פרטית בנוגע אליו' - success_message: 'סמנת נושא זה בהצלחה.' + help: 'סמנו פוסט זה באופן פרטי לתשומת לב או שלחו התראה פרטית בנוגע אליו' + success_message: 'סמנת פוסט זה בהצלחה.' feature_topic: - title: "הצגת נושא זה" - pin: "גרמו לנושא זה להופיע בראש קטגוריה {{categoryLink}} עד" - confirm_pin: "יש לך כבר {{count}} נושאים נעוצים. מספר גדול מידי של נושאים נעוצים עשויים להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם רוצים להצמיד נושא נוסף בקטגוריה זו? " - unpin: "הסרת נושא זה מראש הקטגוריה {{categoryLink}}." - unpin_until: "גרמו לנושא זה להופיע בראש הקטגוריה {{categoryLink}} או המתן עד %{until}." - pin_note: "המשתמש/ת יכולים להסיר את הנושא באופן עצמאי עבור עצמם." - pin_validation: "דרוש תאריך על מנת לנעוץ את הנושא. " - already_pinned: - zero: "אין נושאים מוצמדים בקטגוריה {{categoryLink}}." - one: "נושאים שנעוצים ב {{categoryLink}}: 1." - other: "נושאים שנעוצים ב{{categoryLink}}: {{count}}." - pin_globally: "גרמו לנושא זה להופיע בראש כל רשימות הנושאים עד" - confirm_pin_globally: "יש לך כבר {{count}} נושאים המוצמדים באופן גלובאלי. עודף נושאים מוצמדים עשוי להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם מעוניינים להצמיד נושא גלובאלי נוסף?" - unpin_globally: "הסרת נושא זה מראש כל רשימות הנושאים." - unpin_globally_until: "הסרת נושא זה מראש כל רשימות הנושאים או המתינו עד %{until}." - global_pin_note: "משתמשים יכולים להסיר את הצמדת הנושא באופן עצמאי לעצמם." - already_pinned_globally: - zero: "אין נושאים המוצמדים באופן גלובלי." - one: "נושאים שכרגע נעוצים גלובלית: 1." - other: "נושאים שכרגע מוצמדים גלובלית: {{count}}." - make_banner: "הפכו נושא זה לבאנר אשר מופיע בראש כל העמודים." + title: "הצגת פוסט זה" + pin: "גרמו לפוסט זה להופיע בראש קטגוריה {{categoryLink}} עד" + confirm_pin: "יש לך כבר {{count}} פוסטים נעוצים. מספר גדול מידי של פוסטים נעוצים עשויים להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם רוצים להצמיד פוסט נוסף בקטגוריה זו? " + unpin: "הסרת פוסט זה מראש הקטגוריה {{categoryLink}}." + unpin_until: "גרמו לפוסט זה להופיע בראש הקטגוריה {{categoryLink}} או המתן עד %{until}." + pin_note: "המשתמש/ת יכולים להסיר את הפוסט באופן עצמאי עבור עצמם." + pin_validation: "דרוש תאריך על מנת לנעוץ את הפוסט. " + pin_globally: "גרמו לפוסט זה להופיע בראש כל רשימות הפוסטים עד" + confirm_pin_globally: "יש לך כבר {{count}} פוסטים המוצמדים באופן גלובאלי. עודף פוסטים מוצמדים עשוי להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם מעוניינים להצמיד פוסט גלובאלי נוסף?" + unpin_globally: "הסרת פוסט זה מראש כל רשימות הפוסטים." + unpin_globally_until: "הסרת פוסט זה מראש כל רשימות הפוסטים או המתינו עד %{until}." + global_pin_note: "משתמשים יכולים להסיר את הצמדת הפוסט באופן עצמאי לעצמם." + make_banner: "הפכו פוסט זה לבאנר אשר מופיע בראש כל העמודים." remove_banner: "הסרת הבאנר שמופיע בראש כל העמודים." - banner_note: "משתמשים יכולים לבטל את הבאנר על ידי סגירתו. רק נושא אחד יכול לשמש כבאנר בזמן נתון." - already_banner: - zero: "לא מוגדר באנר נושא" - one: "יש כרגע באנר נושאי." + banner_note: "משתמשים יכולים לבטל את הבאנר על ידי סגירתו. רק פוסט אחד יכול לשמש כבאנר בזמן נתון." inviting: "מזמין..." automatically_add_to_groups_optional: "הזמנה זו כוללת גישה לקבוצות הללו: (אופציונלי, רק מנהל/ת)" automatically_add_to_groups_required: "הזמנה זו כוללת גישה לקבוצות הללו: (חובה, רק מנהל/ת)" @@ -1098,16 +1133,16 @@ he: title: 'הזמנה' username_placeholder: "שם משתמש" action: 'שלח הזמנה' - help: 'הזמן אנשים אחרים לנושא זה דרך דואר אלקטרוני או התראות' + help: 'הזמן אנשים אחרים לפוסט זה דרך דואר אלקטרוני או התראות' to_forum: "נשלח מייל קצר המאפשר לחברך להצטרף באופן מיידי באמצעות לחיצה על קישור, ללא צורך בהתחברות למערכת הפורומים." - sso_enabled: "הכנס את שם המשתמש של האדם שברצונך להזמין לנושא זה." - to_topic_blank: "הכנס את שם המשתמש או כתובת דואר האלקטרוני של האדם שברצונך להזמין לנושא זה." - to_topic_email: "הזנת כתובת אימייל. אנחנו נשלח הזמנה שתאפשר לחברך להשיב לנושא הזה." - to_topic_username: "הזנת שם משתמש/ת. נשלח התראה עם לינק הזמנה לנושא הזה. " - to_username: "הכנסת את שם המשתמש של האדם שברצונך להזמין. אנו נשלח התראה למשתמש זה עם קישור המזמין אותו לנושא זה." + sso_enabled: "הכנס את שם המשתמש של האדם שברצונך להזמין לפוסט זה." + to_topic_blank: "הכנס את שם המשתמש או כתובת דואר האלקטרוני של האדם שברצונך להזמין לפוסט זה." + to_topic_email: "הזנת כתובת אימייל. אנחנו נשלח הזמנה שתאפשר לחברך להשיב לפוסט הזה." + to_topic_username: "הזנת שם משתמש/ת. נשלח התראה עם לינק הזמנה לפוסט הזה. " + to_username: "הכנסת את שם המשתמש של האדם שברצונך להזמין. אנו נשלח התראה למשתמש זה עם קישור המזמין אותו לפוסט זה." email_placeholder: 'name@example.com' success_email: "שלחנו הזמנה ל: {{emailOrUsername}}. נודיע לך כשהזמנה תענה. בדוק את טאב ההזמנות בעמוד המשתמש שלך בשביל לעקוב אחרי ההזמנות ששלחת. " - success_username: "הזמנו את המשתמש להשתתף בנושא." + success_username: "הזמנו את המשתמש להשתתף בפוסט." error: "מצטערים, לא יכלנו להזמין האיש הזה. אולי הוא כבר הוזמן בעבר? (תדירות שליחת ההזמנות מוגבלת)" login_reply: 'התחברו כדי להשיב' filters: @@ -1116,20 +1151,20 @@ he: other: "{{count}} הודעות" cancel: "הסרת הסינון" split_topic: - title: "העבר לנושא חדש" - action: "העבר לנושא חדש" - topic_name: "שם הנושא החדש" - error: "הייתה שגיאה בהעברת ההודעות לנושא החדש." + title: "העבר לפוסט חדש" + action: "העבר לפוסט חדש" + topic_name: "שם הפוסט החדש" + error: "הייתה שגיאה בהעברת ההודעות לפוסט החדש." instructions: - one: "אתה עומד ליצור נושא חדש ולמלא אותו עם ההודעה שבחרת." - other: "אתה עומד ליצור נושא חדש ולמלא אותו עם {{count}} ההודעות שבחרת." + one: "אתה עומד ליצור פוסט חדש ולמלא אותו עם ההודעה שבחרת." + other: "אתה עומד ליצור פוסט חדש ולמלא אותו עם {{count}} ההודעות שבחרת." merge_topic: - title: "העבר לנושא קיים" - action: "העבר לנושא קיים" - error: "התרחשה שגיאה בהעברת ההודעות לנושא הזה." + title: "העבר לפוסט קיים" + action: "העבר לפוסט קיים" + error: "התרחשה שגיאה בהעברת ההודעות לפוסט הזה." instructions: one: "בבקשה בחר נושא אליו הייתי רוצה להעביר את ההודעה" - other: "בבקשה בחר את הנושא אליו תרצה להעביר את {{count}} ההודעות." + other: "בבקשה בחר את הפוסט אליו תרצה להעביר את {{count}} ההודעות." change_owner: title: "שנה בעלים של הודעות" action: "שנה בעלות" @@ -1144,8 +1179,8 @@ he: title: "שנה חותמת זמן" action: "זנה חותמת זמן" invalid_timestamp: "חותמת זמן לא יכולה להיות בעתיד" - error: "הייתה שגיאה בשינוי חותמת הזמן של הנושא" - instructions: "אנא בחרו את חותמת הזמן החדשה של הנושא. פרסומים בנושא יועדכנו לאותם הפרשי זמנים." + error: "הייתה שגיאה בשינוי חותמת הזמן של הפוסט" + instructions: "אנא בחרו את חותמת הזמן החדשה של הפוסט. פרסומים בפוסט יועדכנו לאותם הפרשי זמנים." multi_select: select: 'בחירה' selected: 'נבחרו ({{count}})' @@ -1165,7 +1200,7 @@ he: edit_reason: "סיבה: " post_number: "הודעה {{number}}" last_edited_on: "הודעה נערכה לאחרונה ב" - reply_as_new_topic: "תגובה כנושא מקושר" + reply_as_new_topic: "תגובה כפוסט מקושר" continue_discussion: "ממשיך את הדיון מ {{postLink}}:" follow_quote: "מעבר להודעה המצוטטת" show_full: "הראה הודעה מלאה" @@ -1188,10 +1223,7 @@ he: has_likes_title: one: "מישהו אחד אהב את התגובה הזו" other: "{{count}} אנשים אהבו את התגובה הזו" - has_likes_title_you: - zero: "אתה אהבת את התגובה הזו" - one: "אתה ואדם נוסף אהבתם את התגובה הזו" - other: "אתה ו{{count}} אנשים נוספים אהבתם את התגובה הזו" + has_likes_title_only_you: "אתה אהבת את התגובה הזו" errors: create: "סליחה, הייתה שגיאה ביצירת ההודעה שלך. אנא נסה שנית." edit: "סליחה, הייתה שגיאה בעריכת ההודעה שלך. אנא נסה שנית." @@ -1210,8 +1242,6 @@ he: yes_value: "כן, נטוש" via_email: "פרסום זה הגיע באמצעות דוא\"ל" whisper: "פרסום זה הוא לחישה פרטית לצוות האתר" - wiki: - about: "פרסום זה הינו ויקי; משתמשים בסיסיים יכולים לערוך אותו" archetypes: save: 'שמור אפשרויות' controls: @@ -1239,6 +1269,7 @@ he: revert_to_regular: "הסרת צבע צוות" rebake: "בנייה מחודשת של HTML" unhide: "הסרת הסתרה" + change_owner: "שינוי בעלות" actions: flag: 'סימון' defer_flags: @@ -1259,20 +1290,8 @@ he: bookmark: "בטל העדפה" like: "בטל לייק" vote: "בטל הצבעה" - people: - off_topic: "{{icons}} סומן כמחוץ לנושא" - spam: "{{icons}} סומן כספאם" - spam_with_url: "{{icons}} סימון של זה כספאם " - inappropriate: "{{icons}} סומן בלתי ראוי" - notify_moderators: "{{icons}} הודיעו למנהלים" - notify_moderators_with_url: "{{icons}} הודיעו למנהלים" - notify_user: "{{icons}} שלח הודעה" - notify_user_with_url: "{{icons}} שלח הודעה" - bookmark: "{{icons}} סימנו כמועדף" - like: "{{icons}} נתנו לייק" - vote: "{{icons}} הצביעו עבור זה" by_you: - off_topic: "סמ נת פרסום זה כמחוץ לנושא" + off_topic: "סמנת פרסום זה כמחוץ לנושא הפוסט" spam: "סמנת את זה כספאם" inappropriate: "סמנת את זה כלא ראוי" notify_moderators: "סמנת את זה עבור המנהלים" @@ -1283,7 +1302,7 @@ he: by_you_and_others: off_topic: one: "אתה ועוד אחד דגללתם את זה כאוף-טופיק" - other: "את/ה ועוד {{count}} אנשים אחרים סמנתם את זה כמחוץ לנושא" + other: "את/ה ועוד {{count}} אנשים אחרים סמנתם את זה כמחוץ לנושא הפוסט" spam: one: "אתה ועוד אחד דגללתם את זה כספאם" other: "את/ה ועוד {{count}} אנשים אחרים סמנתם את זה כספאם" @@ -1330,10 +1349,6 @@ he: vote: one: "אדם אחד הצביע להודעה זו" other: "{{count}} אנשים הצביעו להודעה זו" - edits: - one: עריכה אחת - other: "{{count}} עריכות" - zero: אין עריכות delete: confirm: one: "Are you sure you want to delete that post?" @@ -1364,10 +1379,10 @@ he: choose: 'בחר קטגוריה…' edit: 'ערוך' edit_long: "עריכה" - view: 'הצג נושאים בקטגוריה' + view: 'הצג פוסטים בקטגוריה' general: 'כללי' settings: 'הגדרות' - topic_template: "תבנית נושא" + topic_template: "תבנית פוסט" delete: 'מחק קטגוריה' create: 'קטגוריה חדשה' create_long: 'צור קטגוריה חדשה' @@ -1395,11 +1410,11 @@ he: security: "אבטחה" special_warning: "Warning: This category is a pre-seeded category and the security settings cannot be edited. If you do not wish to use this category, delete it instead of repurposing it." images: "תמונות" - auto_close_label: "נעל נושאים אוטומטית אחרי:" + auto_close_label: "נעל פוסטים אוטומטית אחרי:" auto_close_units: "שעות" email_in: "כתובת דואר נכנס מותאמת אישית:" email_in_allow_strangers: "קבלת דוא\"ל ממשתמשים אנונימיים ללא חשבונות במערכת הפורומים" - email_in_disabled: "האפשרות פרסום נושאים חדשים דרך הדוא\"ל נוטרלה דרך הגדרות האתר. לאפשר פרסום באמצעות משלוח דוא\"ל." + email_in_disabled: "האפשרות פרסום פוסטים חדשים דרך הדוא\"ל נוטרלה דרך הגדרות האתר. לאפשר פרסום באמצעות משלוח דוא\"ל." email_in_disabled_click: 'אפשרו את את ההגדרה "דוא"ל נכנס"' suppress_from_homepage: "הרחק קטגוריה זו מהעמוד הראשי" allow_badges_label: "הרשו לתגים (badges) להיות מוענקים בקטגוריה זו" @@ -1414,24 +1429,23 @@ he: notifications: watching: title: "עוקב" - description: "תעקבו באופן אוטומטי אחרי כל הנושאים החדשים בקטגוריות אלה. תקבלו התראה על כל פרסום ונושא חדש." + description: "אתה תצפה באופן אוטומטי בכל הנושאים החדשים בקטגוריות אלה. תקבל התראות על כל הודעה חדשה בכל נושא, ומונה תגובות חדשות יופיע." tracking: title: "רגיל+" - description: "בקטגוריות אלה סך הפרסומים החדשים שלא נקראו יופיע לצד שם הנושא." + description: "אתה תעקוב באופן אוטומטי בכל הנושאים החדשים בקטגוריות אלה. תקבל התראות אם מישהו ציין את @שמך או מגיב לך, ומונה תגובות חדשות יופיע." regular: - title: "רגיל" + title: "נורמלי" description: "תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך." muted: title: "מושתק" - description: "לא תקבל התראות בנוגע לנושאים חדשים בקטגוריות האלה, והם לא יופיעו בלשונית ה\"לא נקראו\" שלך." + description: "לא תקבלו התראות על נושאים חדשים בקטגוריות אלו, והם לא יופיעו בעמוד הלא נקראו שלך." flagging: title: 'תודה על עזרתך לשמירה על תרבות הקהילה שלנו!' - private_reminder: 'דגלים הם פרטיים וניתנים לצפייה ע"י הצוות בלבד' action: 'סימון פרסום' take_action: "בצע פעולה" notify_action: 'הודעה' delete_spammer: "מחק ספאמר" - delete_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} נושאים של המשתמש הזה, להסיר את החשבון שלהם, לחסור הרשמה מכתובת ה-IP שלהם %{ip_address}, ולהוסיף את כתובת הדואר האלקטרוני %{email} לרשימה שחורה. אתה בטוח שזה באמת ספאמר?" + delete_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} פוסטים של המשתמש הזה, להסיר את החשבון שלהם, לחסור הרשמה מכתובת ה-IP שלהם %{ip_address}, ולהוסיף את כתובת הדואר האלקטרוני %{email} לרשימה שחורה. אתה בטוח שזה באמת ספאמר?" yes_delete_spammer: "כן, מחק ספאמר" ip_address_missing: "(N/A)" hidden_email_address: "(מוסתר)" @@ -1439,7 +1453,7 @@ he: take_action_tooltip: "הגעה באופן מיידי למספר הסימונים האפשרי, במקום להמתין לסימונים נוספים מן הקהילה" cant: "סליחה, לא ניתן לסמן הודעה זו כרגע." formatted_name: - off_topic: "מחוץ לנושא" + off_topic: "מחוץ לנושא הפוסט" inappropriate: "לא ראוי" spam: "זהו ספאם" custom_placeholder_notify_user: "היה ממוקד, חיובי ואדיב תמיד." @@ -1450,10 +1464,10 @@ he: left: "{{n}} נותרו" flagging_topic: title: "תודה על עזרתך לשמירה על תרבות הקהילה שלנו!" - action: "סימון נושא" + action: "סימון פוסט" notify_action: "הודעה" topic_map: - title: "סיכום נושא" + title: "סיכום פוסט" participants_title: "מפרסמים מתמידים" links_title: "לינקים פופלארים" links_shown: "הצג את כל הקישורים {{totalLinks}}..." @@ -1464,27 +1478,26 @@ he: warning: help: "זוהי אזהרה רשמית." bookmarked: - help: "יצרת סימניה לנושא זה" + help: "יצרת סימניה לפוסט זה" locked: - help: "הנושא הזה נעול, הוא לא מקבל יותר תגובות חדשות" + help: "הפוסט הזה נעול, הוא לא מקבל יותר תגובות חדשות" archived: - help: "הנושא הזה אוכסן בארכיון; הוא הוקפא ולא ניתן לשנותו" + help: "הפוסט הזה אוכסן בארכיון; הוא הוקפא ולא ניתן לשנותו" locked_and_archived: - help: "הנושא הזה סגור ומאורכב. לא ניתן להגיב בו יותר או לשנות אותו. " + help: "הפוסט הזה סגור ומאורכב. לא ניתן להגיב בו יותר או לשנות אותו. " unpinned: title: "הורד מנעיצה" - help: "נושא זה אינו מקובע עבורך; הוא יופיע בסדר הרגיל" + help: "פוסט זה אינו מקובע עבורך; הוא יופיע בסדר הרגיל" pinned_globally: title: "נעוץ גלובאלית" - help: "הנושא הזה נעוץ גלובאלית; הוא יוצג בראש כל הרשימות" pinned: title: "נעוץ" - help: "נושא זה מקובע עבורך, הוא יופיע בראש הקטגוריה" + help: "פוסט זה מקובע עבורך, הוא יופיע בראש הקטגוריה" invisible: - help: "נושא זה מוסתר; הוא לא יוצג ברשימות הנושאים, וזמין רק באמצעות קישור ישיר." + help: "פוסט זה מוסתר; הוא לא יוצג ברשימות הפוסטים, וזמין רק באמצעות קישור ישיר." posts: "הודעות" posts_lowercase: "פרסומים" - posts_long: "יש {{number}} הודעות בנושא הזה" + posts_long: "יש {{number}} הודעות בפוסט הזה" posts_likes_MF: | לנושא זה יש {count, plural, one {פרסום אחד} other {# פרסומים}} נמוך {עם יחס גבוה של לייקים לפרסום} @@ -1497,13 +1510,13 @@ he: one: "צפיה" other: "צפיות" replies: "תגובות" - views_long: "הנושא הזה נצפה {{number}} פעמים" + views_long: "הפוסט הזה נצפה {{number}} פעמים" activity: "פעילות" likes: "לייקים" likes_lowercase: one: "לייקים" other: "לייקים" - likes_long: "יש {{number}} לייקים לנושא הזה" + likes_long: "יש {{number}} לייקים לפוסט הזה" users: "משתמשים" users_lowercase: one: "משתמש" @@ -1516,61 +1529,45 @@ he: not_available: "לא זמין!" categories_list: "רשימת קטגוריות" filters: - with_topics: "%{filter} נושאים" - with_category: "%{filter} %{category} נושאים" + with_topics: "%{filter} פוסטים" + with_category: "%{filter} %{category} פוסטים" latest: - title: - zero: "פורסמו לאחרונה" - one: "פורסמו לאחרונה" - other: "({{count}}) פורסמו לאחרונה" - help: "נושאים עם תגובות לאחרונה" + title: "פורסמו לאחרונה" + help: "פוסטים עם תגובות לאחרונה" hot: title: "חם" - help: "מבחר הנושאים החמים ביותר" + help: "מבחר הפוסטים החמים ביותר" read: title: "נקרא" - help: "נושאים שקראת, לפי סדר קריאתם" + help: "פוסטים שקראת, לפי סדר קריאתם" search: title: "חיפוש" - help: "חיפוש בכל הנושאים" + help: "חיפוש בכל הפוסטים" categories: title: "קטגוריות" title_in: "קטגוריה - {{categoryName}}" - help: "כל הנושאים תחת הקטגוריה הזו" + help: "כל הפוסטים תחת הקטגוריה הזו" unread: - title: - zero: "לא נקרא" - one: "לא נקרא (1)" - other: "לא נקראו ({{count}})" - help: "נושאים שאתם כרגע צופים או עוקבים אחריהם עם פרסומים שלא נקראו" - lower_title_with_count: - one: "1 שלא נקרא" - other: "{{count}} שלא נקראו" + help: "פוסטים שאתם כרגע צופים או עוקבים אחריהם עם פרסומים שלא נקראו" new: - lower_title_with_count: - one: "1 חדש" - other: "{{count}} חדשים" lower_title: "חדש" - title: - zero: "חדש" + title: "חדש" + title_with_count: one: "חדש (1)" other: "חדשים ({{count}})" help: "פרסומים נוצרו בימים האחרונים" posted: title: "ההודעות שלי" - help: "נושאים בהם פרסמת" + help: "פוסטים בהם פרסמת" bookmarks: title: "סימניות" - help: "נושאים עבורם יצרת סימניות" + help: "פוסטים עבורם יצרת סימניות" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}} (1)" - other: "{{categoryName}} ({{count}})" - help: "נושאים מדוברים בקטגוריה {{categoryName}}" + title: "{{categoryName}}" + help: "פוסטים מדוברים בקטגוריה {{categoryName}}" top: title: "מובילים" - help: "הנושאים הפעילים ביותר בשנה, חודש, שבוע או יום האחרונים" + help: "הפוסטים הפעילים ביותר בשנה, חודש, שבוע או יום האחרונים" all: title: "תמיד" yearly: @@ -1667,18 +1664,18 @@ he: delete: "מחיקה" delete_title: "מחיקת הפרסום המסומן כאן." delete_post_defer_flag: "מחיקת הפרסום ודחיית הסימון" - delete_post_defer_flag_title: "מחיקת הפרסום; אם זהו הפרסום הראשון, מחיקת הנושא" + delete_post_defer_flag_title: "מחיקת הפרסום; אם זהו הפרסום הראשון, מחיקת הפוסט" delete_post_agree_flag: "מחיקת הפרסום והסכמה עם הסימון" - delete_post_agree_flag_title: "מחיקת פרסום; אם זהו הפרסום הראשון, מחיקת הנושא" + delete_post_agree_flag_title: "מחיקת פרסום; אם זהו הפרסום הראשון, מחיקת הפוסט" delete_flag_modal_title: "מחיקה ו..." delete_spammer: "מחיקת ספאמר" - delete_spammer_title: "הסרת המשתמש/ת וכל הפרסומים והנושאים של משתמש/ת אלו." + delete_spammer_title: "הסרת המשתמש/ת וכל הפרסומים והפוסטים של משתמש/ת אלו." disagree_flag_unhide_post: "אי-קבלה (הצגה מחדש של הפרסום)" disagree_flag_unhide_post_title: "הסרה של כל הסימונים מהפרסום הזה והחזרתו למצב תצוגה" disagree_flag: "אי קבלה" disagree_flag_title: "התעלמות מהסימון היות שאינו תקין או אינו נכון" clear_topic_flags: "סיום" - clear_topic_flags_title: "הנושא נבדק והבעיה נפתרה. לחצו על סיום כדי להסיר את הסימונים." + clear_topic_flags_title: "הפוסט נבדק והבעיה נפתרה. לחצו על סיום כדי להסיר את הסימונים." more: "(עוד תגובות...)" dispositions: agreed: "התקבל" @@ -1691,8 +1688,8 @@ he: error: "משהו השתבש" reply_message: "תגובה" no_results: "אין סימונים." - topic_flagged: "הנושא הזה דוגלל." - visit_topic: "בקרו בנושא כדי לנקוט פעולה" + topic_flagged: "הפוסט הזה דוגלל." + visit_topic: "בקרו בפוסט כדי לנקוט פעולה" was_edited: "הפרסום נערך לאחר הסימון הראשון" previous_flags_count: "פרסום זה כבר סומן {{count}} פעמים." summary: @@ -1726,15 +1723,22 @@ he: delete_confirm: "למחוק קבוצה זו?" delete_failed: "לא ניתן למחוק קבוצה זו. אם זו קבוצה אוטומטית, היא בלתי ניתנת למחיקה." delete_member_confirm: "להסיר את '%{username}' מהקבוצה '%{group}' ?" + delete_owner_confirm: "הסרת הרשאות מנהל עבור '%{username}'?" name: "שם" add: "הוספה" add_members: "הוספת חברים וחברות" custom: "מותאם" + bulk_complete: "המשתמשים התווספו לקבוצה." + bulk: "הוספ" + bulk_paste: "הדביקו רשימה של שמות משתמש או כתובות אימייל, אחת בכל שורה:" + bulk_select: "(בחר קבוצה)" automatic: "אוטומטי" automatic_membership_email_domains: "משתמשים אשר נרשמים עם מארח דוא\"ל שתואם בדיוק לאחד מהרשימה, יוספו באופן אוטומטי לקבוצה זו:" automatic_membership_retroactive: "החלת כלל מארח דוא\"ל זהה כדי להוסיף משתמשים רשומים" default_title: "ברירת המחדל לכל המשתמשים בקבוצה זו" primary_group: "קבע כקבוצה ראשית באופן אוטומטי" + group_owners: מנהלים + add_owners: הוספת מנהלים api: generate_master: "ייצר מפתח מאסטר ל-API" none: "אין מפתחות API פעילים כרגע." @@ -1746,7 +1750,7 @@ he: revoke: "שלול" confirm_regen: "אתה בטוח שברצונך להחליף את מפתח ה-API באחד חדש?" confirm_revoke: "אתה בטוח שברצונך לשלול את המפתח הזה?" - info_html: "מפתח הAPI שלך יאפשר לך ליצור ולעדכן נושאים בעזרת קריאות JSON." + info_html: "מפתח הAPI שלך יאפשר לך ליצור ולעדכן פוסטים בעזרת קריאות JSON." all_users: "כל המשתמשים" note_html: "שמרו על מפתח זה סודי, כל משתמש שיחזיק בו יוכל לייצר פרסומים שרירותית, כאילו היה כל משתמש/ת אחרים." plugins: @@ -1808,11 +1812,9 @@ he: is_disabled: "שחזור אינו מאופשר לפי הגדרות האתר." label: "שחזר" title: "שחזר את הגיבוי" - confirm: "אתה בטוח שברצונך לשחזר את הגיבוי הזה?" rollback: label: "חזור לאחור" title: "הזחר את מסד הנתונים למצב עבודה קודם" - confirm: "אתה בטוח שברצונך להחזיר את מסד הנתונים למצב עבודה קודם?" export_csv: user_archive_confirm: "האם את/ה בטוח/ה שאתם רוצים להוריד את הפרסומים שלכם?" success: "יצוא החל, תקבלו הודעה כשהתהליך יסתיים" @@ -1863,6 +1865,13 @@ he: color: "צבע" opacity: "טשטוש" copy: "העתק" + email_templates: + title: "תבניות דואר אלקטרוני" + subject: "נושא" + body: "הודעה" + none_selected: "בחרו תבנית דואר אלקטרוני לעריכה." + revert: "ביטול שינויים" + revert_confirm: "האם ברצונכם לבטל את השינויים?" css_html: title: "CSS/HTML" long_title: "התאמת CSS ו-HTML" @@ -1897,23 +1906,19 @@ he: description: "טקסט ואייקונים בכותרת האתר." highlight: name: 'הדגשה' - description: 'צבע הרקע של אלמנטים מודגשים בעמוד, כמו הודעות ונושאים.' + description: 'צבע הרקע של אלמנטים מודגשים בעמוד, כמו הודעות ופוסטים.' danger: name: 'זהירות' - description: 'צבע הדגשה של פעולות כמו מחיקת הודעות ונושאים.' + description: 'צבע הדגשה של פעולות כמו מחיקת הודעות ופוסטים.' success: name: 'הצלחה' description: 'משמש כדי לסמן פעולה מוצלחת.' love: name: 'חבב' description: "צבע הרקע של הכפתור \"חבב\"" - wiki: - name: 'ויקי' - description: "צבעי יסוד משמשים כצבעי רקע בפרסומי ויקי." email: - title: "דואר אלקטרוני" settings: "הגדרות" - all: "הכל" + preview_digest: "תצוגה מקדימה של סיכום" sending_test: "שולח דואר אלקטרוני לבדיקה..." error: "שגיאה - %{server_error}" test_error: "הייתה בעיה בשליחת הדואר האלקטרוני. בבקשה בדוק את ההגדרות שלך ונסה שנית." @@ -1928,7 +1933,6 @@ he: send_test: "שליחת מייל בדיקה" sent_test: "נשלח!" delivery_method: "שיטת העברה" - preview_digest: "תצוגה מקדימה של סיכום" preview_digest_desc: "תצוגה מקדימה של מייל סיכום שנשלח למשתמשים לא פעילים. " refresh: "רענן" format: "פורמט" @@ -1953,8 +1957,9 @@ he: last_match_at: "הותאם לאחרונה" match_count: "תואם" ip_address: "IP" - topic_id: "זהות (ID) נושא" + topic_id: "זהות (ID) פוסט" post_id: "זהות (ID) פרסום" + category_id: "מזהה קטגוריה" delete: 'מחק' edit: 'ערוך' save: 'שמור' @@ -1990,11 +1995,14 @@ he: grant_badge: "הענק תג" revoke_badge: "שלול תג" check_email: "בדיקת דוא\"ל" - delete_topic: "מחיקת נושא" + delete_topic: "מחיקת פוסט" delete_post: "מחיקת פרסום" impersonate: "התחזה" anonymize_user: "הפיכת משתמש/ת לאנונימיים" roll_up: "roll up IP blocks" + change_category_settings: "שינוי הגדרות קטגוריה" + delete_category: "מחק קטגוריה" + create_category: "יצירת קטגוריה" screened_emails: title: "הודעות דואר מסוננות" description: "כשמישהו מנסה ליצור חשבון חדש, כתובות הדואר האלקטרוני הבאות ייבדקו וההרשמה תחסם או שיבוצו פעולות אחרות." @@ -2061,9 +2069,9 @@ he: pending: 'משתמשים שממתינים לבדיקה' newuser: 'משתמשים ברמת אמון 0 (משתמש חדש)' basic: 'משתמשים ברמת אמון 1 (משתמש בסיסי)' - regular: 'משתמשים בדרגת אמון 2 (חברים)' - leader: 'משתמשים בדרגת אמון 3 (רגילים)' - elder: 'משתמשים בדרגת אמון 4 (מובילים)' + member: 'משתמשים בדרגת אמון 2 (חברים)' + regular: 'משתמשים בדרגת אמון 3 (רגילים)' + leader: 'משתמשים בדרגת אמון 4 (מובילים)' staff: "צוות" admins: 'מנהלים ראשיים' moderators: 'מנהלים' @@ -2089,7 +2097,7 @@ he: suspend_reason: "סיבה" suspended_by: "הושעה על ידי" delete_all_posts: "מחק את כל ההודעות" - delete_all_posts_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} נושאים. אתה בטוח?" + delete_all_posts_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} פוסטים. אתה בטוח?" suspend: "השעה" unsuspend: "בטל השעייה" suspended: "מושעה?" @@ -2117,10 +2125,10 @@ he: activity: פעילות like_count: לייקים שהוענקו / התקבלו last_100_days: 'ב-100 הימים האחרונים' - private_topics_count: נושאים פרטיים + private_topics_count: פוסטים פרטיים posts_read_count: הודעות שנקראו post_count: הודעות שנוצרו - topics_entered: נושאים שנצפו + topics_entered: פוסטים שנצפו flags_given_count: דגלים שניתנו flags_received_count: סימונים שהתקבלו warnings_received_count: התקבלו אזהרות @@ -2162,7 +2170,7 @@ he: block_failed: 'הייתה בעיה בחסימת המשתמש.' deactivate_explanation: "חשבון משתמש מנוטרל נדרש לוודא דואר אלקטרוני מחדש." suspended_explanation: "משתמש מושעה לא יכול להתחבר." - block_explanation: "משתמש חסום לא יכול לפרסם הודעות או נושאים." + block_explanation: "משתמש חסום לא יכול לפרסם הודעות או פוסטים." trust_level_change_failed: "הייתה בעיה בשינוי רמת האמון של המשתמש." suspend_modal_title: "השעה משתמש" trust_level_2_users: "משתמשי רמת אמון 2" @@ -2173,14 +2181,13 @@ he: unlock_trust_level: "שחרור רמת אמון מנעילה" tl3_requirements: title: "דרישות עבור רמת אמון 3" - table_title: "במאה הימים האחרונים:" value_heading: "ערך" requirement_heading: "דרישה" visits: "ביקורים" days: "ימים" - topics_replied_to: "נושאים להם הגיבו" - topics_viewed: "נושאים שנצפו" - topics_viewed_all_time: "נושאים שנצפו (בכל זמן)" + topics_replied_to: "פוסטים להם הגיבו" + topics_viewed: "פוסטים שנצפו" + topics_viewed_all_time: "פוסטים שנצפו (בכל זמן)" posts_read: "פרסומים שנקראו" posts_read_all_time: "פרסומים שנקראו (בכל זמן)" flagged_posts: "הודעות מדוגללות" @@ -2234,7 +2241,6 @@ he: confirm: 'אישור' dropdown: "נגלל" site_text: - none: "בחרו את סוג התוכן לתחילת עריכה." title: 'תוכן טקסטואלי' site_settings: show_overriden: 'הצג רק הגדרות ששונו' @@ -2281,7 +2287,7 @@ he: modal_title: תג קבוצות granted_by: הוענק ע"י granted_at: הוענק ב - reason_help: (קישור לפרסום או לנושא) + reason_help: (קישור לפרסום או לפוסט) save: שמור delete: מחק delete_confirm: אתה בטוח שברצונך למחוק את התג הזה? @@ -2323,10 +2329,7 @@ he: bad_count_warning: header: "זהירות!" text: "ישנן דוגמאות הענקה חסרות. זה קורה כחיפוש תגים מחזיר זהות (ID) של משתמש או פרסום שאינם קיימים. זה עלול לגרום לתוצאות לא צפויות מאוחר יותר - אנא בדקו שוב את מחרוזת החיפוש שלכם." - grant_count: - zero: "אין תגים להקצאה." - one: "1 תגים להקצאה." - other: "%{count}תגים שנותרו להקצאה." + no_grant_count: "אין תגים להקצאה." sample: "דוגמא:" grant: with: %{username} @@ -2354,7 +2357,7 @@ he: feed_description: "לספק פיד RSS/ATOM לאתרך יכול לשפר את היכולת של דיסקורס ליבא את התוכן שלך." crawling_settings: "Crawler Settings" crawling_description: "When Discourse creates topics for your posts, if no RSS/ATOM feed is present it will attempt to parse your content out of your HTML. Sometimes it can be challenging to extract your content, so we provide the ability to specify CSS rules to make extraction easier." - embed_by_username: "שם משתמש ליצירת נושא" + embed_by_username: "שם משתמש ליצירת פוסט" embed_post_limit: "מספר מקסימלי של פרסומים להטמעה." embed_username_key_from_feed: "מפתח למשיכת שם המשתמש ב-discourse מהפיד." embed_truncate: "חיתוך הפרסומים המוטמעים." @@ -2366,8 +2369,8 @@ he: permalink: title: "קישורים קבועים" url: "כתובת" - topic_id: "מזהה לנושא" - topic_title: "נושא" + topic_id: "מזהה לפוסט" + topic_title: "פוסט" post_id: "מזהה לפרסום" post_title: "הודעה" category_id: "מזהה לקטגוריה" @@ -2400,28 +2403,28 @@ he: jump: '# מעבר לפרסום #' back: 'u חזרה' up_down: 'k/j Move selection ↑ ↓' - open: 'o או Enter פתח נושא נבחר' + open: 'o או Enter פתח פוסט נבחר' next_prev: 'shift+j/shift+kלחלק הבא/קודם' application: title: 'יישום' - create: 'c צור נושא חדש' + create: 'c צור פוסט חדש' notifications: 'n פתח התראות' hamburger_menu: '= פתח תפריט המבורגר' user_profile_menu: 'pפתיחת תפריט משתמש/ת' - show_incoming_updated_topics: '. הצגת נושאים שעודכנו' + show_incoming_updated_topics: '. הצגת פוסטים שעודכנו' search: '/ חיפוש' help: '? הצגת עזרת מקלדת' dismiss_new_posts: 'x, r שחרור הודעות/חדשות' - dismiss_topics: 'x, t שחרור נושאים' + dismiss_topics: 'x, t שחרור פוסטים' log_out: 'shift+z shift+z התנתק' actions: title: 'פעולות' - bookmark_topic: 'f החלפת נושא סימניה' - pin_unpin_topic: 'shift+pקיבוע/שחרור נושא' - share_topic: 'shift+s שיתוף הנושא' + bookmark_topic: 'f החלפת פוסט סימניה' + pin_unpin_topic: 'shift+pקיבוע/שחרור פוסט' + share_topic: 'shift+s שיתוף הפוסט' share_post: 's שיתוף הודעה' - reply_as_new_topic: 't תגובה כנושא מקושר' - reply_topic: 'shift+r תשובה לנושא' + reply_as_new_topic: 't תגובה כפוסט מקושר' + reply_topic: 'shift+r תשובה לפוסט' reply_post: 'r להגיב להודעה' quote_post: ' q ציטוט פוסט' like: 'l תן לייק להודעה' @@ -2429,14 +2432,12 @@ he: bookmark: 'b הוסף הודעה למועדפים' edit: 'e ערוך הודעה' delete: 'd מחק הודעה' - mark_muted: 'm, m השתקת נושא' - mark_regular: 'm, r נושא רגיל (ברירת מחדל)' - mark_tracking: 'm, t מעקב נושא' - mark_watching: 'm, wצפייה בנושא' + mark_muted: 'm, m השתקת פוסט' + mark_regular: 'm, r פוסט רגיל (ברירת מחדל)' + mark_tracking: 'm, t מעקב פוסט' + mark_watching: 'm, wצפייה בפוסט' badges: title: תגים - allow_title: "יכול לשמש ככותרת" - multiple_grant: "יכול להיות מוענק מספר פעמים" badge_count: one: "תג אחד" other: "%{count} תגים" @@ -2459,97 +2460,6 @@ he: name: אחר posting: name: פרסום - badge: - editor: - name: עורך - description: עריכה ראשונה של פוסט - basic_user: - name: בסיסי - description: מאושרות כל - member: - name: חבר/ה - description: הענקת הזמנות - regular: - name: רגיל/ה - description: הענקת קטרוג מחודש, שינוי שם, קישורים עוקבים ולאונג' - leader: - name: מוביל/ה - description: הענקת עריכה גלובלית, הצמדה, סגירה, ארכוב, פיצול ומיזוג - welcome: - name: ברוכים הבאים - description: קיבל לייק - autobiographer: - name: אוטוביוגרפר/ית? - description: פרופיל מידע משתמש - anniversary: - name: יום השנה - description: חבר/ה פעיל/ה במשך שנה, פרסמ/ה לפחות פעם אחת - nice_post: - name: פרסום נחמד - description: קיבל/ה 10 לייקים על הפוסט. תג זה ניתן להעניק שוב ושוב ללא הגבלה - good_post: - name: פרסום מוצלח - description: קיבל/ה 25 לייקים על הפוסט. תג זה ניתן להעניק שוב ושוב ללא הגבלה - great_post: - name: פרסום מצויין - description: קבלת 50 לייקים על פרסום. תג זה יכול להיות מוענק מספר פעמים - nice_topic: - name: נושא נחמד - description: קיבל/ה 10 לייקים על נושא. תג זה יכול להיות מוענק כמה פעמים - good_topic: - name: נושא טוב - description: קיבל/ה 25 לייקים על הנושא. תג זה יכול להיות מוענק כמה פעמים - great_topic: - name: נושא מצויין - description: קיבל/ה 50 לייקים על הנושא. תג זה יכול להיות מוענק מספר פעמים - nice_share: - name: שיתוף נחמד - description: שיתפ/ה פרסום עם 25 מבקרים ייחודיים - good_share: - name: שיתוף טוב - description: שיתפ/ה פרסום עם 300 מבקרים ייחודיים - great_share: - name: שיתוף מעולה - description: חלק/ה פרסום עם 1000 מבקרים ייחודיים - first_like: - name: לייק ראשון - description: חיבב/ה פרסום - first_flag: - name: סימון ראשון - description: סימן/סימנה פרסום - promoter: - name: מקדם - description: הזמן משתמש - campaigner: - name: קמפיינר - description: הזמן 3 משתמשים בסיסים (דרגת אמון 1) - champion: - name: אלוף - description: הזמן 5 משתמשים (דרגת אמון 2) - first_share: - name: שיתוף ראשון - description: שיתף/שיתפה פרסום - first_link: - name: קישור (link) ראשון - description: הוסיף/הוסיפה קישור פנימי לנושא אחר - first_quote: - name: ציטוט ראשון - description: ציטוט משתמש - read_guidelines: - name: קריאת כללים מנחים - description: קראו את הכללים המנחים של הקהילה - reader: - name: מקראה - description: קראו כל פרסום בנושא עם יותר מ-100 פרסומים - popular_link: - name: לינק פופלארי - description: פרסם קישור חיצוני עם לפחות 50 לחיצות - hot_link: - name: קישור חם - description: פרסם קישור חיצוני עם לפחות 300 לחיצות - famous_link: - name: קישור מפורסם - description: פרסם קישור חיצוני עם לפחות 1000 לחיצות google_search: |
diff --git a/config/locales/client.id.yml b/config/locales/client.id.yml index b3a559e5d62..32c523008af 100644 --- a/config/locales/client.id.yml +++ b/config/locales/client.id.yml @@ -8,22 +8,30 @@ id: js: number: + format: + separator: "." + delimiter: "," human: storage_units: format: '%n %u' units: byte: - other: Bytes + other: Bit gb: GB kb: KB mb: MB tb: TB + short: + thousands: "{{number}}k" + millions: "{{number}}M" dates: time: "j:mm a" long_no_year: "BBB H j:mm a" long_no_year_no_time: "BBB H" + full_no_year_no_time: "MMMM Do" long_with_year: "BBB H, TTTT j:mm a" long_with_year_no_time: "BBB H, TTTT" + full_with_year_no_time: "MMMM Do, YYYY" long_date_with_year: "BBB H, 'TT LT" long_date_without_year: "BBB H, LT" long_date_with_year_without_time: "BBB H, 'TT" @@ -66,6 +74,13 @@ id: other: "%{count} jam yang lalu" x_days: other: "%{count} hari yang lalu" + later: + x_days: + other: "%{count} hari kemudian" + x_months: + other: "%{count} bulan kemudian" + x_years: + other: "%{count} bulan kemudian" share: topic: 'share link ke topik ini' post: 'post #%{postNumber}' @@ -74,6 +89,27 @@ id: facebook: 'share link ini di Facebook' google+: 'share link ini di Google+' email: 'kirim link ini melalui email' + action_codes: + split_topic: "pisahkan topik ini %{when}" + autoclosed: + enabled: 'ditutup %{when}' + disabled: 'dibuka %{when}' + closed: + enabled: 'ditutup %{when}' + disabled: 'dibuka %{when}' + archived: + enabled: 'diarsipkan %{when}' + disabled: 'tidak diarsipkan %{when}' + pinned: + enabled: 'disematkan %{when}' + disabled: 'tidak disematkan %{when}' + pinned_globally: + enabled: 'disematkan secara global %{when}' + disabled: 'tidak disematkan %{when}' + visible: + enabled: 'terdaftar %{when}' + disabled: 'tidak terdaftar %{when}' + topic_admin_menu: "topik aksi admin" emails_are_disabled: "Semua surel yang keluar telah dinonaktifkan oleh administrator. Tidak ada pemberitahuan email yang akan dikirimkan." edit: 'Ubah judul dan kategori topik ini' not_implemented: "Maaf, fitur ini belum diimplementasikan." @@ -84,56 +120,68 @@ id: sign_up: "Daftar" log_in: "Log In" age: "Umur" - joined: "Joined" + joined: "Bergabung" admin_title: "Admin" flags_title: "Flags" - show_more: "show more" - links: "Links" + show_more: "tampilkan lebih banyak" + show_help: "pilihan" + links: "Tautan" + links_lowercase: + other: "tautan" faq: "FAQ" - guidelines: "Guidelines" - privacy_policy: "Privacy Policy" - privacy: "Privacy" - terms_of_service: "Terms of Service" - mobile_view: "Mobile View" - desktop_view: "Desktop View" - you: "Kamu" + guidelines: "Petunjuk" + privacy_policy: "Kebijakan Privasi" + privacy: "Privasi" + terms_of_service: "Ketentuan Layanan" + mobile_view: "Tampilan Mobile" + desktop_view: "Tampilan Desktop" + you: "Anda" or: "atau" - now: "just now" - read_more: 'read more' - more: "Selebihnya" + now: "baru saja" + read_more: 'baca selengkapnya' + more: "Selengkapnya" less: "Lebih Singkat" - never: "Tidak pernah" - daily: "Harian" - weekly: "Mingguan" - every_two_weeks: "Setiap dua minggu" - max_of_count: "Maksimal {{count}}" + never: "tidak pernah" + daily: "harian" + weekly: "mingguan" + every_two_weeks: "setiap dua minggu" + every_three_days: "setiap tiga hari" + max_of_count: "maksimal dari {{count}}" + alternation: "atau" character_count: other: "{{count}} karakter" suggested_topics: - title: "Suggested Topics" + title: "Topik Yang Disarankan" about: simple_title: "Tentang" title: "Tentang %{title}" - stats: "Statistik situs" + stats: "Statistik Situs" our_admins: "Admin Kami" our_moderators: "Moderator Kami" stat: - all_time: "Setiap Waktu" - last_7_days: "Selama 7 Hari" - last_30_days: "30 hari terakhir" + all_time: "Sepanjang Waktu" + last_7_days: "7 Hari Terakhir" + last_30_days: "30 Hari Terakhir" + like_count: "Suka" topic_count: "Topik" - post_count: "Post" + post_count: "Pos" user_count: "Pengguna Baru" active_user_count: "Pengguna Aktif" contact: "Kontak kami" + contact_info: "Pada kegiatan dari sebuah isu kritikal atau penting terjadi pada situs ini, silahkan kontak kami di %{contact_info}." bookmarked: - title: "Markah" + title: "Penandaan" + clear_bookmarks: "Bersihkan Penandaan" + help: + bookmark: "Klik untuk membuat penandaan pos pertama di topik ini" + unbookmark: "Klik untuk menghapus semua penandaan di topik ini" bookmarks: not_logged_in: "Maaf, anda harus masuk untuk menandai post" created: "Anda telah menandai post ini" not_bookmarked: "Anda telah membaca post ini; klik untuk menandainya" last_read: "Ini adalah post terakhir yang anda baca; klik untuk menandainya" remove: "Hilangkan penandaan" + confirm_clear: "Apakah anda yakin ingin membersihkan semua penandaan dari topik ini?" topic_count_latest: other: "{{count}} topik baru atau diperbarui." topic_count_unread: @@ -141,26 +189,39 @@ id: topic_count_new: other: "{{count}} topik baru." click_to_show: "Klik untuk menampilkan" - preview: "preview" - cancel: "cancel" + preview: "pratinjau" + cancel: "batal" save: "Simpan Perubahan" saving: "Menyimpan..." saved: "Tersimpan!" upload: "Unggah" uploading: "Mengunggah..." + uploading_filename: "Sedang Mengunggah {{filename}}..." uploaded: "Sudah Diunggah!" enable: "Aktifkan" disable: "Nonaktifkan" undo: "Batalkan perintah" revert: "Kembali ke awal" failed: "Gagal" + switch_to_anon: "Mode Anonim" + switch_from_anon: "Keluar Anonim" banner: - close: "Abaikan Banner ini." + close: "Abaikan banner ini." + edit: "Ubah banner ini >>" choose_topic: - none_found: "Tidak ada topik." + none_found: "Tidak ada topik ditemukan." title: search: "Cari Topik berdasarkan nama, url atau id:" placeholder: "tulis judul topik disini" + queue: + topic: "Topik:" + approve: 'Terima' + reject: 'Tolak' + delete_user: 'Hapus Pengguna' + title: "Membutuhan Persetujuan" + none: "Tidak ada pos untuk di pratinjau." + edit: "Ubah" + cancel: "Batal" user_action: user_posted_topic: "{{user}} memposting topik" you_posted_topic: "Anda memposting the topic" @@ -182,7 +243,6 @@ id: members: "Anggota" posts: "Post" alias_levels: - title: "Siapa yang dapat menggunakan grup ini sebagai alias?" nobody: "Tak seorangpun" only_admins: "Hanya admin" mods_and_admins: "Hanya moderator dan Admin" @@ -195,7 +255,6 @@ id: '4': "Topik" '7': "Disebutkan" '9': "Kutipan" - '10': "Bertanda Bintang" '11': "Edit" '12': "Item Terkirim" '13': "Kotak masuk" @@ -260,7 +319,6 @@ id: warnings_received: "peringatan" messages: all: "Semua" - unread: "Belum dibaca" change_password: success: "(surel terkirim)" in_progress: "(mengirimkan surel)" @@ -280,7 +338,9 @@ id: email_settings: "Email" email_digests: daily: "harian" + every_three_days: "setiap tiga hari" weekly: "mingguan" + every_two_weeks: "setiap dua minggu" auto_track_options: never: "tidak pernah" password: @@ -297,6 +357,7 @@ id: forgot_password: action: "Saya lupa password" login: + title: "Log In" email_placeholder: "email atau username" twitter: title: "dengan Twitter" @@ -310,6 +371,7 @@ id: bold_title: "Strong" italic_title: "Emphasis" link_title: "Hyperlink" + modal_cancel: "Batal" notifications: more: "lihat notifikasi sebelumnya" topic: @@ -331,28 +393,26 @@ id: attachment_too_large: "Maaf, file yang kamu unggah terlalu besar (ukuran maksimal {{max_size_kb}}kb)." image_upload_not_allowed_for_new_user: "Maaf, pengguna baru belum diperbolehkan mengunggah gambar." attachment_upload_not_allowed_for_new_user: "Maaf, pengguna baru belum diperbolehkan mengunggah lampiran." + controls: + more: "Selengkapnya" revisions: controls: first: "Revisi pertama" category: + edit_long: "Ubah" auto_close_units: "jam" + posts: "Pos" + likes: "Suka" users: "Pengguna" filters: new: - lower_title_with_count: - one: "1 baru" - other: "{{count}} baru" lower_title: "baru" - title: - zero: "Baru" - one: "Baru(1)" - other: "Baru ({{count}})" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}} (1)" - other: "{{categoryName}} ({{count}})" help: "topik terakhir di kategori {{categoryName}}" + top: + all: + title: "Sepanjang Waktu" + all_time: "Sepanjang Waktu" admin_js: admin: title: 'Admin Discourse' @@ -360,12 +420,21 @@ id: dashboard: latest_version: "Terbaru" last_checked: "Terakhir dicek" + reports: + last_7_days: "7 Hari Terakhir" + last_30_days: "30 Hari Terakhir" + all_time: "Sepanjang Waktu" flags: system: "Sistem" groups: delete: "Hapus" delete_confirm: "Hapus grup ini?" + backups: + operations: + cancel: + label: "Batal" customize: + preview: "pratinjau" new: "New" new_style: "preview" delete: "Hapus" @@ -374,12 +443,23 @@ id: sent_test: "terkirim!" delivery_method: "Metode Pengiriman" html: "html" + logs: + edit: 'Ubah' users: not_found: "Maaf, username tersebut tidak ada ditemukan." active: "Aktif" + nav: + staff: 'Staf' + titles: + staff: "Staf" user: suspend_duration_units: "(hari)" suspend_reason: "Alasan" + approve: 'Terima' + delete: "Hapus Pengguna" + user_fields: + edit: "Ubah" + cancel: "Batal" site_settings: categories: users: 'Pengguna' @@ -395,3 +475,12 @@ id: search: '/ Cari' actions: title: 'Aksi' + google_search: | +
+
+
+
diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml index 0ddad6637a0..ba6ef6b710a 100644 --- a/config/locales/client.it.yml +++ b/config/locales/client.it.yml @@ -100,6 +100,8 @@ it: x_years: one: "1 anno dopo" other: "%{count} anni dopo" + previous_month: 'Mese Precedente' + next_month: 'Mese Successivo' share: topic: 'Condividi un link a questa conversazione' post: 'messaggio n°%{postNumber}' @@ -109,6 +111,9 @@ it: google+: 'Condividi questo link su Google+' email: 'invia questo collegamento via email' action_codes: + split_topic: "ha separato questo argomento %{when}" + invited_user: "Invitato %{who} %{when}" + removed_user: "rimosso %{who} %{when}" autoclosed: enabled: 'chiuso %{when}' disabled: 'aperto %{when}' @@ -135,7 +140,7 @@ it: yes_value: "Sì" generic_error: "Spiacenti! C'è stato un problema." generic_error_with_reason: "Si è verificato un errore: %{error}" - sign_up: "Registrati" + sign_up: "Iscriviti" log_in: "Accedi" age: "Età" joined: "Iscritto" @@ -227,6 +232,7 @@ it: revert: "Ripristina" failed: "Fallito" switch_to_anon: "Modalità Anonima" + switch_from_anon: "Abbandona Anonimato" banner: close: "Nascondi questo banner." edit: "Modifica questo annuncio >>" @@ -249,7 +255,6 @@ it: one: "Questo argomento ha 1 messaggio in attesa di approvazione" other: "Questo argomento ha {{count}} messaggi in attesa di approvazione" confirm: "Salva Modifiche" - delete_prompt: "Sei sicuro di voler eliminare %{username}? Ciò cancellerà tutti i suoi messaggi e bloccherà il suo indirizzo email e l'IP." approval: title: "Il Messaggio Richiede Approvazione" description: "Abbiamo ricevuto il tuo messaggio ma prima che appaia è necessario che venga approvato da un moderatore. Per favore sii paziente." @@ -292,14 +297,26 @@ it: one: "1 utente" other: "%{count} utenti" groups: + empty: + posts: "Non ci sono messaggi dai membri di questo gruppo." + members: "Non ci sono membri in questo gruppo." + mentions: "Non ci sono menzioni a questo gruppo." + messages: "Non ci sono messaggi per questo gruppo." + topics: "Non ci sono argomenti da membri di questo gruppo." + add: "Aggiungi" + selector_placeholder: "Aggiungi membri" + owner: "proprietario" visible: "Il Gruppo è visibile a tutti gli utenti" title: one: "gruppo" other: "gruppi" members: "Membri" + topics: "Argomenti" posts: "Messaggi" + mentions: "Menzioni" + messages: "Messaggi" alias_levels: - title: "Chi può usare questo gruppo come alias?" + title: "Chi può inviare @menzionare e inviare messaggi a questo gruppo?" nobody: "Nessuno" only_admins: "Solo gli amministratori" mods_and_admins: "Solo i moderatori e gli amministratori" @@ -308,6 +325,19 @@ it: trust_levels: title: "Livello di esperienza automaticamente assegnato ai membri quando vengono aggiunti:" none: "Nessuno" + notifications: + watching: + title: "In osservazione" + description: "Verrai avvertito per ogni nuovo messaggio, e verrà mostrato il conteggio delle nuove risposte." + tracking: + title: "Seguendo" + description: "Verrai avvertito se qualcuno menziona il tuo @nome o ti risponde, e verrà mostrato un conteggio delle nuove risposte." + regular: + title: "Esperto" + description: "Verrai avvertito se qualcuno menziona il tuo @nome o ti risponde." + muted: + title: "Silenziato" + description: "Non verrai mai avvertito per i nuovi argomenti in questo gruppo." user_action_groups: '1': "Mi piace - Assegnati" '2': "Mi piace - Ricevuti" @@ -317,7 +347,6 @@ it: '6': "Risposte" '7': "Menzioni" '9': "Citazioni" - '10': "Preferiti" '11': "Modifiche" '12': "Inviati" '13': "Posta in arrivo" @@ -327,6 +356,7 @@ it: all_subcategories: "tutte" no_subcategory: "nessuno" category: "Categoria" + category_list: "Visualizza l'elenco delle categorie" reorder: title: "Riordina Categorie" title_long: "Riorganizza l'elenco di categorie" @@ -383,16 +413,14 @@ it: invited_by: "Invitato Da" trust_level: "Livello Esperienza" notifications: "Notifiche" + statistics: "Statistiche" desktop_notifications: label: "Notifiche Desktop" not_supported: "Spiacenti, le notifiche non sono supportate su questo browser." perm_default: "Attiva Notifiche" perm_denied_btn: "Permesso Negato" - perm_denied_expl: "Hai negato il permesso per le notifiche. Usa il browser per abilitare le notifiche, poi premi il bottone quando hai finito. (Per il desktop: l'icona più a sinistra sulla barra degli indirizzi. Mobile: 'Informazioni sul sito'.)" disable: "Disabilita Notifiche" - currently_enabled: "(attualmente attivate)" enable: "Abilita Notifiche" - currently_disabled: "(attualmente disabilitate)" each_browser_note: "Nota: devi modificare questa impostazione per ogni browser che utilizzi." dismiss_notifications: "Imposta tutti come Letti" dismiss_notifications_tooltip: "Imposta tutte le notifiche non lette come lette " @@ -416,7 +444,7 @@ it: tracked_categories: "Seguite" tracked_categories_instructions: "Seguirai automaticamente tutti i nuovi argomenti appartenenti a queste categorie. Di fianco all'argomento comparirà il conteggio dei nuovi messaggi." muted_categories: "Silenziate" - muted_categories_instructions: "Non ti verrà notificato nulla sui nuovi argomenti in queste categorie, e non compariranno nel tab dei non letti." + muted_categories_instructions: "Non ti verrà notificato nulla sui nuovi argomenti in queste categorie, e non compariranno nell'elenco Ultimi." delete_account: "Cancella il mio account" delete_account_confirm: "Sei sicuro di voler cancellare il tuo account in modo permanente? Questa azione non può essere annullata!" deleted_yourself: "Il tuo account è stato eliminato con successo." @@ -426,6 +454,7 @@ it: users: "Utenti" muted_users: "Silenziati" muted_users_instructions: "Occulta tutte le notifiche da questi utenti." + muted_topics_link: "Mostra argomenti silenziati" staff_counters: flags_given: "segnalazioni utili" flagged_posts: "messaggi segnalati" @@ -434,8 +463,14 @@ it: warnings_received: "avvisi" messages: all: "Tutti" - mine: "Miei" - unread: "Non letti" + inbox: "In arrivo" + sent: "Spediti" + archive: "Archiviati" + groups: "I Miei Gruppi" + bulk_select: "Seleziona messaggi" + move_to_inbox: "Sposta in arrivo" + failed_to_move: "Errore nello spostare i messaggi selezionati (forse la tua connessione non è attiva)" + select_all: "Seleziona Tutti" change_password: success: "(email inviata)" in_progress: "(invio email in corso)" @@ -480,10 +515,10 @@ it: ok: "Ti invieremo una email di conferma" invalid: "Inserisci un indirizzo email valido" authenticated: "{{provider}} ha autenticato la tua email" + frequency_immediately: "Ti invieremo immediatamente una email se non hai letto ciò per cui ti stiamo scrivendo." frequency: - zero: "Ti invieremo immediatamente una email se non hai letto ciò per cui ti stiamo scrivendo." - one: "Ti invieremo email solo se non ti abbiamo visto nell'ultimo minuto." - other: "Ti invieremo email solo se non ti abbiamo visto negli ultimi {{count}} minuti." + one: "TI invieremo un email solo se non ti avremo visto nell'ultimo minuto." + other: "Ti invieremo una email solo se non ti si vede da almeno {{count}} minuti." name: title: "Nome" instructions: "Nome completo (facoltativo)" @@ -519,6 +554,9 @@ it: title: "Targhetta Scheda Utente" website: "Sito Web" email_settings: "Email" + like_notification_frequency: + always: "Sempre" + never: "Mai" email_digests: title: "Quando non visito il sito, invia un riassunto delle novità per email: " daily: "ogni giorno" @@ -555,7 +593,9 @@ it: user: "Utente Invitato" sent: "Spedito" none: "Non ci sono inviti in sospeso da visualizzare." - truncated: "Mostro i primi {{count}} inviti." + truncated: + one: "Mostro il primo invito." + other: "Mostro i primi {{count}} inviti." redeemed: "Inviti Accettati" redeemed_tab: "Riscattato" redeemed_tab_with_count: "Riscattato ({{count}})" @@ -575,7 +615,7 @@ it: account_age_days: "Età dell'utente in giorni" create: "Invia un Invito" generate_link: "Copia il collegamento di invito" - generated_link_message: '
Il link di invito è stato generato con successo!
Il link sarà disponibile solo per l''email: %{invitedEmail}
' + generated_link_message: '
Il collegamento di invito è stato generato con successo!
Il collegamento sarà valido solo per la seguente email: %{invitedEmail}
' bulk_invite: none: "Non hai ancora invitato nessuno qui. Puoi inviare inviti individuali, o invitare un gruppo di persone caricando un file di invito di massa." text: "Invito di Massa da File" @@ -590,6 +630,15 @@ it: same_as_email: "La password coincide con l'email." ok: "La password è adeguata" instructions: "Minimo %{count} caratteri." + summary: + title: "Riepilogo" + stats: "Statistiche" + top_replies: "Migliori Risposte" + more_replies: "Altre Risposte" + top_topics: "Migliori Argomenti" + more_topics: "Altri Argomenti" + top_badges: "Migliori Targhette" + more_badges: "Altre Targhette" associated_accounts: "Login" ip_address: title: "Ultimo indirizzo IP" @@ -615,11 +664,13 @@ it: server: "Errore del Server" forbidden: "Accesso Negato" unknown: "Errore" + not_found: "Pagina Non Trovata" desc: network: "Per favore controlla la connessione." network_fixed: "Sembra essere tornato." server: "Codice di errore: {{status}}" forbidden: "Non hai i permessi per visualizzarlo." + not_found: "Oops, l'applicazione ha cercato di caricare una URL inesistente." unknown: "Qualcosa è andato storto." buttons: back: "Torna Indietro" @@ -630,8 +681,10 @@ it: logout: "Ti sei disconnesso." refresh: "Ricarica" read_only_mode: - enabled: "La modalità di sola lettura è attiva. Puoi continuare a navigare nel sito ma le interazioni potrebbero non funzionare." login_disabled: "L'accesso è disabilitato quando il sito è in modalità di sola lettura." + too_few_topics_and_posts_notice: "Cominciamo a discutere! Ci sono al momento %{currentTopics} / %{requiredTopics} argomenti e %{currentPosts} / %{requiredPosts} messaggi. I nuovi visitatori vogliono qualche discussione da leggere e a cui rispondere." + too_few_topics_notice: "Cominciamo a discutere! Ci sono al momento %{currentTopics} / %{requiredTopics} argomenti. I nuovi visitatori vogliono qualche discussione da leggere e a cui rispondere." + too_few_posts_notice: "Cominciamo a discutere! Ci sono al momento %{currentTopics} / %{requiredTopics} argomenti e %{currentPosts} / %{requiredPosts} messaggi. I nuovi visitatori vogliono qualche discussione da leggere e a cui rispondere." learn_more: "per saperne di più..." year: 'all''anno' year_desc: 'argomenti creati negli ultimi 365 giorni' @@ -648,10 +701,17 @@ it: replies_lowercase: one: risposta other: risposte + signup_cta: + sign_up: "Iscriviti" + hide_session: "Ricordamelo domani" + hide_forever: "no grazie" + hidden_for_session: "Ok, te lo chiederò domani. Puoi sempre usare \"Accedi\" per creare un account." + intro: "Ciao! :heart_eyes: A quanto pare ti sta piacendo la discussione, ma non sei ancora iscritto." + value_prop: "Quando hai un account ci ricordiamo esattamente cosa stavi leggendo, così potrai riprendere da dove ti eri fermato. Inoltre ricevi le notifiche, sia qui sia via email, ogni volta che ci saranno nuovi messaggi. Inoltre potrai metterei i \"Mi piace\" ai messaggi e condividerne l'apprezzamento. :heartbeat:" summary: enabled_description: "Stai visualizzando un riepilogo dell'argomento: è la comunità a determinare quali sono i messaggi più interessanti." - description: "Ci sono {{count}} risposte." - description_time: "Ci sono {{count}} risposte con un tempo stimato di lettura di {{readingTime}} minuti." + description: "Ci sono {{replyCount}} risposte." + description_time: "Ci sono {{replyCount}} risposte con un tempo stimato di lettura di {{readingTime}} minuti." enable: 'Riassumi Questo Argomento' disable: 'Mostra Tutti i Messaggi' deleted_filter: @@ -705,6 +765,9 @@ it: admin_not_allowed_from_ip_address: "Non puoi collegarti come amministratore dal quell'indirizzo IP." resend_activation_email: "Clicca qui per inviare nuovamente l'email di attivazione." sent_activation_email_again: "Ti abbiamo mandato un'altra email di attivazione su {{currentEmail}}. Potrebbero essere necessari alcuni minuti di attesa; assicurati di controllare anche la cartella dello spam." + to_continue: "Per favore accedi" + preferences: "Devi effettuare l'accesso per cambiare le impostazioni." + forgot: "Non ricordo i dettagli del mio account" google: title: "con Google" message: "Autenticazione tramite Google (assicurati che il blocco pop up non sia attivo)" @@ -727,15 +790,24 @@ it: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Maiusc' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + emoji: "Emoji :)" + more_emoji: "altro..." + options: "Opzioni" + whisper: "sussurra" add_warning: "Questo è un avvertimento ufficiale." + toggle_whisper: "Attiva/Disattiva Sussurri" posting_not_on_topic: "A quale argomento vuoi rispondere?" saving_draft_tip: "salvataggio..." saved_draft_tip: "salvato" saved_local_draft_tip: "salvato in locale" similar_topics: "Il tuo argomento è simile a..." drafts_offline: "bozze offline" + group_mentioned: "Usando {{group}}, stai per mandare una notifica a {{count}} persone." error: title_missing: "Il titolo è richiesto" title_too_short: "Il titolo deve essere lungo almeno {{min}} caratteri" @@ -758,7 +830,7 @@ it: show_edit_reason: "(aggiungi motivo della modifica)" reply_placeholder: "Scrivi qui. Per formattare il testo usa Markdown, BBCode o HTML. Trascina o incolla le immagini." view_new_post: "Visualizza il tuo nuovo messaggio." - saving: "Salvataggio..." + saving: "Salvataggio" saved: "Salvato!" saved_draft: "Hai un messaggio in bozza in sospeso. Seleziona per riprendere la modifica." uploading: "In caricamento..." @@ -773,6 +845,7 @@ it: link_description: "inserisci qui la descrizione del collegamento" link_dialog_title: "Inserisci il collegamento" link_optional_text: "titolo opzionale" + link_placeholder: "http://example.com \"testo opzionale\"" quote_title: "Citazione" quote_text: "Citazione" code_title: "Testo preformattato" @@ -785,10 +858,11 @@ it: heading_title: "Intestazione" heading_text: "Intestazione" hr_title: "Linea Orizzontale" - undo_title: "Annulla" - redo_title: "Ripeti" help: "Aiuto Inserimento Markdown" toggler: "nascondi o mostra il pannello di editing" + modal_ok: "OK" + modal_cancel: "Annulla" + cant_send_pm: "Spiacenti, non puoi inviare un messaggio a %{username}." admin_options_title: "Impostazioni dello staff opzionali per l'argomento" auto_close: label: "Tempo per auto-chiusura argomento:" @@ -805,9 +879,9 @@ it: more: "visualizza le notifiche precedenti" total_flagged: "totale argomenti segnalati" mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -825,14 +899,15 @@ it: edited: "Modifica il tuo messaggio da" liked: "Ha assegnato un \"Mi piace\" al tuo messaggio" private_message: "Messaggio privato da" - invited_to_private_message: "Invitato ad una conversazione privata da" - invited_to_topic: "Invitato ad un argomento da" + invited_to_private_message: "Invitato a un messaggio privato da" + invited_to_topic: "Invitato a un argomento da" invitee_accepted: "Invito accettato da" moved_post: "Il tuo messaggio è stato spostato da" linked: "Collegamento al tuo messaggio" granted_badge: "Targhetta assegnata" popup: mentioned: '{{username}} ti ha menzionato in "{{topic}}" - {{site_title}}' + group_mentioned: '{{username}} ti ha menzionato in "{{topic}}" - {{site_title}}' quoted: '{{username}} ti ha citato in "{{topic}}" - {{site_title}}' replied: '{{username}} ti ha risposto in "{{topic}}" - {{site_title}}' posted: '{{username}} ha pubblicato in "{{topic}}" - {{site_title}}' @@ -844,16 +919,25 @@ it: from_my_computer: "Dal mio dispositivo" from_the_web: "Dal web" remote_tip: "collegamento all'immagine" - remote_tip_with_attachments: "collegamento ad un'immagine o a un file ({{authorized_extensions}})" + remote_tip_with_attachments: "collegamento all'immagine o al file {{authorized_extensions}}" local_tip: "seleziona immagini dal tuo dispositivo" - local_tip_with_attachments: "seleziona immagini o file dal tuo dispositivo ({{authorized_extensions}})" + local_tip_with_attachments: "seleziona immagini o file dal tuo dispositivo {{authorized_extensions}}" hint: "(puoi anche trascinarle nell'editor per caricarle)" + hint_for_supported_browsers: "puoi fare il \"trascina e rilascia\" o incollare immagini nell'editor" uploading: "In caricamento" select_file: "Seleziona File" image_link: "collegamento a cui la tua immagine punterà" search: + sort_by: "Ordina per" + relevance: "Rilevanza" + latest_post: "Ultimo Messaggio" + most_viewed: "Più Visti" + most_liked: "Con più \"Mi Piace\"" select_all: "Seleziona Tutto" clear_all: "Cancella Tutto" + result_count: + one: "1 risultato per \"{{term}}\"" + other: "{{count}} risultati per \"{{term}}\"" title: "cerca argomenti, messaggi, utenti o categorie" no_results: "Nessun risultato trovato." no_more_results: "Nessun altro risultato trovato." @@ -872,12 +956,14 @@ it: current_user: 'vai alla pagina utente' topics: bulk: + unlist_topics: "Deselezione Topics" reset_read: "Reimposta Lettura" delete: "Elimina Argomenti" - dismiss_posts: "Chiudi Messaggi" - dismiss_posts_tooltip: "Azzera il contatore dei messaggi non-letti di questi argomenti, ma quando vengono creati nuovi messaggi continua a mostrarli nella mia lista dei non-letti " - dismiss_topics: "Chiudi Argomenti" - dismiss_topics_tooltip: "Quando viene creato un nuovo messaggio, non mostrare più questi argomenti nella mia lista dei non-letti " + dismiss: "Chiudi" + dismiss_read: "Chiudi tutti i non letti" + dismiss_button: "Chiudi..." + dismiss_tooltip: "Chiudi solo gli ultimi messaggi o smetti di seguire gli argomenti" + also_dismiss_topics: "Smetti di seguire questi argomenti così che non compariranno più come non letti per me" dismiss_new: "Chiudi Nuovo" toggle: "commuta la selezione multipla degli argomenti" actions: "Azioni Multiple" @@ -900,9 +986,6 @@ it: category: "Non ci sono argomenti in {{category}}." top: "Non ci sono argomenti di punta." search: "Non ci sono risultati della ricerca." - educate: - new: '
Qui compaiono i tuoi nuovi argomenti.
Per difetto, gli argomenti creati negli ultimi 2 giorni saranno considerati nuovi e mostreranno l''indicatore nuovo.
Puoi cambiare questa configurazione nelle tue preferenze.
' - unread: '
Qui compaiono i tuoi argomenti non letti.
Per difetto, gli argomenti sono considerati non letti e mostrano un conteggio di non lettura 1 se hai:
Oppure se hai esplicitamente impostato l''argomento come Seguito o Osservato usando il pannello di controllo delle notifiche in fondo ad ogni argomento.
Puoi cambiare questa configurazione nelle tue preferenze.
' bottom: latest: "Non ci sono altri argomenti più recenti." hot: "Non ci sono altri argomenti caldi." @@ -916,12 +999,18 @@ it: search: "Non ci sono altri risultati di ricerca." topic: unsubscribe: - stop_notifications: "Da ora riceverai meno notifiche su {{title}}" + stop_notifications: "Da ora riceverai meno notifiche per {{title}}" change_notification_state: "Lo stato delle tue notifiche è" filter_to: "{{post_count}} suoi messaggi" create: 'Nuovo Argomento' create_long: 'Crea un nuovo Argomento' private_message: 'Inizia a scrivere un messaggio' + archive_message: + help: 'Sposta il messaggio nel tuo archivio' + title: 'Archivio' + move_to_inbox: + title: 'Sposta in arrivo' + help: 'Sposta in arrivo' list: 'Argomenti' new: 'nuovo argomento' unread: 'non letto' @@ -960,7 +1049,7 @@ it: toggle_information: "commuta i dettagli dell'argomento" read_more_in_category: "Vuoi saperne di più? Leggi altri argomenti in {{catLink}} o {{latestLink}}." read_more: "Vuoi saperne di più? {{catLink}} o {{latestLink}}." - read_more_MF: "{ UNREAD, plural, =0 {} one { un argomento non letto } other { # argomenti non letti } } { NEW, plural, =0 {} one { {BOTH, select, true{e } false {} other{}} uno nuovo } other { {BOTH, select, true{e } false {} other{}} # nuovi } } oppure {CATEGORY, select, true {visualizza altri argomenti nella categoria \"{catLink}\"} false {{latestLink}} other {}}" + read_more_MF: "{ UNREAD, plural, =0 {} one { C'è 1 argomento non letto } other { Ci sono # argomenti non letti } } { NEW, plural, =0 {} one { {BOTH, select, true{e } false {è } other{}} 1 nuovo argomento} other { {BOTH, select, true{e } false {sono } other{}} # nuovi; argomenti} } restanti, o {CATEGORY, select, true {visualizza altri argomenti in {catLink}} false {{latestLink}} other {}}" browse_all_categories: Scorri tutte le categorie view_latest_topics: visualizza gli argomenti più recenti suggest_create_topic: Perché non crei un argomento? @@ -972,6 +1061,7 @@ it: auto_close_title: 'Impostazioni di auto-chiusura' auto_close_save: "Salva" auto_close_remove: "Non chiudere automaticamente questo argomento" + auto_close_immediate: "L'ultimo messaggio in questo argomento ha già %{hours}, pertanto l'argomento verrà chiuso immediatamente." progress: title: Avanzamento dell'argomento go_top: "alto" @@ -1021,7 +1111,7 @@ it: description: "Non ti verrà notificato nulla per questo messaggio." muted: title: "Silenziato" - description: "Non ti verrà notificato nulla di questo argomento e non comparirà nella tab dei non letti." + description: "Non riceverai mai notifiche o altro circa questo argomento e non apparirà nella sezione Ultimi." actions: recover: "Ripristina Argomento" delete: "Cancella Argomento" @@ -1057,31 +1147,30 @@ it: success_message: 'Hai segnalato questo argomento con successo.' feature_topic: title: "Poni argomento in primo piano" - pin: "Metti questo argomento in cima alla categoria \"{{categoryLink}}\" fino al" + pin: "Poni questo argomento in cima alla categoria {{categoryLink}} fino a" confirm_pin: "Hai già {{count}} argomenti puntati. Troppi argomenti puntati potrebbero essere un peso per gli utenti nuovi o anonimi. Sicuro di voler puntare un altro argomento in questa categoria?" unpin: "Rimuovi questo argomento dalla cima della categoria {{categoryLink}}." - unpin_until: "Rimuovi questo argomento dalla cima della categoria {{categoryLink}} o attendi fino al %{until}." + unpin_until: "Rimuovi questo argomento dalla cima della categoria {{categoryLink}} o attendi fino a %{until}." pin_note: "Gli utenti possono spuntare gli argomenti individualmente per loro stessi." - pin_validation: "È richiesta una data per appuntare questo argomento" + pin_validation: "È richiesta una data per appuntare questo argomento." + not_pinned: "Non ci sono argomenti appuntati in {{categoryLink}}." already_pinned: - zero: "Non ci sono argomenti puntati in {{categoryLink}}." - one: "Argomenti attualmente puntati in {{categoryLink}}: 1." - other: "Argomenti attualmente puntati in {{categoryLink}}: {{count}}." - pin_globally: "Metti questo argomento in cima a tutte le liste di messaggi fino al" + one: "Argomenti attualmente appuntati in {{categoryLink}}: 1" + other: "Argomenti attualmente appuntati in {{categoryLink}}: {{count}}" + pin_globally: "Poni questo argomento in cima a tutte le liste di argomenti fino a" confirm_pin_globally: "Hai già {{count}} argomenti puntati globalmente. Troppi argomenti puntati potrebbero essere un peso per gli utenti nuovi o anonimi. Sicuro di voler puntare un altro argomento globalmente?" unpin_globally: "Togli questo argomento dalla cima degli altri argomenti." - unpin_globally_until: "Rimuovi questo argomento dalla cima di tutte le liste di argomenti o attenti fino al %{until}." + unpin_globally_until: "Rimuovi questo argomento dalla cima di tutte le liste di argomenti o attendi fino a %{until}." global_pin_note: "Gli utenti possono spuntare gli argomenti autonomamente per loro stessi." + not_pinned_globally: "Non ci sono argomenti appuntati globalmente." already_pinned_globally: - zero: "Non ci sono argomenti puntati globalmente." - one: "Argomenti attualmente puntati globalmente: 1." - other: "Argomenti attualmente puntati globalmente: {{count}}." + one: "Argomenti attualmente appuntati globalmente in {{categoryLink}}: 1" + other: "Argomenti attualmente appuntati globalmente {{categoryLink}}: {{count}}" make_banner: "Rendi questo argomento uno striscione che apparirà in cima a tutte le pagine." remove_banner: "Rimuovi lo striscione che appare in cima a tutte le pagine." banner_note: "Gli utenti possono rimuovere lo striscione chiudendolo. Solo un argomento alla volta può diventare uno striscione." - already_banner: - zero: "Non c'è alcun argomento striscione." - one: "Al momento c'è un argomento striscione." + no_banner_exists: "Non c'è alcun argomento annuncio." + banner_exists: "C'è attualmente un argomento annuncio." inviting: "Sto invitando..." automatically_add_to_groups_optional: "Questo invito include anche l'accesso ai seguenti gruppi: (opzionale, solo amministratori)" automatically_add_to_groups_required: "Questo invito include anche l'accesso ai seguenti gruppi: (Richiesto, solo amministratori)" @@ -1093,21 +1182,22 @@ it: success: "Abbiamo invitato l'utente a partecipare a questo messaggio." error: "Spiacenti, si è verificato un errore durante l'invito dell'utente." group_name: "nome gruppo" + controls: "Impostazioni Argomento" invite_reply: title: 'Invita' username_placeholder: "nome utente" action: 'Invia Invito' - help: 'invita altri su questo argomento via email o notifiche' + help: 'invita altri su questo argomento via email o tramite notifiche' to_forum: "Invieremo una breve email che permetterà al tuo amico di entrare subito cliccando un collegamento, senza bisogno di effettuare il collegamento." sso_enabled: "Inserisci il nome utente della persona che vorresti invitare su questo argomento." to_topic_blank: "Inserisci il nome utente o l'indirizzo email della persona che vorresti invitare su questo argomento." - to_topic_email: "Hai inserito un indirizzo email. Manderemo una email di invito che permettterà al tuo amico di rispondere subito a questo argomento." - to_topic_username: "Hai inserito un nome utente. Gli mandermo una notifica con un link per invitarlo su questo argomento." - to_username: "Inserisci il nome utente della persona che vorresti invitare. Gli manderemo una notifica con un link di invito a questo argomento." + to_topic_email: "Hai inserito un indirizzo email. Invieremo una email di invito che permetterà al tuo amico di rispondere subito a questo argomento." + to_topic_username: "Hai inserito un nome utente. Gli invieremo una notifica con un collegamento per invitarlo su questo argomento." + to_username: "Inserisci il nome utente della persona che vorresti invitare. Gli invieremo una notifica con un collegamento di invito a questo argomento." email_placeholder: 'nome@esempio.com' - success_email: "Abbiamo mandato un invito via email a {{emailOrUsername}}. Ti avvertiremo quando l'invito verrà riscattato. Controlla la sezione \"inviti\" sulla tua pagina utente per tracciare lo stato degli inviti." + success_email: "Abbiamo inviato un invito via email a {{emailOrUsername}}. Ti avvertiremo quando l'invito verrà riscattato. Controlla la sezione \"inviti\" sulla tua pagina utente per tracciarne lo stato." success_username: "Abbiamo invitato l'utente a partecipare all'argomento." - error: "Spiacente, non siamo riusciti ad invitare questa persona. Forse è stata già invitata? (Gli inviti sono limitati)" + error: "Spiacenti, non siamo riusciti ad invitare questa persona. E' stata per caso già invitata (gli inviti sono limitati)? " login_reply: 'Collegati per Rispondere' filters: n_posts: @@ -1115,7 +1205,7 @@ it: other: "{{count}} messaggi" cancel: "Rimuovi filtro" split_topic: - title: "Sposta in un Nuovo Argomento" + title: "Sposta in un nuovo argomento" action: "sposta in un nuovo argomento" topic_name: "Nome Nuovo Argomento" error: "Si è verificato un errore spostando il messaggio nel nuovo argomento." @@ -1144,7 +1234,7 @@ it: action: "cambia timestamp" invalid_timestamp: "Il timestamp non può essere nel futuro." error: "Errore durante la modifica del timestamp dell'argomento." - instructions: "Seleziona un nuovo timestamp per l'argomento. I messaggi nell'argomento saranno aggiornati senza modificare l'intervallo di tempo" + instructions: "Seleziona il nuovo timestamp per l'argomento. I messaggi nell'argomento saranno aggiornati in modo che abbiano lo stesso intervallo temporale." multi_select: select: 'scegli' selected: 'selezionati ({{count}})' @@ -1174,23 +1264,23 @@ it: other: "(messaggio eliminato dall'autore, verrà automaticamente cancellato in %{count} ore se non segnalato)" expand_collapse: "espandi/raggruppa" gap: - one: "visualizza 1 riposta nascosta" + one: "visualizza 1 risposta nascosta" other: "visualizza {{count}} riposte nascoste" more_links: "{{count}} altri..." unread: "Messaggio non letto" has_replies: - one: "Una risposta" - other: "{{count}} risposte" + one: "{{count}} Risposta" + other: "{{count}} Risposte" has_likes: - one: "Un \"Mi piace\"" + one: "{{count}} \"Mi piace\"" other: "{{count}} \"Mi piace\"" has_likes_title: - one: "A una persona piace questo messaggio" - other: "A {{count}} persone piace questo messaggio" + one: "Una persona ha messo \"Mi piace\" a questo messaggio" + other: "{{count}} persone hanno messo \"Mi piace\" a questo messaggio" + has_likes_title_only_you: "hai messo \"Mi piace\" a questo messaggio" has_likes_title_you: - zero: "Ti è piaciuto questo messaggio" - one: "A te e ad un'altra persona è piaciuto questo messaggio" - other: "A te e ad altre {{count}} persone è piaciuto questo messaggio" + one: "tu e un'altra persona avete messo \"Mi piace\" a questo messaggio" + other: "tu e altre {{count}} persone avete messo \"Mi piace\" a questo messaggio" errors: create: "Spiacenti, si è verificato un errore nel creare il tuo messaggio. Prova di nuovo." edit: "Spiacenti, si è verificato un errore nel modificare il tuo messaggio. Prova di nuovo." @@ -1210,7 +1300,7 @@ it: via_email: "questo messaggio è arrivato via email" whisper: "questo messaggio è un sussurro privato per i moderatori" wiki: - about: "questo messaggio è una guida; gli utenti base possono modificarla" + about: "questo messaggio è una guida" archetypes: save: 'Opzioni di salvataggio' controls: @@ -1220,7 +1310,7 @@ it: undo_like: "rimuovi il \"Mi piace\"" edit: "modifica questo messaggio" edit_anonymous: "Spiacente, effettua l'accesso per poter modificare questo messaggio." - flag: "segnala privatamente questo post o invia una notifica privata" + flag: "segnala privatamente questo messaggio o invia una notifica privata" delete: "cancella questo messaggio" undelete: "recupera questo messaggio" share: "condividi un collegamento a questo messaggio" @@ -1238,6 +1328,7 @@ it: revert_to_regular: "Rimuovi Colore Staff" rebake: "Ricrea HTML" unhide: "Mostra nuovamente" + change_owner: "Cambia Proprietà" actions: flag: 'Segnala' defer_flags: @@ -1259,17 +1350,10 @@ it: like: "Annulla il \"Mi piace\"" vote: "Rimuovi voto" people: - off_topic: "{{icons}} l'hanno segnalato come fuori tema" - spam: "{{icons}} l'hanno segnalato come spam" - spam_with_url: "{{icons}} ha segnalato questo come spam" - inappropriate: "{{icons}} l'hanno segnalato come inappropriato" - notify_moderators: "{{icons}} hanno informato i moderatori" - notify_moderators_with_url: "{{icons}} hanno informato i moderatori" - notify_user: "{{icons}} ha inviato un messaggio" - notify_user_with_url: "{{icons}} ha inviato un messaggio" - bookmark: "{{icons}} l'hanno inserito nei segnalibri" - like: "A {{icons}} è piaciuto" - vote: "{{icons}} l'hanno votato" + off_topic: "l'hanno segnalato come fuori tema" + spam: "l'hanno segnalato come spam" + inappropriate: "l'hanno segnalato come inappropriato" + notify_moderators: "hanno informato i moderatori" by_you: off_topic: "L'hai segnalato come fuori tema" spam: "L'hai segnalato come spam" @@ -1329,10 +1413,6 @@ it: vote: one: "Una persona ha votato per questo post" other: "{{count}} persone hanno votato per questo post" - edits: - one: 1 modifica - other: "{{count}} modifiche" - zero: nessuna modifica delete: confirm: one: "Sei sicuro di voler cancellare questo messaggio?" @@ -1366,7 +1446,7 @@ it: view: 'Visualizza Argomenti della Categoria' general: 'Generale' settings: 'Impostazioni' - topic_template: "Modello di argomento" + topic_template: "Modello di Argomento" delete: 'Elimina Categoria' create: 'Crea Categoria' create_long: 'Crea una nuova categoria' @@ -1392,6 +1472,7 @@ it: change_in_category_topic: "Modifica Descrizione" already_used: 'Questo colore è già stato usato in un''altra categoria.' security: "Sicurezza" + special_warning: "Attenzione: questa è una categoria predefinita e le impostazioni di sicurezza ne vietano la modifica. Se non vuoi usare questa categoria, cancellala invece di modificarla." images: "Immagini" auto_close_label: "Chiudi automaticamente l'argomento dopo:" auto_close_units: "ore" @@ -1399,7 +1480,7 @@ it: email_in_allow_strangers: "Accetta email da utenti anonimi senza alcun account" email_in_disabled: "Le Impostazioni Sito non permettono di creare nuovi argomenti via email. Per abilitare la creazione di argomenti via email," email_in_disabled_click: 'abilita l''impostazione "email entrante".' - suppress_from_homepage: "Elimina questa categoria dalla homepage" + suppress_from_homepage: "Elimina questa categoria dalla homepage." allow_badges_label: "Permetti che le targhette vengano assegnate in questa categoria" edit_permissions: "Modifica Permessi" add_permission: "Aggiungi Permesso" @@ -1412,19 +1493,18 @@ it: notifications: watching: title: "In osservazione" - description: "Osserverai automaticamente tutti i nuovi argomenti in queste categorie. Riceverai notifiche su tutti i nuovi messaggi e argomenti e per tali argomenti apparirà il conteggio delle nuove risposte." + description: "Osserverai automaticamente tutti i nuovi argomenti presenti in queste categorie. Riceverai notifiche per ogni nuovo messaggio inserito in ogni argomento e apparirà il conteggio delle nuove risposte." tracking: title: "Seguendo" - description: "Seguirai automaticamente tutti i nuovi argomenti in queste categorie. Per tali argomenti apparirà un conteggio delle nuove risposte." + description: "Seguirai automaticamente tutti i nuovi argomenti in tali categorie. Ti verrà inviata una notifica se qualcuno menziona il tuo @nome o ti risponde, e apparirà un conteggio delle nuove risposte." regular: title: "Normale" description: "Riceverai una notifica se qualcuno menziona il tuo @nome o ti risponde." muted: title: "Silenziato" - description: "Non ti verrà notificato nulla sui nuovi argomenti di queste categorie, e non compariranno nella tua tab dei non letti." + description: "Non ti verrà mai notificato nulla sui nuovi argomenti di queste categorie, e non compariranno nell'elenco dei Non letti." flagging: title: 'Grazie per aiutarci a mantenere la nostra comunità civile!' - private_reminder: 'le segnalazioni sono private, visibili soltanto allo staff ' action: 'Segnala Messaggio' take_action: "Procedi" notify_action: 'Messaggio' @@ -1474,7 +1554,7 @@ it: help: "Questo argomento è per te spuntato; verrà mostrato con l'ordinamento di default" pinned_globally: title: "Appuntato Globalmente" - help: "Questo argomento è appuntato globalmente; verrà mostrato in cima ad ogni lista" + help: "Questo argomento è appuntato globalmente; verrà mostrato in cima all'elenco Ultimi e nella sua categoria." pinned: title: "Appuntato" help: "Questo argomento è per te appuntato; verrà mostrato con l'ordinamento di default" @@ -1486,10 +1566,10 @@ it: posts_likes_MF: | Questo argomento ha {count, plural, one {1 risposta} other {# risposte}} {ratio, select, low {con un alto rapporto "mi piace" / messaggi} med {con un altissimo rapporto "mi piace" / messaggi} high {con un estremamente alto rapporto "mi piace" / messaggi} other {}} original_post: "Messaggio Originale" - views: "Visualizzazioni" + views: "Visite" views_lowercase: - one: "vista" - other: "viste" + one: "visita" + other: "visite" replies: "Risposte" views_long: "questo argomento è stato visualizzato {{number}} volte" activity: "Attività" @@ -1513,8 +1593,8 @@ it: with_topics: "%{filter} argomenti" with_category: "%{filter} %{category} argomenti" latest: - title: - zero: "Ultimi" + title: "Ultimi" + title_with_count: one: "Ultimo (1)" other: "Ultimi ({{count}})" help: "argomenti con messaggi recenti" @@ -1532,8 +1612,8 @@ it: title_in: "Categoria - {{categoryName}}" help: "tutti gli argomenti raggruppati per categoria" unread: - title: - zero: "Non letti" + title: "Non letti" + title_with_count: one: "Non letto (1)" other: "Non letti ({{count}})" help: "argomenti che stai osservando o seguendo contenenti messaggi non letti" @@ -1545,8 +1625,8 @@ it: one: "1 nuovo" other: "{{count}} nuovi" lower_title: "nuovo" - title: - zero: "Nuovi" + title: "Nuovi" + title_with_count: one: "Nuovo (1)" other: "Nuovi ({{count}})" help: "argomenti creati negli ultimi giorni" @@ -1557,8 +1637,8 @@ it: title: "Segnalibri" help: "argomenti che hai aggiunto ai segnalibri" category: - title: - zero: "{{categoryName}}" + title: "{{categoryName}}" + title_with_count: one: "{{categoryName}} (1)" other: "{{categoryName}} ({{count}})" help: "ultimi argomenti nella categoria {{categoryName}}" @@ -1720,15 +1800,24 @@ it: delete_confirm: "Cancellare questo gruppo?" delete_failed: "Impossibile cancellare il gruppo. Se questo è un gruppo automatico, non può essere eliminato." delete_member_confirm: "Rimuovere '%{username}' dal gruppo '%{group}'?" + delete_owner_confirm: "Rimuovere i privilegi per '%{username}'?" name: "Nome" add: "Aggiungi" add_members: "Aggiungi membri" custom: "Personalizzato" + bulk_complete: "Gli utenti sono stati aggiunti al gruppo." + bulk: "Aggiunta Massiva al Gruppo" + bulk_paste: "Incolla una lista di nomi utente o di email, uno per riga:" + bulk_select: "(seleziona un gruppo)" automatic: "Automatico" automatic_membership_email_domains: "Gli utenti che si registrano con un dominio email che corrisponde esattamente a uno presente in questa lista, saranno aggiunti automaticamente a questo gruppo:" automatic_membership_retroactive: "Applica la stessa regola sul dominio email per aggiungere utenti registrati esistenti" default_title: "Titolo predefinito per tutti gli utenti di questo gruppo" - primary_group: "Imposta automaticamente un gruppo principale" + primary_group: "Imposta automaticamente come gruppo principale" + group_owners: Proprietari + add_owners: Aggiungi proprietari + incoming_email: "Indirizzo email personalizzato" + incoming_email_placeholder: "inserisci l'indirizzo e-mail" api: generate_master: "Genera una Master API Key" none: "Non ci sono chiavi API attive al momento." @@ -1802,11 +1891,9 @@ it: is_disabled: "Il ripristino è disabilitato nelle opzioni del sito." label: "Ripristina" title: "Ripristina il backup" - confirm: "Sicuro di voler ripristinare questo backup?" rollback: label: "Rollback" title: "Ripristina il database a una versione funzionante precedente" - confirm: "Sicuro di voler ripristinare una precedente versione funzionante del database?" export_csv: user_archive_confirm: "Sei sicuro di voler scaricare i tuoi messaggi?" success: "Esportazione iniziata, verrai avvertito con un messaggio al termine del processo." @@ -1831,7 +1918,7 @@ it: header: "Intestazione" top: "Alto" footer: "Fondo pagina" - embedded_css: "CSS inclusi" + embedded_css: "CSS incorporato" head_tag: text: "" title: "HTML da inserire prima del tag " @@ -1857,6 +1944,14 @@ it: color: "Colore" opacity: "Opacità" copy: "Copia" + email_templates: + title: "Modelli e-mail" + subject: "Oggetto" + multiple_subjects: "Questo modello email ha più di un campo oggetto." + body: "Corpo" + none_selected: "Scegli un modello di e-mail per iniziare la modifica." + revert: "Annulla Cambiamenti" + revert_confirm: "Sei sicuro di voler annullare i cambiamenti?" css_html: title: "CSS/HTML" long_title: "Personalizzazioni CSS e HTML" @@ -1901,13 +1996,10 @@ it: love: name: 'amo' description: "Il colore del bottone \"Mi piace\"." - wiki: - name: 'wiki' - description: "Colore base usato per lo sfondo dei messaggi wiki." email: - title: "Email" settings: "Impostazioni" - all: "Tutto" + templates: "Template" + preview_digest: "Anteprima Riassunto" sending_test: "Invio email di prova in corso..." error: "ERRORE - %{server_error}" test_error: "C'è stato un problema nell'invio dell'email di test. Controlla nuovamente le impostazioni email, verifica che il tuo host non blocchi le connessioni email e riprova." @@ -1922,7 +2014,7 @@ it: send_test: "Invia una email di prova" sent_test: "inviata!" delivery_method: "Metodo di consegna" - preview_digest: "Anteprima Riassunto" + preview_digest_desc: "Vedi in anteprima il contenuto delle email di riassunto inviate agli utenti inattivi." refresh: "Aggiorna" format: "Formato" html: "html" @@ -1948,6 +2040,7 @@ it: ip_address: "IP" topic_id: "ID argomento" post_id: "ID messaggio" + category_id: "ID categoria" delete: 'Cancella' edit: 'Modifica' save: 'Salva' @@ -1978,6 +2071,7 @@ it: change_site_setting: "modifica le impostazioni del sito" change_site_customization: "modifica la personalizzazione del sito" delete_site_customization: "cancella la personalizzazione del sito" + change_site_text: "cambia il testo del sito" suspend_user: "utente sospeso" unsuspend_user: "utente riattivato" grant_badge: "assegna targhetta" @@ -1988,6 +2082,9 @@ it: impersonate: "impersona" anonymize_user: "rendi anonimo l'utente " roll_up: "inibisci blocchi di indirizzi IP" + change_category_settings: "cambia le impostazioni della categoria" + delete_category: "cancella categoria" + create_category: "crea categoria" screened_emails: title: "Email Scansionate" description: "Quando qualcuno cerca di creare un nuovo account, verrando controllati i seguenti indirizzi email e la registrazione viene bloccata, o eseguita qualche altra azione." @@ -2054,9 +2151,9 @@ it: pending: 'Revisione degli utenti in sospeso' newuser: 'Utenti con Livello Esperienza 0 (Nuovo)' basic: 'Utenti con Livello Esperienza 1 (Base)' - regular: 'Utenti al Livello Esperienza 2 (Assiduo)' - leader: 'Utenti al Livello Esperienza 3 (Esperto)' - elder: 'Utenti al Livello Esperienza 4 (Veterano)' + member: 'Utenti al Livello Esperienza 2 (Assiduo)' + regular: 'Utenti al Livello Esperienza 3 (Esperto)' + leader: 'Utenti al Livello Esperienza 4 (Veterano)' staff: "Staff" admins: 'Utenti Amministratori' moderators: 'Moderatori' @@ -2166,7 +2263,7 @@ it: unlock_trust_level: "Sblocca Livello Esperienza" tl3_requirements: title: "Requisiti per Livello Esperienza 3" - table_title: "Negli ultimi 100 giorni:" + table_title: "Negli ultimi %{time_period} giorni:" value_heading: "Valore" requirement_heading: "Requisito" visits: "Visite" @@ -2211,11 +2308,11 @@ it: delete_confirm: "Sicuro di voler cancellare il campo utente?" options: "Opzioni" required: - title: "Richiesto durante la registrazione?" + title: "Richiesto durante l'iscrizione?" enabled: "richiesto" disabled: "non richiesto" editable: - title: "Modificabile dopo la registrazione?" + title: "Modificabile dopo l'iscrizione?" enabled: "modificabile" disabled: "non modificabile" show_on_profile: @@ -2227,8 +2324,15 @@ it: confirm: 'Conferma' dropdown: "A tendina" site_text: - none: "Scegli un tipo di contenuto per iniziare la modifica." + description: "Puoi personalizzare qualsiasi testo del tuo forum. Comincia effettuando una ricerca qui sotto:" + search: "Trova il testo che vorresti modificare" title: 'Contenuto Testuale' + edit: 'modifica' + revert: "Annulla Modifiche" + revert_confirm: "Sei sicuro di voler annullare le modifiche?" + go_back: "Torna alla Ricerca" + recommended: "Consigliamo di personalizzare il seguente testo per tue adattarlo alle necessità:" + show_overriden: 'Mostra solo le opzioni sovrascritte' site_settings: show_overriden: 'Mostra solo le opzioni sovrascritte' title: 'Impostazioni' @@ -2259,7 +2363,7 @@ it: backups: "Backup" login: "Accesso" plugins: "Plugin" - user_preferences: "Preferenze utente" + user_preferences: "Preferenze Utente" badges: title: Targhette new_badge: Nuova Targhetta @@ -2316,8 +2420,8 @@ it: bad_count_warning: header: "ATTENZIONE!" text: "Ci sono esempi di grant mancanti. Ciò accade quando la query delle targhette ritorna ID utenti o ID messaggi inesistenti. Successivamente ciò può causare risultati inattesi - controlla bene la tua query." + no_grant_count: "Nessuna targhetta da assegnare." grant_count: - zero: "Nessuna targhetta da assegnare." one: "1 targhetta da assegnare." other: "%{count} targhette da assegnare." sample: "Esempio:" @@ -2334,24 +2438,26 @@ it: image: "Immagine" delete_confirm: "Sicuro di voler cancellare l'emoji :%{name}:?" embedding: - get_started: "Se lo desideri, puoi incorporare Discourse in un altro sito web. Comincia aggiungo il suo nome host" - confirm_delete: "Sei sicuro di volere cancellare questo host?" + get_started: "Se lo desideri, puoi incorporare Discourse in un altro sito web. Comincia aggiungendo il nome dell'host" + confirm_delete: "Sicuro di voler cancellare questo host?" sample: "Utilizza il seguente codice HTML nel tuo sito per creare e incorporare gli argomenti di Discourse. Sostituisci REPLACE_ME con l'URL canonical della pagina in cui lo stai incorporando." - title: "Incorporamento" - host: "Host abilitati" + title: "Incorporo" + host: "Host Abilitati" edit: "modifica" - add_host: "Aggiungi host" - settings: "Impostazioni di incorporamento" - feed_settings: "Impostazioni dei feed" - feed_description: "Aggiungendo un feed RSS/AROM al tuo sito, migliori l'importazione dei tuoi contenuti da parte di Discourse" + category: "Pubblica nella Categoria" + add_host: "Aggiungi Host" + settings: "Impostazioni di incorporo" + feed_settings: "Impostazioni Feed" + feed_description: "Aggiungendo un feed RSS/ATOM al tuo sito, migliora la capacità di Discourse di importare i tuoi contenuti." crawling_settings: "Impostazioni del crawler" - crawling_description: "Quando Discourse crea gli argomenti per i messaggi, se non è presente nessun feed RSS/ATOM, cercherà di estrarre il contenuto dal codice HTML. Il contenuto può risultate a volte ostico da estrarre e, per semplificare il processo, forniamo la possibilità di specificare le regole CSS." + crawling_description: "Quando Discourse crea gli argomenti per i tuoi messaggi, se non è presente nessun feed RSS/ATOM, cercherà di estrarre il contenuto dal codice HTML. Il contenuto può risultate a volte ostico da estrarre e, per semplificare il processo, forniamo la possibilità di specificare le regole CSS." embed_by_username: "Nome utente per la creazione dell'argomento" embed_post_limit: "Numero massimo di messaggi da includere" - embed_truncate: "Abbrevia i messaggi incorporati" - embed_whitelist_selector: "Selettore CSS per gli elementi da includere negli embed" + embed_username_key_from_feed: "Chiave per ottenere il nome utente discourse dal feed" + embed_truncate: "Tronca i messaggi incorporati" + embed_whitelist_selector: "Selettore CSS per gli elementi da permettere negli embed" embed_blacklist_selector: "Selettore CSS per gli elementi da rimuovere dagli embed" - feed_polling_enabled: "Importa gli articoli via RSS/ATOM" + feed_polling_enabled: "Importa i messaggi via RSS/ATOM" feed_polling_url: "URL del feed RSS/ATOM da recuperare" save: "Salva Impostazioni Inclusione" permalink: @@ -2368,7 +2474,7 @@ it: form: label: "Nuovo:" add: "Aggiungi" - filter: "Cerca (URL o URL esterna)" + filter: "Cerca (URL o URL Esterna)" lightbox: download: "scaricamento" search_help: @@ -2404,7 +2510,7 @@ it: help: '? Apri l''aiuto per le scorciatoie da tastiera' dismiss_new_posts: 'x, r Chiudi Nuovo/Messaggi' dismiss_topics: 'x, t Chiudi Argomenti' - log_out: 'shift+z shift+z Esci' + log_out: 'shift+z shift+z Scollegati' actions: title: 'Azioni' bookmark_topic: 'f Aggiungi/togli argomento nei segnalibri' @@ -2426,8 +2532,6 @@ it: mark_watching: 'm, w Osserva argomento' badges: title: Targhette - allow_title: "può essere usata come titolo" - multiple_grant: "può essere assegnata più volte" badge_count: one: "1 Targhetta" other: "%{count} Targhette" @@ -2450,97 +2554,6 @@ it: name: Altro posting: name: Pubblicazione - badge: - editor: - name: Editor - description: Prima modifica ad un messaggio - basic_user: - name: Base - description: Assegnate tutte le funzioni essenziali della comunità - member: - name: Assiduo - description: Assegnata inviti - regular: - name: Esperto - description: 'Concessi i permessi di: ricategorizzare, rinominare, collegamenti seguiti e accesso al Lounge' - leader: - name: Leader - description: 'Concessi i permessi di: modifica globale, evidenziare, chiudere, archiviare, separare e fondere' - welcome: - name: Benvenuto - description: Ricevuto un "Mi piace" - autobiographer: - name: Autobiografo - description: Completato le informazioni del tuo profilo utente - anniversary: - name: Compleanno - description: Membro attivo da un anno, ha scritto almeno una volta - nice_post: - name: Buon Messaggio - description: Ricevuto 10 "Mi piace" per un messaggio. Questa targhetta può essere assegnata più volte - good_post: - name: Ottimo Messaggio - description: Ricevuto 25 "Mi piace" per un messaggio. Questa targhetta può essere assegnata più volte. - great_post: - name: Fantastico Messaggio - description: Ricevuto 50 "Mi piace" per un messaggio. Questa targhetta può essere assegnata più volte. - nice_topic: - name: Argomento Buono - description: Ricevuti 10 "Mi piace" per un argomento. Questa targhetta può essere assegnata più volte - good_topic: - name: Argomento Ottimo - description: Ricevuti 25 "Mi piace" per un argomento. Questa targhetta può essere assegnata più volte - great_topic: - name: Argomento Eccellente - description: Ricevuti 50 "Mi piace" per un argomento. Questa targhetta può essere assegnata più volte - nice_share: - name: Condivisione Buona - description: Condiviso un messaggio con 25 visitatori unici - good_share: - name: Condivisione Ottima - description: Condiviso un messaggio con 300 visitatori unici - great_share: - name: Condivisione Eccellente - description: Condiviso un messaggio con 1000 visitatori unici - first_like: - name: Primo Mi Piace - description: Assegnato un "Mi piace" ad un messaggio - first_flag: - name: Prima Segnalazione - description: Segnalato un messaggio - promoter: - name: Promotore - description: Ha invitato un utente - campaigner: - name: Pubblicitario - description: Ha invitato 3 utenti Base (livello di esperienza 1) - champion: - name: Campione - description: Ha invitato 5 utenti Assiduo (livello di esperienza 2) - first_share: - name: Prima Condivisione - description: Condiviso un messaggio - first_link: - name: Primo Collegamento - description: Aggiunto un collegamento interno ad un altro argomento - first_quote: - name: Prima Citazione - description: Citato un utente - read_guidelines: - name: Linee Guida Lette - description: Letto le linee guida della comunità - reader: - name: Lettore - description: Letto tutti i messaggi in un argomento con più di 100 messaggi - popular_link: - name: Collegamento Popolare - description: Ha pubblicato un collegamento esterno con almeno 50 clic - hot_link: - name: Collegamento Caldo - description: Ha pubblicato un collegamento esterno con almeno 300 clic - famous_link: - name: Collegamento Famoso - description: Ha pubblicato un collegamento esterno con almeno 1000 clic google_search: |
diff --git a/config/locales/client.ja.yml b/config/locales/client.ja.yml index f4ed722ac71..3cf5e2b3a31 100644 --- a/config/locales/client.ja.yml +++ b/config/locales/client.ja.yml @@ -81,6 +81,8 @@ ja: other: "%{count} 月後" x_years: other: "%{count} 年後" + previous_month: '前月' + next_month: '来月' share: topic: 'このトピックのリンクをシェアする' post: 'ポスト #%{postNumber}' @@ -91,6 +93,19 @@ ja: email: 'メールでこのリンクを送る' topic_admin_menu: "トピック管理" emails_are_disabled: "全てのメールアドレスの送信が管理者によって無効化されています。全ての種類のメール通知は行われません" + s3: + regions: + us_east_1: "US East (N. Virginia)" + us_west_1: "US West (N. California)" + us_west_2: "US West (Oregon)" + us_gov_west_1: "AWS GovCloud (US)" + eu_west_1: "EU (Ireland)" + eu_central_1: "EU (Frankfurt)" + ap_southeast_1: "Asia Pacific (Singapore)" + ap_southeast_2: "Asia Pacific (Sydney)" + ap_northeast_1: "Asia Pacific (Tokyo)" + ap_northeast_2: "Asia Pacific (Seoul)" + sa_east_1: "South America (Sao Paulo)" edit: 'このトピックのタイトルとカテゴリを編集' not_implemented: "申し訳ありませんが、この機能はまだ実装されていません" no_value: "いいえ" @@ -104,6 +119,7 @@ ja: admin_title: "管理者" flags_title: "フラグ" show_more: "もっと見る" + show_help: "オプション" links: "リンク" links_lowercase: other: "リンク集" @@ -175,6 +191,7 @@ ja: saved: "保存しました" upload: "アップロード" uploading: "アップロード中..." + uploading_filename: "アップロード中 {{filename}}..." uploaded: "アップロードしました" enable: "有効にする" disable: "無効にする" @@ -182,6 +199,7 @@ ja: revert: "戻す" failed: "失敗" switch_to_anon: "匿名モード" + switch_from_anon: "匿名モード停止" banner: close: "バナーを閉じる。" edit: "このバナーを編集 >>" @@ -203,7 +221,6 @@ ja: has_pending_posts: other: "このトピックは{{count}}個の投稿が承認待ちです" confirm: "変更を保存" - delete_prompt: "%{username}を本当に削除しますか?全ての投稿が削除されるのと同時にメールアドレスとIPアドレスがブロックされます。" approval: title: "この投稿は承認が必要" description: "投稿された新規のポストは受付されましたがモデレータによる承認が必要です。もう少々お待ち下さい。" @@ -244,13 +261,17 @@ ja: total_rows: other: "%{count} 人のユーザ" groups: + empty: + posts: "このグループのメンバーによる投稿はありません。" + add: "追加" + selector_placeholder: "メンバー追加" + owner: "所有者" visible: "このグループは全てのユーザに表示されています。" title: other: "グループ" members: "メンバー" posts: "ポスト" alias_levels: - title: "このグループを仮名として使えるユーザ" nobody: "無し" only_admins: "管理者のみ" mods_and_admins: "管理者とモデレータのみ" @@ -265,7 +286,6 @@ ja: '6': "レスポンス数" '7': "タグ付け" '9': "引用" - '10': "お気に入り" '11': "編集" '12': "アイテム送信" '13': "インボックス" @@ -275,6 +295,9 @@ ja: all_subcategories: "全てのサブカテゴリ" no_subcategory: "サブカテゴリなし" category: "カテゴリ" + reorder: + title: "カテゴリを並び替える" + apply_all: "適用" posts: "ポスト" topics: "トピック" latest: "最新ポスト" @@ -325,11 +348,8 @@ ja: not_supported: "申し訳ありません。そのブラウザは通知をサポートしていません。" perm_default: "通知をONにする" perm_denied_btn: "アクセス拒否" - perm_denied_expl: "通知へのアクセスを拒否されています。利用しているブラウザの通知を有効にし、完了したら、このボタンをクリックしてください。(デスクトップ: アドレスバーの左端のアイコン。 モバイル: \"サイト情報\")" disable: "通知を無効にする" - currently_enabled: "(現在有効化されています)" enable: "通知を有効化" - currently_disabled: "(現在無効化されています)" each_browser_note: "注意: 利用するブラウザ全てでこの設定を変更する必要があります" dismiss_notifications: "全て既読にする" dismiss_notifications_tooltip: "全ての未読の通知を既読にします" @@ -353,7 +373,6 @@ ja: tracked_categories: "トラック中" tracked_categories_instructions: "これらのカテゴリの新規トピックを自動的にトラックします。トピックに対して新しい投稿があった場合、トピック一覧に新しい投稿数がつきます。" muted_categories: "ミュート中" - muted_categories_instructions: "このカテゴリに投稿されたトピックについての通知を受け取りません。また、未読タブにも通知されません。" delete_account: "アカウントを削除する" delete_account_confirm: "本当にアカウントを削除しますか?削除されたアカウントを復元できません。" deleted_yourself: "あなたのアカウントは削除されました。" @@ -371,8 +390,8 @@ ja: warnings_received: "注意" messages: all: "すべて" - mine: "受信トレイ" - unread: "未読" + inbox: "インボックス" + select_all: "全てを選択する" change_password: success: "(メールを送信しました)" in_progress: "(メールを送信中)" @@ -417,10 +436,6 @@ ja: ok: "確認用メールを送信します" invalid: "正しいメールアドレスを入力してください" authenticated: "あなたのメールアドレスは {{provider}} によって認証されています" - frequency: - zero: "未読メールがあった場合、すぐにメールを送信します" - one: "直前にページを閲覧していなかった場合だけメールを送信します" - other: "{{count}} 分間ページを閲覧していなかった場合だけメールを送信します" name: title: "名前" instructions: "フルネーム(任意)" @@ -475,11 +490,17 @@ ja: auto_track_options: never: "トラックしない" immediately: "今すぐ" + after_30_seconds: "30秒後" + after_1_minute: "1分後" + after_2_minutes: "2分後" + after_3_minutes: "3分後" + after_4_minutes: "4分後" + after_5_minutes: "5分後" + after_10_minutes: "10分後" invited: search: "招待履歴を検索するためにキーワードを入力してください..." title: "招待" user: "招待したユーザ" - truncated: "最初の {{count}} 個の招待履歴を表示しています。" redeemed: "受理された招待" redeemed_tab: "受理" redeemed_at: "受理日" @@ -550,7 +571,6 @@ ja: logout: "ログアウトしました" refresh: "Refresh" read_only_mode: - enabled: "読み取り専用モードが有効になっています。サイトをブラウズすることは引き続き出来ますが、機能は動作しません。" login_disabled: "読み取り専用モードにされています。ログインできません。" learn_more: "より詳しく..." year: '年' @@ -567,10 +587,10 @@ ja: last_reply_lowercase: 最新の回答 replies_lowercase: other: 回答 + signup_cta: + sign_up: "新しいアカウントを作成" summary: enabled_description: "トピックのまとめを表示されています。" - description: "{{count}} 返信があります。" - description_time: "全てを確認するのに {{readingTime}} 分 前後を要する {{count}} 個の回答があります。" enable: 'このトピックを要訳する' disable: '全ての投稿を表示する' deleted_filter: @@ -647,7 +667,7 @@ ja: twitter: "Twitter" emoji_one: "Emoji One" composer: - emoji: "Emoji :smile:" + options: "オプション" add_warning: "これは公式の警告です。" posting_not_on_topic: "回答したいトピックはどれですか?" saving_draft_tip: "保存中..." @@ -676,7 +696,7 @@ ja: edit_reason_placeholder: "編集する理由は何ですか?" show_edit_reason: "(編集理由を追加)" view_new_post: "新規ポストを見る。" - saving: "保存中..." + saving: "保存中" saved: "保存完了!" saved_draft: "編集中の投稿があります。選択すると再開します" uploading: "アップロード中..." @@ -703,10 +723,9 @@ ja: heading_title: "見出し" heading_text: "見出し" hr_title: "水平線" - undo_title: "取り消し" - redo_title: "やり直し" help: "Markdown 編集のヘルプ" toggler: "編集パネルの表示/非表示" + modal_cancel: "キャンセル" admin_options_title: "このトピックの詳細設定" auto_close: label: "このトピックを自動的に終了する時間:" @@ -725,7 +744,6 @@ ja: mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -748,14 +766,13 @@ ja: from_my_computer: "このデバイスから" from_the_web: "Web から" remote_tip: "画像へのリンク" - remote_tip_with_attachments: "画像かファイルへのリンク ({{authorized_extensions}})" local_tip: "ローカルからアップロードする画像を選択" - local_tip_with_attachments: "ローカルからアップロードする画像またはファイルを選択 ({{authorized_extensions}})" hint: "(アップロードする画像をエディタにドラッグ&ドロップすることもできます)" uploading: "アップロード中" select_file: "ファイル選択" image_link: "イメージのリンク先" search: + select_all: "全てを選択する" title: "トピック、ポスト、ユーザ、カテゴリを探す" no_results: "何も見つかりませんでした。" no_more_results: "これ以上結果が見つかりませんでした。" @@ -774,10 +791,6 @@ ja: bulk: reset_read: "未読に設定" delete: "トピックを削除" - dismiss_posts: "既読に設定" - dismiss_posts_tooltip: "未読トピック数をクリアする。" - dismiss_topics: "既読に設定" - dismiss_topics_tooltip: "新しい投稿を未読リストに非表示する" dismiss_new: "既読に設定" toggle: "選択したトピックを切り替え" actions: "操作" @@ -799,9 +812,6 @@ ja: category: "{{category}} トピックはありません。" top: "トップトピックはありません。" search: "検索結果はありません。" - educate: - new: '2日以内に投稿されたトピックは「最新」トピックとして表示されます。設定画面で日数変更が可能です。' - unread: '参加中のトピックに対して新しい投稿がある場合、未読記事として表示されます。' bottom: latest: "最新のトピックはこれ以上ありません。" hot: "ホットなトピックはこれ以上ありません。" @@ -909,7 +919,6 @@ ja: description: "このメッセージについての通知を受け取りません。" muted: title: "ミュート" - description: "このトピックについての通知を受け取りません。また、未読タブにも通知されません。" actions: recover: "トピック削除の取り消し" delete: "トピック削除" @@ -950,25 +959,14 @@ ja: unpin: "{{categoryLink}} カテゴリのトップからトピックを削除" unpin_until: "{{categoryLink}} カテゴリのトップからこのトピックを削除するか、%{until} まで待つ。" pin_note: "ユーザはトピックを個別にピン留め解除することができます" - already_pinned: - zero: "{{categoryLink}}にはピン留めされたトピックはありません" - one: "{{categoryLink}}内のトピックは現在1個ピン留めされています。" - other: "{{categoryLink}}内のトピックは現在{{count}}個ピン留めされています。" pin_globally: "このトピックをすべてのトピックリストのトップに表示する" confirm_pin_globally: "既に{{count}} 個ピン留めしています。 多すぎるピン留めは新規ユーザと匿名ユーザの負担になる場合があります。ピン留めを続けますか?" unpin_globally: "トピック一覧のトップからこのトピックを削除します" unpin_globally_until: "このトピックをすべてのトピックリストのトップから削除するか、%{until} まで待つ。" global_pin_note: "ユーザはトピックを個別にピン留め解除することができます" - already_pinned_globally: - zero: "現在ピン留めされていません" - one: "現在1個ピン留めされています" - other: "現在{{count}}個ピン留めされています" make_banner: "このトピックを全てのページのバナーに表示します" remove_banner: "全てのページのバナーを削除します" banner_note: "ユーザはバナーを閉じることができます。常に1つのトピックだけがバナー表示されます" - already_banner: - zero: "バナートピックはありません" - one: "これらが現在のバナートピックです。" inviting: "招待中..." automatically_add_to_groups_optional: "この招待によって、リストされたグループに参加することができます。" automatically_add_to_groups_required: "この招待によって、リストされたグループに参加することができます。" @@ -1058,10 +1056,6 @@ ja: other: "{{count}} 個のいいね!" has_likes_title: other: "{{count}}人のユーザがこの回答に「いいね!」しました" - has_likes_title_you: - zero: "この投稿に「いいね!」する" - one: "あなたと1人がこの回答に「いいね!」しました" - other: "あなたと他{{count}}人がこの回答に「いいね!」しました" errors: create: "申し訳ありませんが、ポスト作成中にエラーが発生しました。もう一度やり直してください。" edit: "申し訳ありませんが、ポスト編集中にエラーが発生しました。もう一度やり直してください。" @@ -1079,8 +1073,6 @@ ja: no_value: "いいえ" yes_value: "はい" via_email: "メールで投稿されました。" - wiki: - about: "この投稿は「Wiki」である。ベーシックユーザが編集できます。" archetypes: save: '保存オプション' controls: @@ -1126,18 +1118,6 @@ ja: bookmark: "ブックマークを取り消す" like: "「いいね!」を取り消す" vote: "投票を取り消す" - people: - off_topic: "{{icons}} オフトピックとしてマーク" - spam: "{{icons}} スパムとしてマーク" - spam_with_url: "{{icons}} スパムとしてフラグ付き" - inappropriate: "{{icons}} 不適切であると報告するフラグを立つ" - notify_moderators: "{{icons}} がモデレータに通報しました" - notify_moderators_with_url: "{{icons}} 通知されたモデレータ" - notify_user: "{{icons}} メッセージを送信しました" - notify_user_with_url: "{{icons}} メッセージを送信しました" - bookmark: "{{icons}} がブックマークしました" - like: "{{icons}} が「いいね!」しています" - vote: "{{icons}} が投票しました" by_you: off_topic: "オフトピックのフラグを立てました" spam: "スパムを報告するフラグを立てました" @@ -1181,10 +1161,6 @@ ja: other: "{{count}}人のユーザが「いいね!」しました" vote: other: "{{count}}人のユーザがこのポストに投票しました" - edits: - one: 1回編集 - other: "{{count}}回編集" - zero: 編集なし delete: confirm: other: "本当にこれらのポストを削除しますか?" @@ -1261,19 +1237,14 @@ ja: notifications: watching: title: "カテゴリ参加中" - description: "これらのカテゴリに新しく投稿されたトピックを自動的に参加します。これらのカテゴリに対して新しい投稿があった場合、登録されたメールアドレスと、コミュニティ内の通知ボックスに通知が届き、トピック一覧に新しい回答数がつきます。" tracking: title: "トラック中" - description: "これらのカテゴリの新規トピックを自動的にトラックします。トピックに対して新しい投稿があった場合、トピック一覧に新しい回答数がつきます。" regular: - title: "通常" description: "他ユーザからタグ付けをされた場合、またはあなたの投稿に回答が付いた場合に通知されます。" muted: title: "ミュート中" - description: "このカテゴリに投稿されたトピックについての通知を受け取りません。また、未読タブにも通知されません。" flagging: title: '私達のコミュニティの維持を助けてくれてありがとうごうざいます' - private_reminder: 'フラグはプライベートです。スタッフのみが参照できます' action: 'フラグをつける' take_action: "アクションをする" notify_action: 'メッセージ' @@ -1320,7 +1291,6 @@ ja: help: "このトピックはピン留めされていません。 既定の順番に表示されます。" pinned_globally: title: "全サイト的にピン留めされました" - help: "このトピックは全サイト的にピン留めされました。全てのリストのトップに表示されます。" pinned: title: "ピン留め" help: "このトピックはピン留めされています。常にカテゴリのトップに表示されます" @@ -1360,10 +1330,7 @@ ja: with_topics: "%{filter} トピック" with_category: "%{filter} %{category} トピック" latest: - title: - zero: "最新ポスト" - one: "最新ポスト (1)" - other: "最新ポスト ({{count}})" + title: "最新" help: "最新のトピック" hot: title: "ホット" @@ -1379,23 +1346,19 @@ ja: title_in: "カテゴリ - {{categoryName}}" help: "カテゴリ毎に整理されたトピックを表示" unread: - title: - zero: "未読" - one: "未読 (1)" + title: "未読" + title_with_count: other: "未読 ({{count}})" help: "未読ポストのあるトピック" lower_title_with_count: - one: "1未読" other: "{{count}} 未読" new: lower_title_with_count: - one: "1件" other: "{{count}}件" lower_title: "新着" - title: - zero: "新規" - one: "新規 (1)" - other: "新規 ({{count}})" + title: "新規" + title_with_count: + other: "最新 ({{count}})" help: "最近投稿されたトピック" posted: title: "あなたのポスト" @@ -1404,9 +1367,8 @@ ja: title: "ブックマーク" help: "ブックマークしたトピック" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}} (1)" + title: "{{categoryName}}" + title_with_count: other: "{{categoryName}} ({{count}})" help: "{{categoryName}} カテゴリの最新トピック" top: @@ -1426,7 +1388,7 @@ ja: title: "毎日" all_time: "今まで" this_year: "年" - this_quarter: "4分の1" + this_quarter: "季刊" this_month: "月" this_week: "週" today: "本日" @@ -1453,7 +1415,7 @@ ja: stale_data: "最近アップデートの確認が正しく動作していません。sidekiq が起動していることを確認してください。" version_check_pending: "まるでアップデート直後のようです。素晴らしい!" installed_version: "Installed" - latest_version: "Latest" + latest_version: "最新" problems_found: "Discourse のインストールにいくつか問題が発見されました:" last_checked: "最終チェック" refresh_problems: "更新" @@ -1644,11 +1606,9 @@ ja: is_disabled: "バックアップ復元を無効にされています。" label: "復元" title: "バックアップを復元" - confirm: "本当にバックアップを復元しますか?" rollback: label: "ロールバック" title: "データベースを元の作業状態にロールバックする" - confirm: "本当にデータベースを元の作業状態にロールバックしますか?" export_csv: user_archive_confirm: "あなたのポストをダウンロードしてよいですか?" success: "エスクポートを開始しました。処理が完了すると、メッセージで通知されます。" @@ -1742,13 +1702,9 @@ ja: love: name: 'love' description: "ライクボタンの色" - wiki: - name: 'wiki' - description: "Wiki投稿の背景に使用する基本色" email: - title: "メール" settings: "設定" - all: "全て" + preview_digest: "ダイジェストのプレビュー" sending_test: "テストメールを送信中..." error: "ERROR - %{server_error}" test_error: "テストメールを送れませんでした。メール設定、またはホストをメールコネクションをブロックされていないようを確認してください。" @@ -1763,7 +1719,6 @@ ja: send_test: "テストメールを送る" sent_test: "送信完了!" delivery_method: "送信方法" - preview_digest: "ダイジェストのプレビュー" refresh: "更新" format: "フォーマット" html: "html" @@ -1771,6 +1726,10 @@ ja: last_seen_user: "ユーザが最後にサイトを訪れた日:" reply_key: "回答キー" skipped_reason: "スキップの理由" + incoming_emails: + error: "エラー" + filters: + error_placeholder: "エラー" logs: none: "ログなし" filters: @@ -1789,6 +1748,7 @@ ja: ip_address: "IP" topic_id: "トピックID" post_id: "ポストID" + category_id: "カテゴリID" delete: '削除' edit: '編集' save: '保存' @@ -1829,6 +1789,13 @@ ja: impersonate: "なりすまし" anonymize_user: "匿名ユーザ" roll_up: "IPブロックをロールアップ" + delete_category: "カテゴリを削除する" + block_user: "ユーザをブロック" + unblock_user: "ユーザをブロック解除" + grant_admin: "管理者権限を付与" + revoke_admin: "管理者権限を剥奪" + grant_moderation: "モデレータ権限を付与" + revoke_moderation: "モデレータ権限を剥奪" screened_emails: title: "ブロック対象アドレス" description: "新規アカウント作成時、次のメールアドレスからの登録をブロックする。" @@ -1893,9 +1860,6 @@ ja: pending: '保留中のユーザ' newuser: 'トラストレベル0のユーザ (新規ユーザ)' basic: 'トラストレベル1のユーザ (ベーシックユーザ)' - regular: 'トラストレベル 2(メンバー)のユーザ' - leader: 'トラストレベル3(レギュラー)のユーザ' - elder: 'トラストレベル4(リーダー)のユーザ' staff: "スタッフ" admins: '管理者ユーザ' moderators: 'モデレータ' @@ -2000,7 +1964,7 @@ ja: unlock_trust_level: "トラストレベルをアンロック" tl3_requirements: title: "トラストレベル3の条件" - table_title: "過去100日に:" + table_title: "過去%{time_period} 日間に" value_heading: "値" requirement_heading: "条件" visits: "訪問" @@ -2061,8 +2025,8 @@ ja: confirm: '確認' dropdown: "ドロップダウン" site_text: - none: "コンテンツの種類を選択してください" title: 'テキストコンテンツ' + edit: '編集' site_settings: show_overriden: '上書き部分のみ表示' title: '設定' @@ -2149,10 +2113,6 @@ ja: bad_count_warning: header: "WARNING!" text: "There are missing grant samples. This happens when the badge query returns user IDs or post IDs that do not exist. This may cause unexpected results later on - please double-check your query." - grant_count: - zero: "付与されたバッジはありません" - one: "1 個のバッジが付与されています" - other: "%{count} 個のバッジが付与されています" sample: "サンプル:" grant: with: %{username} @@ -2166,6 +2126,8 @@ ja: name: "名前" image: "画像" delete_confirm: "Are you sure you want to delete the :%{name}: emoji?" + embedding: + edit: "編集" permalink: title: "パーマリンク" url: "URL" @@ -2234,8 +2196,6 @@ ja: mark_watching: 'm, w トピックを参加中にする' badges: title: バッジ - allow_title: "タイトルとして使用できる" - multiple_grant: "複数回受け取ることができる" badge_count: other: "%{count} バッジ" more_badges: @@ -2255,85 +2215,3 @@ ja: name: その他 posting: name: 投稿中 - badge: - editor: - name: 編集者 - description: 最初のポスト編集 - basic_user: - name: ベーシックユーザ - description: Granted all essential community functions - member: - name: メンバー - description: Granted invitations - regular: - name: レギュラー - description: Granted recategorize, rename, followed links and lounge - leader: - name: リーダー - description: Granted global edit, pin, close, archive, split and merge - welcome: - name: ようこそ - description: 「いいね!」を受けました - autobiographer: - name: Autobiographer - description: Filled user profile information - anniversary: - name: アニバーサリー - description: 今年一度でも投稿したアクティブメンバー - nice_post: - name: 良いポスト - description: 10人に「いいね!」をされました。このバッジは何度でももらえます。 - good_post: - name: 良い投稿! - description: 25人に「いいね!」をされました。このバッジは何度でももらえます。 - great_post: - name: 素晴らしい投稿! - description: 50人に「いいね!」をされました。このバッジは何度でももらえます。 - nice_topic: - name: ナイストピック - description: トピックが10回「いいね!」されました。このバッジは何度でももらえます - good_topic: - name: グッドトピック - description: トピックが25回「いいね!」されました。このバッジは何度でももらえます - great_topic: - name: グレートトピック - description: トピックが50回「いいね!」されました。このバッジは何度でももらえます - nice_share: - name: ナイスシェア - description: 25人の訪問者にポストがシェアされました - good_share: - name: グッドシェア - description: 300人の訪問者にポストがシェアされました - great_share: - name: グレートシェア - description: 1000人の訪問者にポストがシェアされました - first_like: - name: 初めての「いいね!」 - description: 投稿に「いいね!」した - first_flag: - name: 最初のフラグ - description: 投稿にフラグをつけた - promoter: - name: プロモーター - description: 招待したユーザ - campaigner: - name: キャンペイナー - description: 3人のベーシックユーザー(トラストレベル 1)を招待 - champion: - name: チャンピオン - description: 5 メンバー(トラストレベル2)を招待 - first_share: - name: 初めてのシェア - description: 投稿をシェアした - first_link: - name: 最初のリンク - description: サイト内投稿のリンクを挿入した - first_quote: - name: 最初の投稿 - description: ユーザにタグを付けた - read_guidelines: - name: ガイドラインを読んだ - description: community guidelinesを読みました - reader: - name: 閲覧者 - description: 100以上の投稿があるトピック内の投稿をすべて読みました。 diff --git a/config/locales/client.ko.yml b/config/locales/client.ko.yml index 4d631210af6..759b44a5218 100644 --- a/config/locales/client.ko.yml +++ b/config/locales/client.ko.yml @@ -81,6 +81,8 @@ ko: other: "%{count}달 후" x_years: other: "%{count}년 후" + previous_month: '이전 달' + next_month: '다음 달' share: topic: '토픽을 공유합니다.' post: '게시글 #%{postNumber}' @@ -90,12 +92,15 @@ ko: google+: 'Google+로 공유' email: '이메일로 공유' action_codes: + split_topic: "이 토픽을 ${when} 분리" + invited_user: "%{who}이(가) %{when}에 초대됨" + removed_user: "%{who}이(가) %{when}에 삭제됨" autoclosed: - enabled: '%{when} 닫기' - disabled: '%{when} 열기' + enabled: '%{when}에 닫힘' + disabled: '%{when}에 열림' closed: - enabled: '%{when} 닫기' - disabled: '%{when} 열기' + enabled: '%{when}에 닫힘' + disabled: '%{when}에 열림' archived: enabled: '%{when} 보관' disabled: '%{when} 보관 취소' @@ -110,6 +115,19 @@ ko: disabled: '%{when} 목록에서 감춤' topic_admin_menu: "토픽 관리자 기능" emails_are_disabled: "관리자가 이메일 송신을 전체 비활성화 했습니다. 어떤 종류의 이메일 알림도 보내지지 않습니다." + s3: + regions: + us_east_1: "미국 동부 (N. 버지니아)" + us_west_1: "미국 서부 (N. 캘리포니아)" + us_west_2: "미국 서부 (오레곤)" + us_gov_west_1: "AWS GovCloud(US)" + eu_west_1: "유럽연합 (아일랜드)" + eu_central_1: "유럽연합 (프랑크푸르트)" + ap_southeast_1: "아시아 태평양 (싱가폴)" + ap_southeast_2: "아시아 태평양 (시드니)" + ap_northeast_1: "아시아 태평양 (토쿄)" + ap_northeast_2: "아시아 태평양 (서울)" + sa_east_1: "남 아메리카 (상파울로)" edit: '이 토픽의 제목과 카테고리 편집' not_implemented: "죄송합니다. 아직 사용할 수 없는 기능입니다." no_value: "아니오" @@ -141,6 +159,8 @@ ko: more: "더" less: "덜" never: "전혀" + every_30_minutes: "매 30분 마다" + every_hour: "매 한시간 마다" daily: "매일" weekly: "매주" every_two_weeks: "격주" @@ -151,6 +171,7 @@ ko: other: "{{count}} 자" suggested_topics: title: "추천 토픽" + pm_title: "추천 메세지" about: simple_title: "About" title: "About %{title}" @@ -195,6 +216,7 @@ ko: saved: "저장 완료!" upload: "업로드" uploading: "업로드 중..." + uploading_filename: "{{filename}} 업로드 중..." uploaded: "업로드 완료!" enable: "활성화" disable: "비활성화" @@ -202,6 +224,7 @@ ko: revert: "되돌리기" failed: "실패" switch_to_anon: "익명 모드" + switch_from_anon: "익명모드 나가기" banner: close: "배너 닫기" edit: "이 배너 수정 >>" @@ -223,7 +246,7 @@ ko: has_pending_posts: other: "이 토픽은 {{count}}개의 승인 대기중인 게시글이 있습니다." confirm: "변경사항 저장" - delete_prompt: "정말로 %{username} 회원을 삭제하시겠습니까? 게시글이 모두 삭제되고 IP와 이메일이 블락됩니다." + delete_prompt: "정말로 %{username}; 회원을 삭제하시겠습니까? 게시글이 모두 삭제되고 IP와 이메일이 차단됩니다." approval: title: "게시글 승인 필요" description: "새로운 게시글이 있습니다. 그러나 이 게시글이 보여지려면 운영자의 승인이 필요합니다." @@ -264,18 +287,43 @@ ko: total_rows: other: "%{count} 사용자" groups: + empty: + posts: "이 그룹의 구성원에 의해 작성된 게시물은 없습니다." + members: "이 그룹에는 구성원이 없습니다." + mentions: "이 그룹에 대한 언급이 없습니다." + messages: "이 그룹에 대한 메시지는 없습니다." + topics: "이 그룹의 구성원에 의해 작성된 주제글이 없습니다." + add: "추가" + selector_placeholder: "멤버 추가" + owner: "소유자" visible: "모든 사용자에게 보이는 그룹입니다." title: other: "그룹" members: "멤버" posts: "게시글" alias_levels: - title: "누가 이 그룹을 별칭으로 사용할 수 있는가?" + title: "누가 이 그룹에 메시지와 @멘션을 보낼 수 있습니까?" nobody: "0명" only_admins: "관리자 전용" mods_and_admins: "운영자 및 관리자만" members_mods_and_admins: "그룹 멤버, 운영자, 관리자만" everyone: "모두" + trust_levels: + title: "멤버들이 추가되면 회원등급이 자동으로 부여됩니다:" + none: "없음" + notifications: + watching: + title: "알림 : 주시 중" + description: "이 메시지에 새로운 답글이 있을 때 알림을 받게 되며 새로운 답글의 개수는 표시됩니다." + tracking: + title: "알림 : 새 글 표시 중" + description: "누군가 당신의 @아이디 로 언급했거나 당신의 글에 답글이 달릴 때 알림을 받게 됩니다." + regular: + title: "알림 : 일반" + description: "누군가 당신의 @아이디 로 언급했거나 당신의 글에 답글이 달릴 때 알림을 받게 됩니다." + muted: + title: "알림 : 끔" + description: "이 메시지에 대해 어떠한 알림도 받지 않지 않습니다." user_action_groups: '1': "선사한 '좋아요'" '2': "받은 '좋아요'" @@ -285,7 +333,6 @@ ko: '6': "응답" '7': "멘션" '9': "인용" - '10': "즐겨찾기" '11': "편집" '12': "보낸 편지함" '13': "받은 편지함" @@ -295,13 +342,22 @@ ko: all_subcategories: "모든 하위 카테고리" no_subcategory: "없음" category: "카테고리" + category_list: "카테고리 목록 표시" + reorder: + title: "카테고리 순서변경" + title_long: "카테고리 목록 재구성" + fix_order: "위치 고정" + fix_order_tooltip: "카데고리에 고유 위치가 표시되지 않은 게 있습니다. 이 경우 예기치 않은 문제를 일으킬 수 있습니다." + save: "순서 저장" + apply_all: "적용" + position: "위치" posts: "게시글" topics: "토픽" latest: "최근" latest_by: "가장 최근" toggle_ordering: "정렬 컨트롤 토글" subcategories: "하위 카테고리" - topic_stats: "새 글타래 수" + topic_stats: "새로운 토픽 수" topic_stat_sentence: other: "지난 %{unit} 동안 %{count}개의 새로운 토픽이 있습니다." post_stats: "새 게시글 수" @@ -335,21 +391,21 @@ ko: private_messages: "메시지" activity_stream: "활동" preferences: "환경 설정" + expand_profile: "확장" bookmarks: "북마크" bio: "내 소개" invited_by: "(이)가 초대했습니다." trust_level: "신뢰도" notifications: "알림" + statistics: "통계" desktop_notifications: label: "데스크탑 알림" not_supported: "안타깝게도 지금 사용하고 계시는 브라우저는 알림을 지원하지 않습니다." perm_default: "알림 켜기" perm_denied_btn: "권한 거부" - perm_denied_expl: "알림에 대한 권한이 없습니다. 알림을 활성화하기위해 브라우저의 알림설정을 하시고 난 후에 버튼을 눌러주세요. (데스크탑: 주소 표시 막대 가장 왼쪽에 있는 아이콘, 모바일: '사이트 정보'.)" + perm_denied_expl: "통지를 위한 허용을 거절했었습니다. 브라우저 설정을 통해서 통지를 허용해주세요." disable: "알림 비활성화" - currently_enabled: "(현재 활성화됨)" enable: "알림 활성화" - currently_disabled: "(현재 비활성화됨)" each_browser_note: "노트: 사용하시는 모든 브라우저에서 이 설정을 변경해야합니다." dismiss_notifications: "모두 읽음으로 표시" dismiss_notifications_tooltip: "읽지 않은 알림을 모두 읽음으로 표시" @@ -361,28 +417,29 @@ ko: change: "변경" moderator: "{{user}}님은 운영자입니다" admin: "{{user}}님은 관리자 입니다" - moderator_tooltip: "이 사용자는 운영자 입니다" - admin_tooltip: "이 사용자는 관리자입니다." - blocked_tooltip: "이 사용자는 차단되었습니다" - suspended_notice: "이 사용자는 {{date}}까지 접근 금지 되었습니다." + moderator_tooltip: "이 회원은 운영자 입니다" + admin_tooltip: "이 회원은 관리자입니다." + blocked_tooltip: "이 회원은 차단되었습니다" + suspended_notice: "이 회원은 {{date}}까지 접근 금지 되었습니다." suspended_reason: "이유: " github_profile: "Github" - mailing_list_mode: "(글타래가나 카테고리의 알림을 끄지 않는 한) 모든 새로운 글에 대해 메일을 보내주세요." + mailing_list_mode: "(토픽이나 카테고리의 알림을 끄지 않는 한) 모든 새로운 글에 대해 메일을 보내주세요." watched_categories: "지켜보기" - watched_categories_instructions: "이 카테고리 내의 새로운 글타래들을 지켜보도록 자동으로 설정됩니다. 새로운 글이나 글타래에 대하여 알림을 받게되며 글타래 옆에 읽지 않은 글의 수가 표시됩니다." + watched_categories_instructions: "이 카테고리 내의 새로운 토픽들을 지켜보도록 자동으로 설정됩니다. 새로운 게시글이나 토픽에 대하여 알림을 받게되며 토픽 옆에 읽지 않은 게시글의 수가 표시됩니다." tracked_categories: "추적하기" - tracked_categories_instructions: "이 카테고리 내의 새로운 글타래들을 추적하도록 자동으로 설정됩니다. 글타래 옆에 읽지 않은 글의 수가 표시됩니다." + tracked_categories_instructions: "이 카테고리 내의 새로운 토픽들을 추적하도록 자동으로 설정됩니다. 토픽 옆에 읽지 않은 게시글의 수가 표시됩니다." muted_categories: "알림 끄기" - muted_categories_instructions: "이 카테고리들에 새로 작성되는 새로운 글타래에 대한 알림이 오지 않도록 합니다. '읽지 않은'탭에서도 보이지 않게 됩니다." + muted_categories_instructions: "이 카테고리 내의 새 토픽에 대해 어떠한 알림도 받을 수 없으며, 최근의 토픽도 나타나지 않습니다." delete_account: "내 계정 삭제" delete_account_confirm: "정말로 계정을 삭제할까요? 이 작업은 되돌릴 수 없습니다." deleted_yourself: "계정이 삭제 되었습니다." delete_yourself_not_allowed: "지금은 계정을 삭제할 수 없습니다. 관리자에게 연락해 주세요." unread_message_count: "메시지" admin_delete: "삭제" - users: "사용자" + users: "회원" muted_users: "알람 끄기" - muted_users_instructions: "이 사용자들이 보낸 알림 모두 숨김" + muted_users_instructions: "이 회원이 보낸 알림 모두 숨김" + muted_topics_link: "알림을 끈 토픽 보기" staff_counters: flags_given: "유용한 신고" flagged_posts: "신고된 글" @@ -391,8 +448,15 @@ ko: warnings_received: "경고" messages: all: "전체" - mine: "내가 보낸 메세지" - unread: "읽지 않음" + inbox: "수신함" + sent: "보냄" + archive: "저장됨" + groups: "내 그룹" + bulk_select: "메시지 선택" + move_to_inbox: "수신함으로 이동" + move_to_archive: "보관하기" + failed_to_move: "선택한 메시지를 이동할 수 없습니다 (아마도 네트워크가 다운됨)" + select_all: "모두 선택" change_password: success: "(이메일 전송)" in_progress: "(이메일 전송 중)" @@ -437,10 +501,9 @@ ko: ok: "내 이메일로 확인 메일이 전송됩니다." invalid: "유효한 이메일 주소를 입력해주세요." authenticated: "내 이메일이 {{provider}}에 의해 인증되었습니다." + frequency_immediately: "만약 전송된 메일을 읽지 않았을 경우, 즉시 메일을 다시 보내드립니다." frequency: - zero: "읽지 않은 내용이 있을 때 즉시 이메일로 알립니다." - one: "1분 후에도 내용을 확인하지 않았을 때에 이메일로 알립니다." - other: "{{count}}분 후에도 확인하지 않았을 때에 이메일로 알립니다." + other: "최근 {{count}}분 동안접속하지 않을 경우에만 메일이 전송됩니다." name: title: "이름" instructions: "이름을 적어주세요. (선택사항)" @@ -473,16 +536,23 @@ ko: log_out: "로그아웃" location: "위치" card_badge: - title: "사용자 카드 뱃지" + title: "사용자 카드 배지" website: "웹사이트" email_settings: "이메일" + email_previous_replies: + title: "이메일 밑부분에 이전 댓글을 포함합니다." + unless_emailed: "예전에 발송된 것이 아닌 한" + always: "항상" + never: "절대" email_digests: title: "사이트 방문이 없을 경우, 새로운 글을 요약하여 메일로 보냄" + every_30_minutes: "매 30분 마다" daily: "매일" every_three_days: "매 3일마다" weekly: "매주" every_two_weeks: "격주" - email_direct: "누군가 나를 인용했을 때, 내 글에 답글을 달았을때, 내 이름을 멘션했을때 혹은 글타래에 나를 초대했을 떄 이메일 보내기" + email_in_reply_to: "이메일에 글 응답내용을 발췌해서 포함하기 " + email_direct: "누군가 나를 인용했을 때, 내 글에 답글을 달았을때, 내 이름을 멘션했을때 혹은 토픽에 나를 초대했을 떄 이메일 보내기" email_private_messages: "누군가 나에게 메시지를 보냈을때 이메일 보내기" email_always: "사이트를 이용중 일 때도 이메일 알림 보내기" other_settings: "추가 사항" @@ -490,12 +560,12 @@ ko: new_topic_duration: label: "새글을 정의해주세요." not_viewed: "아직 보지 않았습니다." - last_here: "마지막 방문이후 작성된 글타래" - after_1_day: "지난 하루간 생성된 글타래" - after_2_days: "지난 2일간 생성된 글타래" - after_1_week: "최근 일주일간 생성된 글타래" - after_2_weeks: "지난 2주간 생성된 글타래" - auto_track_topics: "마지막 방문이후 작성된 글타래" + last_here: "마지막 방문이후 작성된 토픽" + after_1_day: "지난 하루간 생성된 토픽" + after_2_days: "지난 2일간 생성된 토픽" + after_1_week: "최근 일주일간 생성된 토픽" + after_2_weeks: "지난 2주간 생성된 토픽" + auto_track_topics: "마지막 방문이후 작성된 토픽" auto_track_options: never: "하지않음" immediately: "즉시" @@ -511,14 +581,17 @@ ko: title: "초대" user: "사용자 초대" sent: "보냄" - truncated: "처음 {{count}}개 초대장 보여주기" + none: "승인을 기다리는 초대가 더이상 없습니다." + truncated: + other: "앞 {{count}}개의 초대를 보여줍니다." redeemed: "초대를 받았습니다." redeemed_tab: "Redeemed" + redeemed_tab_with_count: "교환된 ({{count}})" redeemed_at: "에 초대되었습니다." pending: "초대를 보류합니다." pending_tab: "보류" pending_tab_with_count: "지연 ({{count}})" - topics_entered: "글타래가 입력되었습니다." + topics_entered: "토픽이 입력되었습니다." posts_read_count: "글 읽기" expired: "이 초대장의 기한이 만료되었습니다." rescind: "삭제" @@ -545,6 +618,15 @@ ko: same_as_email: "비밀번호가 이메일과 동일합니다." ok: "적절한 암호입니다." instructions: "글자 수가 %{count}자 이상이어야 합니다." + summary: + title: "요약" + stats: "통계" + top_replies: "인기 댓글" + more_replies: "답글 더 보기" + top_topics: "인기 토픽" + more_topics: "토픽 더 보기" + top_badges: "인기 배지" + more_badges: "배지 더 보기" associated_accounts: "로그인" ip_address: title: "마지막 IP 주소" @@ -561,7 +643,7 @@ ko: posted_by: "에 의해 작성되었습니다" sent_by: "에 의해 전송되었습니다" private_message: "메시지" - the_topic: "글타래" + the_topic: "토픽" loading: "로딩 중..." errors: prev_page: "로드하는 중" @@ -570,11 +652,13 @@ ko: server: "서버 에러" forbidden: "접근 거부됨" unknown: "에러" + not_found: "페이지를 찾을 수 없습니다" desc: network: "접속상태를 확인해주세요." network_fixed: "문제가 해결된 것으로 보입니다." server: "에러 코드: {{status}}" forbidden: "볼 수 있도록 허용되지 않았습니다." + not_found: "에구, 어플리케이션이 없는 URL를 가져오려고 시도했습니다." unknown: "문제가 발생했습니다." buttons: back: "뒤로가기" @@ -585,15 +669,18 @@ ko: logout: "로그아웃 되었습니다." refresh: "새로고침" read_only_mode: - enabled: "읽기 모드가 활성화 되었습니다. 사이트를 열람할 수 있으나 상호작용은 불가능 합니다." + enabled: "이 사이트는 현재 읽기전용 모드입니다. 브라우징은 가능하지만, 댓글달기, 좋아요 등 다른 행위들은 현재 비활성화 되어있습니다." login_disabled: "사이트가 읽기 전용모드로 되면서 로그인은 비활성화되었습니다." + too_few_topics_and_posts_notice: "토론을 시작하시죠! 현재 %{currentTopics} / %{requiredTopics} 토픽과 %{currentPosts} / %{requiredPosts} 글이 있습니다. 새 방문자는 읽고 응답할 대화꺼리가 좀 필요해요." + too_few_topics_notice: "토론을 시작하시죠! 현재 %{currentTopics} / %{requiredTopics} 토픽이 있습니다. 새 방문자는 읽고 응답할 대화꺼리가 좀 필요해요." + too_few_posts_notice: "토론을 시작하시죠! 현재 %{currentPosts} / %{requiredPosts} 글이 있습니다. 새 방문자는 읽고 응답할 대화꺼리가 좀 필요해요." learn_more: "더 배우기" year: '년' - year_desc: '지난 365일간 생성된 글타래' + year_desc: '지난 365일간 생성된 토픽' month: '월' - month_desc: '지난 30일간 생성된 글타래' + month_desc: '지난 30일간 생성된 토픽' week: '주' - week_desc: '지난 7일간 생성된 글타래' + week_desc: '지난 7일간 생성된 토픽' day: '일' first_post: 첫 번째 글 mute: 음소거 @@ -602,14 +689,21 @@ ko: last_reply_lowercase: 마지막 답글 replies_lowercase: other: 답글 + signup_cta: + sign_up: "회원가입" + hide_session: "내일 다시 알려주기" + hide_forever: "사양합니다." + hidden_for_session: "알겠습니다. 내일 다시 물어볼께요. 언제든지 '로그인'을 통해서도 계정을 만들 수 있습니다." + intro: "안녕하세요! :heart_eyes: 글읽기는 좋아하시는데 아직 회원가입은 안하신 것 같네요." + value_prop: "회원가입 하시면 글을 어디까지 읽으셨는지 저희가 기억하기 때문에, 언제든지 마지막 읽은 위치로 바로 돌아갈 수 있답니다. 그리고 새글이 뜰때마다 이 화면과 이메일로 알림을 받을수도 있고, 좋아요를 클릭해서 글에 대한 애정을 표현하실 수도 있어요. :heartbeat:" summary: - enabled_description: "현재 글타래에서 가장 인기 있는 몇 개의 글들을 보고 있습니다." - description: "{{count}}개의 답글이 있습니다." - description_time: "총 {{count}}개의 댓글이 있습니다. 예상 소요 시간은 {{readingTime}}분입니다.." - enable: '이 글타래를 요약' - disable: 'Show All Posts' + enabled_description: "현재 커뮤니티에서 가장 인기있는 토픽의 요약본을 보고 있습니다:" + description: "댓글이 {{replyCount}}개 있습니다." + description_time: "댓글이 {{replyCount}}개 있고 다 읽는데 {{readingTime}} 분이 걸립니다." + enable: '이 토픽을 요약Show All Posts' + disable: '모든 포스트 보기' deleted_filter: - enabled_description: "이 글타래는 삭제된 글들을 포함하고 있습니다. 삭제된 글을 보이지 않습니다." + enabled_description: "이 토픽은 삭제된 글들을 포함하고 있습니다. 삭제된 글을 보이지 않습니다." disabled_description: "삭제된 글들을 표시하고 있습니다." enable: "삭제된 글 숨김" disable: "삭제된 글 보기" @@ -619,10 +713,10 @@ ko: remove_allowed_user: "{{name}}에게서 온 메시지를 삭제할까요?" email: '이메일' username: '아이디' - last_seen: '마지막 접근' + last_seen: '마지막 접속' created: '생성' created_lowercase: '최초 글' - trust_level: '신뢰도' + trust_level: '회원등급' search_hint: '아이디, 이메일 혹은 IP 주소' create_account: title: "회원 가입" @@ -659,6 +753,9 @@ ko: admin_not_allowed_from_ip_address: "You can't log in as admin from that IP address." resend_activation_email: "다시 인증 이메일을 보내려면 여기를 클릭하세요." sent_activation_email_again: " {{currentEmail}} 주소로 인증 이메일을 보냈습니다. 이메일이 도착하기까지 몇 분 정도 걸릴 수 있습니다. 또한 스팸 메일을 확인하십시오." + to_continue: "로그인 해주세요" + preferences: "사용자 환경을 변경하려면 로그인이 필요합니다." + forgot: "내 계정의 상세내역 기억하지 않는다." google: title: "Google" message: "Google 인증 중(팝업 차단을 해제 하세요)" @@ -681,15 +778,24 @@ ko: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + emoji: "이모지 :)" + more_emoji: "더보기..." + options: "온셥" + whisper: "귓속말" add_warning: "공식적인 경고입니다." - posting_not_on_topic: "어떤 글타래에 답글을 작성하시겠습니까?" + toggle_whisper: "귀속말 켜고 끄기" + posting_not_on_topic: "어떤 토픽에 답글을 작성하시겠습니까?" saving_draft_tip: "저장 중..." saved_draft_tip: "저장 완료" saved_local_draft_tip: "로컬로 저장됩니다." - similar_topics: "작성하려는 내용과 비슷한 글타래들..." + similar_topics: "작성하려는 내용과 비슷한 토픽들..." drafts_offline: "초안" + group_mentioned: "{{group}}을 이용해서 {{count}} 명의 회원에게 알림을 보내려고 합니다." error: title_missing: "제목은 필수 항목입니다" title_too_short: "제목은 최소 {{min}} 글자 이상이어야 합니다." @@ -699,17 +805,18 @@ ko: try_like: ' 버튼을 사용해 보셨나요?' category_missing: "카테고리를 선택해주세요." save_edit: "편집 저장" - reply_original: "기존 글타래에 대해 답글을 작성합니다." + reply_original: "기존 토픽에 대해 답글을 작성합니다." reply_here: "여기에 답글을 작성하세요." reply: "답글 전송" cancel: "취소" - create_topic: "글타래(글) 쓰기" + create_topic: "토픽(글) 쓰기" create_pm: "메시지" title: "혹은 Ctrl + Enter 누름" users_placeholder: "사용자 추가" title_placeholder: "이야기 나누고자 하는 내용을 한문장으로 적는다면?" edit_reason_placeholder: "why are you editing?" show_edit_reason: "(add edit reason)" + reply_placeholder: "여기에 타이핑 하세요. 마크다운 또는 BBCode, HTML 포맷을 이용하세요. 이미지를 끌어오거나 붙여넣기 하세요." view_new_post: "새로운 글을 볼 수 있습니다." saving: "저장 중..." saved: "저장 완료!" @@ -726,6 +833,7 @@ ko: link_description: "링크 설명을 입력" link_dialog_title: "하이퍼링크 삽입" link_optional_text: "옵션 제목" + link_placeholder: "http://example.com \"선택적 텍스트\"" quote_title: "인용구" quote_text: "인용구" code_title: "코드 샘플" @@ -734,33 +842,34 @@ ko: upload_description: "업로드 설명을 입력" olist_title: "번호 매기기 목록" ulist_title: "글 머리 기호 목록" - list_item: "글타래" + list_item: "토픽" heading_title: "표제" heading_text: "표제" hr_title: "수평선" - undo_title: "취소" - redo_title: "다시" help: "마크다운 편집 도움말" toggler: "작성 패널을 숨기거나 표시" - admin_options_title: "이 글타래에 대한 옵션 설정" + modal_ok: "OK" + modal_cancel: "취소" + cant_send_pm: "죄송합니다. %{username}님에게 메시지를 보낼 수 없습니다." + admin_options_title: "이 토픽에 대한 옵션 설정" auto_close: - label: "자동-닫기 글타래 시간:" + label: "토픽 자동-닫기 시간:" error: "유효한 값은 눌러주세요." - based_on_last_post: "적어도 글타래의 마지막 글이 이만큼 오래되지 않았으면 닫지 마세요." + based_on_last_post: "적어도 토픽의 마지막 글이 이만큼 오래되지 않았으면 닫지 마세요." all: examples: '시간을 숫자(24이하)로 입력하거나 분을 포함한 시간(17:30) 혹은 타임스탬프(2013-11-22 14:00) 형식으로 입력하세요.' limited: units: "(# 시간)" examples: '시간에 해당하는 숫자를 입력하세요. (24)' notifications: - title: "@name 멘션, 글과 글타래에 대한 답글, 개인 메시지 등에 대한 알림" + title: "@name 멘션, 글과 토픽에 대한 답글, 개인 메시지 등에 대한 알림" none: "현재 알림을 불러올 수 없습니다." more: "이전 알림을 볼 수 있습니다." total_flagged: "관심 표시된 총 글" mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -769,9 +878,27 @@ ko: invitee_accepted: "
{{username}} accepted your invitation
" moved_post: "
{{username}} moved {{description}}
" linked: "
{{username}} {{description}}
" - granted_badge: "
'{{description}}' 뱃지를 받았습니다.
" + granted_badge: "
'{{description}}' 배지를 받았습니다.
" + group_message_summary: + other: "
{{group_name}} 메시지상자에 {{count}}개의 메시지가 있습니다
" + alt: + mentioned: "멘션 by" + quoted: "인용 by" + replied: "답글을 전송했습니다." + posted: "포스트 by" + edited: "당신 글이 다음 이용자에 의해 수정" + liked: "당신의 글을 좋아했음." + private_message: "다음 사람에게서온 개인 메시지" + invited_to_private_message: "다음 사람으로부터 개인 메시지가 초대됨" + invited_to_topic: "다음 사람으로부터 한 주제로 초대됨" + invitee_accepted: "다음 사람에 의해 초대가 수락됨." + moved_post: "다음 사람에 의해서 당신의 글이 이동됨" + linked: "당신 글로 링크하기" + granted_badge: "배지가 수여됨." + group_message_summary: "그룹 메시지함의 메시지" popup: mentioned: '"{{topic}}" - {{site_title}}에서 {{username}} 님이 나를 멘션했습니다' + group_mentioned: '"{{topic}}" - {{site_title}}에서 {{username}} 님이 당신을 언급했습니다' quoted: '"{{topic}}" - {{site_title}}에서 {{username}} 님이 나를 인용했습니다' replied: '"{{topic}}" - {{site_title}}에서 {{username}} 님이 내게 답글을 달았습니다' posted: '"{{topic}}" - {{site_title}}에서 {{username}}님이 글을 게시하였습니다' @@ -783,15 +910,25 @@ ko: from_my_computer: "컴퓨터에서 가져오기" from_the_web: "인터넷에서 가져오기" remote_tip: "이미지 링크" - remote_tip_with_attachments: "이미지 또는 파일 링크 ({{authorized_extensions}})" + remote_tip_with_attachments: "이미니자 파일 링크 {{authorized_extensions}}" local_tip: "기기에서 이미지 선택" - local_tip_with_attachments: "기기에서이미지 또는 파일을 선택 ({{authorized_extensions}})" + local_tip_with_attachments: "디바이스에서 이미지나 파일을 선택하세요 {{authorized_extensions}}" hint: "(드래그&드랍으로 업로드 가능)" + hint_for_supported_browsers: "편집창에 이미지를 끌어다 놓거나 붙여넣기 할 수도 있습니다" uploading: "업로드 중입니다..." select_file: "파일 선택" image_link: "이 이미지를 누르면 이동할 링크" search: - title: "글타래, 글, 사용자, 카테고리 검색" + sort_by: "다음으로 정렬" + relevance: "관련성" + latest_post: "가장 최근 글" + most_viewed: "가장 많이 본" + most_liked: "가장 많이 좋아요를 받은" + select_all: "모두 선택" + clear_all: "다 지우기" + result_count: + other: "\"{{term}}\" 검색결과 {{count}} 개" + title: "토픽, 글, 사용자, 카테고리 검색" no_results: "검색 결과가 없습니다" no_more_results: "더 이상 결과가 없습니다." search_help: 검색 도움말 @@ -800,108 +937,119 @@ ko: context: user: "@{{username}}의 글 검색" category: "\"{{category}}\" 카테고리 검색" - topic: "이 글타래를 검색" + topic: "이 토픽을 검색" private_messages: "메시지 검색" - hamburger_menu: "다른 글타래 목록이나 카테고리로 가기" + hamburger_menu: "다른 토픽 목록이나 카테고리로 가기" + new_item: "새로운" go_back: '돌아가기' not_logged_in_user: 'user page with summary of current activity and preferences' current_user: '사용자 페이지로 이동' topics: bulk: + unlist_topics: "토픽 내리기" reset_read: "읽기 초기화" - delete: "글타래 삭제" - dismiss_posts: "글 닫기" - dismiss_posts_tooltip: "이 글타래들의 '읽지 않은' 표시를 없애고 새 글타래가 발생하면 내 '읽지 않은' 목록에 표시하기" - dismiss_topics: "글타래 닫기" - dismiss_topics_tooltip: "새글이 발생할 때 내 '읽지 않은' 목록에 표시하지 않기" + delete: "토픽 삭제" + dismiss: "해지" + dismiss_read: "읽지않음 전부 해지" + dismiss_button: "해지..." + dismiss_tooltip: "새 글을 무시하거나 토픽 추적 멈추기" + also_dismiss_topics: "이 토픽 추적하는 걸 멈추고 내가 읽지 않은 걸 다시는 보여주지 않습니다" dismiss_new: "새글 제거" - toggle: "복수글타래 선택 기능" + toggle: "토픽 복수 선택" actions: "일괄 적용" change_category: "카테고리 변경" - close_topics: "글타래 닫기" - archive_topics: "글타래 보관하기" + close_topics: "토픽 닫기" + archive_topics: "토픽 보관하기" notification_level: "알림 설정 변경" - choose_new_category: "글타래의 새로운 카테고리를 선택" + choose_new_category: "토픽의 새로운 카테고리를 선택" selected: - other: "{{count}}개의 글타래가 선택되었습니다." + other: "{{count}}개의 토픽이 선택되었습니다." none: - unread: "읽지 않은 글타래가 없습니다." - new: "읽을 새로운 글타래가 없습니다." - read: "아직 어떠한 글타래도 읽지 않았습니다." - posted: "아직 어떠한 글타래도 작성되지 않았습니다." - latest: "최신 글타래가 없습니다." - hot: "인기있는 글타래가 없습니다." - bookmarks: "아직 북마크한 글타래가 없습니다." - category: "{{category}}에 글타래가 없습니다." - top: "Top 글타래가 없습니다." + unread: "읽지 않은 토픽이 없습니다." + new: "읽을 새로운 토픽이 없습니다." + read: "아직 어떠한 토픽도 읽지 않았습니다." + posted: "아직 어떠한 토픽도 작성되지 않았습니다." + latest: "최신 토픽이 없습니다." + hot: "인기있는 토픽이 없습니다." + bookmarks: "아직 북마크한 토픽이 없습니다." + category: "{{category}}에 토픽이 없습니다." + top: "Top 토픽이 없습니다." search: "검색 결과가 없습니다." educate: - new: '
새로운 글타래는 여기에서 볼 수 있습니다.
기본 설정으로 2일 이내에 생성된 글타래는 새로운 것으로 간주되며 new 표시가 나타납니다.
환경설정에서 설정을 변경 할 수 있습니다.
' - unread: '
읽지 않은 글타래는 여기에서 볼 수 있습니다.
기본 설정으로 다음과 같은 경우 글타래는 읽지 않은 것으로 간주되며 읽지 않은 개수 1 가 표시됩니다.
또는 각 글타래 아래에 있는 알림 설정에서 해당 글타래를 추적하거나 지켜보도록 설정한 경우
환경설정에서 설정을 변경 할 수 있습니다.
' + new: '
회원님의 토픽은 여기에 나타납니다.
기본적으로 생긴 지 이틀 안된 토픽은 새것으로 간주하고 new 표시가 뜹니다.
바꾸고 싶으면 환경설정으로 가보세요.
' + unread: '
회원님이 읽지 않은 토픽은 여기에 나타납니다.
기본적으로 토픽은 읽지 않은 것으로 간주하고 다음과 같은 조건 중 하나를 만족하면 읽지 않은 글갯수 1 을 표시합니다:
또는 토픽을 추적하거나 지켜보기 위해 각 토픽의 밑부분에 달린 알림제어판에서 설정하는 경우도 포합됩니다.
설정을 바꾸려면 환경설정 페이지로 가세요.
'
bottom:
- latest: "더 이상 읽을 최신 글타래가 없습니다"
- hot: "더 이상 읽을 인기있는 글타래가 없습니다"
- posted: "더 이상 작성된 글타래가 없습니다"
- read: "더 이상 읽을 글타래가 없습니다"
- new: "더 이상 읽을 새로운 글타래가 없습니다."
- unread: "더 이상 읽지 않은 글타래가 없습니다"
- category: "더 이상 {{category}}에 글타래가 없습니다"
- top: "더 이상 인기 글타래가 없습니다."
- bookmarks: "더이상 북마크한 글타래가 없습니다."
+ latest: "더 이상 읽을 최신 토픽이 없습니다"
+ hot: "더 이상 읽을 인기있는 토픽이 없습니다"
+ posted: "더 이상 작성된 토픽이 없습니다"
+ read: "더 이상 읽을 토픽이 없습니다"
+ new: "더 이상 읽을 새로운 토픽이 없습니다."
+ unread: "더 이상 읽지 않은 토픽이 없습니다"
+ category: "더 이상 {{category}}에 토픽이 없습니다"
+ top: "더 이상 인기 토픽이 없습니다."
+ bookmarks: "더이상 북마크한 토픽이 없습니다."
search: "더이상 검색 결과가 없습니다."
topic:
unsubscribe:
+ stop_notifications: "{{title}}에 대한 알림은 이제 덜 받게 됩니다."
change_notification_state: "현재 당신의 알림 설정 : "
- filter_to: "이 글타래에서 {{username}}님의 {{post_count}}건의 글만 보기"
- create: '새 글타래 만들기'
- create_long: '새로운 글타래를 개설'
+ filter_to: " {{post_count}} 게시글 in 토픽"
+ create: '새 토픽 만들기'
+ create_long: '새로운 토픽 만들기'
private_message: '메시지 시작'
- list: '글타래 목록'
- new: '새로운 글타래'
+ archive_message:
+ help: '메시지를 아카이브로 옮기기'
+ title: '저장됨'
+ move_to_inbox:
+ title: '수신함으로 이동'
+ help: '메시지를 편지함으로 되돌리기'
+ list: '토픽 목록'
+ new: '새로운 토픽'
unread: '읽지 않은'
new_topics:
- other: '{{count}}개의 새로운 글타래'
+ other: '{{count}}개의 새로운 토픽'
unread_topics:
- other: '{{count}}개의 읽지 않은 글타래'
- title: '글타래'
+ other: '{{count}}개의 읽지 않은 토픽'
+ title: '토픽'
invalid_access:
- title: "이 글타래는 비공개입니다"
- description: "죄송합니다. 그 글타래에 접근 할 수 없습니다!"
- login_required: "해당 글타래를 보려면 로그인이 필요합니다."
+ title: "이 토픽은 비공개입니다"
+ description: "죄송합니다. 그 토픽에 접근 할 수 없습니다!"
+ login_required: "해당 토픽을 보려면 로그인이 필요합니다."
server_error:
- title: "글타래를 불러오지 못했습니다"
- description: "죄송합니다. 연결 문제로 인해 해당 글타래를 불러올 수 없습니다. 다시 시도하십시오. 문제가 지속되면 문의해 주시기 바랍니다"
+ title: "토픽을 불러오지 못했습니다"
+ description: "죄송합니다. 연결 문제로 인해 해당 토픽을 불러올 수 없습니다. 다시 시도하십시오. 문제가 지속되면 문의해 주시기 바랍니다"
not_found:
- title: "글타래를 찾을 수 없습니다"
- description: "죄송합니다. 글타래를 찾을 수 없습니다. 아마도 운영자에 의해 삭제된 것 같습니다."
+ title: "토픽을 찾을 수 없습니다"
+ description: "죄송합니다. 토픽을 찾을 수 없습니다. 아마도 운영자에 의해 삭제된 것 같습니다."
total_unread_posts:
- other: "이 글타래에 {{count}}개의 읽지 않을 게시 글이 있습니다."
+ other: "이 토픽에 {{count}}개의 읽지 않을 게시 글이 있습니다."
unread_posts:
- other: "이 글타래에 {{count}}개의 읽지 않을 게시 글이 있습니다."
+ other: "이 토픽에 {{count}}개의 읽지 않을 게시 글이 있습니다."
new_posts:
- other: "최근 읽은 이후 {{count}}개 글이 이 글타래 작성되었습니다."
+ other: "최근 읽은 이후 {{count}}개 글이 이 토픽에 작성되었습니다."
likes:
- other: "이 글타래에 {{count}}개의 '좋아요'가 있습니다."
- back_to_list: "글타래 리스트로 돌아갑니다."
- options: "글타래 옵션"
- show_links: "이 글타래에서 링크를 표시합니다."
- toggle_information: "글타래의 세부 정보를 토글합니다."
- read_more_in_category: "더 많은 글타래들은 {{catLink}} 또는 {{latestLink}}에서 찾으실 수 있습니다"
- read_more: "{{catLink}} 또는 {{latestLink}}에서 더 많은 글타래들을 찾으실 수 있습니다"
- read_more_MF: "이 카테고리에 { UNREAD, plural, =0 {} one { is 1개의 안 읽은 } other { are #개의 안 읽은 } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false {is } other{}} 1개의 새로운 글타래가} other { {BOTH, select, true{and } false {are } other{}} # 새로운 글타래가} } 남아 있고, {CATEGORY, select, true {{catLink} 글타래도 확인해보세요.} false {{latestLink}} other {}}"
+ other: "이 토픽에 {{count}}개의 '좋아요'가 있습니다."
+ back_to_list: "토픽 리스트로 돌아갑니다."
+ options: "토픽 옵션"
+ show_links: "이 토픽에서 링크를 표시합니다."
+ toggle_information: "토픽의 세부 정보를 토글합니다."
+ read_more_in_category: "더 많은 토픽들은 {{catLink}} 또는 {{latestLink}}에서 찾으실 수 있습니다"
+ read_more: "{{catLink}} 또는 {{latestLink}}에서 더 많은 토픽들을 찾으실 수 있습니다"
+ read_more_MF: "이 카테고리에 { UNREAD, plural, =0 {} one { is 1개의 안 읽은 } other { are #개의 안 읽은 } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false {is } other{}} 1개의 새로운 토픽이} other { {BOTH, select, true{and } false {are } other{}} # 새로운 토픽이} } 남아 있고, {CATEGORY, select, true {{catLink} 토픽도 확인해보세요.} false {{latestLink}} other {}}"
browse_all_categories: 모든 카테고리 보기
- view_latest_topics: 최신 글타래 보기
+ view_latest_topics: 최신 토픽 보기
suggest_create_topic: 토픽(글)을 작성 해 보실래요?
jump_reply_up: 이전 답글로 이동
jump_reply_down: 이후 답글로 이동
- deleted: "글타래가 삭제되었습니다"
- auto_close_notice: "이 글타래는 곧 자동으로 닫힙니다. %{timeLeft}."
- auto_close_notice_based_on_last_post: "이 글타래는 마지막 답글이 달린 %{duration} 후 닫힙니다."
+ deleted: "토픽이 삭제되었습니다"
+ auto_close_notice: "이 토픽은 곧 자동으로 닫힙니다. %{timeLeft}."
+ auto_close_notice_based_on_last_post: "이 토픽은 마지막 답글이 달린 %{duration} 후 닫힙니다."
auto_close_title: '자동으로 닫기 설정'
auto_close_save: "저장"
- auto_close_remove: "이 글타래를 자동으로 닫지 않기"
+ auto_close_remove: "이 토픽을 자동으로 닫지 않기"
+ auto_close_immediate: "토픽에 마지막 글이 올라온 지 %{hours} 시간 지났기 때문에 이 토픽은 즉시 닫힐 예정입니다."
progress:
- title: 진행 중인 글타래
+ title: 진행 중인 토픽
go_top: "맨위"
go_bottom: "맨아래"
go: "이동"
@@ -914,30 +1062,30 @@ ko:
reasons:
'3_6': '이 카테고리를 보고 있어서 알림을 받게 됩니다.'
'3_5': '자동으로 이 글을 보고있어서 알림을 받게 됩니다.'
- '3_2': '이 글타래를 보고있어서 알림을 받게 됩니다.'
- '3_1': '이 글타래를 생성하여서 알림을 받게 됩니다.'
- '3': '이 글타래를 보고있어서 알림을 받게 됩니다.'
- '2_8': '이 글타래를 추적하고 있어서 알림을 받게 됩니다.'
- '2_4': '이 글타래에 답글을 게시하여서 알림을 받게 됩니다.'
- '2_2': '이 글타래를 추적하고 있어서 알림을 받게 됩니다.'
- '2': '이 글타래를 읽어서 알림을 받게 됩니다. (설정)'
+ '3_2': '이 토픽을 보고있어서 알림을 받게 됩니다.'
+ '3_1': '이 토픽을 생성하여서 알림을 받게 됩니다.'
+ '3': '이 토픽을 보고있어서 알림을 받게 됩니다.'
+ '2_8': '이 토픽을 추적하고 있어서 알림을 받게 됩니다.'
+ '2_4': '이 토픽에 답글을 게시하여서 알림을 받게 됩니다.'
+ '2_2': '이 토픽을 추적하고 있어서 알림을 받게 됩니다.'
+ '2': '이 토픽을 읽어서 알림을 받게 됩니다. (설정)'
'1_2': '누군가 내 @아아디 으로 멘션했거나 내 글에 답글이 달릴 때 알림을 받게 됩니다.'
'1': '누군가 내 @아아디 으로 멘션했거나 내 글에 답글이 달릴 때 알림을 받게 됩니다.'
- '0_7': '이 글타래에 관한 모든 알림을 무시하고 있습니다.'
- '0_2': '이 글타래에 관한 모든 알림을 무시하고 있습니다.'
- '0': '이 글타래에 관한 모든 알림을 무시하고 있습니다.'
+ '0_7': '이 토픽에 관한 모든 알림을 무시하고 있습니다.'
+ '0_2': '이 토픽에 관한 모든 알림을 무시하고 있습니다.'
+ '0': '이 토픽에 관한 모든 알림을 무시하고 있습니다.'
watching_pm:
title: "알림 : 주시 중"
description: "이 메시지에 새로운 답글이 있을 때 알림을 받게 되며 새로운 답글의 개수는 표시됩니다."
watching:
title: "주시 중"
- description: "이 글타래에 새로운 답글이 있을 때 알림을 받게 되며 새로운 답글의 개수는 표시됩니다."
+ description: "이 토픽에 새로운 답글이 있을 때 알림을 받게 되며 새로운 답글의 개수는 표시됩니다."
tracking_pm:
title: "알림 : 새 글 표시 중"
description: "이 메시지의 읽지않은 응답의 수가 표시됩니다. 누군가 내 @아이디를 멘션했거나 내게 답글을 작성하면 알림을 받습니다."
tracking:
title: "새 글 표시 중"
- description: "이 글타래의 새로운 답글의 수가 표시됩니다. 누군가 내 @아이디를 멘션했거나 내게 답글을 작성하면 알림을 받습니다."
+ description: "이 토픽의 새로운 답글의 수가 표시됩니다. 누군가 내 @아이디를 멘션했거나 내게 답글을 작성하면 알림을 받습니다."
regular:
title: "알림 : 일반"
description: "누군가 내 @아아디 으로 멘션했거나 내 글에 답글이 달릴 때 알림을 받게 됩니다."
@@ -949,66 +1097,64 @@ ko:
description: "이 메시지에 대해 어떠한 알림도 받지 않지 않습니다."
muted:
title: "알림 없음"
- description: "아무 알림도 없습니다. '읽지 않은 글' 탭에 나타나지 않습니다."
+ description: "이 토픽에 대해 어떠한 알림도 받지 않고 최신글 목록에도 나타나지 않을 것입니다."
actions:
- recover: "글타래 다시 복구"
- delete: "글타래 삭제"
- open: "글타래 열기"
- close: "글타래 닫기"
+ recover: "토픽 다시 복구"
+ delete: "토픽 삭제"
+ open: "토픽 열기"
+ close: "토픽 닫기"
multi_select: "글 선택"
auto_close: "자동으로 닫기..."
- pin: "글타래 고정..."
- unpin: "글타래 고정 취소..."
- unarchive: "보관 안된 글타래"
- archive: "보관된 글타래"
+ pin: "토픽 고정..."
+ unpin: "토픽 고정 취소..."
+ unarchive: "토픽 보관 취소"
+ archive: "토픽 보관"
invisible: "목록에서 제외하기"
visible: "목록에 넣기"
reset_read: "값 재설정"
feature:
- pin: "글타래 고정"
- unpin: "글타래 고정 취소"
- pin_globally: "전역적으로 글타래 고정"
- make_banner: "배너 글타래"
- remove_banner: "배너 글타래 제거"
+ pin: "토픽 고정"
+ unpin: "토픽 고정 취소"
+ pin_globally: "전역적으로 토픽 고정"
+ make_banner: "배너 토픽"
+ remove_banner: "배너 토픽 제거"
reply:
title: '답글'
- help: '이 글타래에 대한 답글 구성 시작'
+ help: '이 토픽에 대한 답글 작성 시작'
clear_pin:
title: "고정 취소"
- help: "더 이상 목록의 맨 위에 표시하지 않도록 이 글타래의 고정 상태를 해제합니다."
+ help: "더 이상 목록의 맨 위에 표시하지 않도록 이 토픽의 고정 상태를 해제합니다."
share:
title: '공유'
- help: '이 글타래의 링크를 공유'
+ help: '이 토픽의 링크를 공유'
flag_topic:
- title: '신고'
- help: '운영자에게 이 글을 신고합니다.'
- success_message: '성공적으로 글타래를 신고 하였습니다.'
+ title: '신고하기'
+ help: '이 토픽을 주의깊게 보거나 비밀리에 주의성 알림을 보내기 위해 신고합니다'
+ success_message: '신고했습니다'
feature_topic:
- title: "Feature 글타래"
- pin: " {{categoryLink}} 카테고리 글타래 목록 상단에 고정 until"
- confirm_pin: "이미 {{count}}개의 고정된 글타래가 있습니다. 너무 많은 글타래가 고정되어 있으면 새로운 사용자나 익명사용자에게 부담이 될 수 있습니다. 정말로 이 카테고리에 추가적으로 글타래를 고정하시겠습니까?"
- unpin: "이 글타래를 {{categoryLink}} 카테고리 상단에서 제거 합니다."
- unpin_until: "{{categoryLink}} 카테고리 글타래 목록 상단에서 이 글타래를 제거하거나 %{until}까지 기다림."
- pin_note: "개별적으로 사용자가 글타래 고정을 취소할 수 있습니다."
+ title: "Feature 토픽"
+ pin: " {{categoryLink}} 카테고리 토픽 목록 상단에 고정 until"
+ confirm_pin: "이미 {{count}}개의 고정된 토픽이 있습니다. 너무 많은 토픽이 고정되어 있으면 새로운 사용자나 익명사용자에게 부담이 될 수 있습니다. 정말로 이 카테고리에 추가적으로 토픽을 고정하시겠습니까?"
+ unpin: "이 토픽을 {{categoryLink}} 카테고리 상단에서 제거 합니다."
+ unpin_until: "{{categoryLink}} 카테고리 토픽 목록 상단에서 이 토픽을 제거하거나 %{until}까지 기다림."
+ pin_note: "개별적으로 사용자가 토픽 고정을 취소할 수 있습니다."
+ pin_validation: "토픽을 고정하려면 날짜를 지정해야 합니다."
+ not_pinned: " {{categoryLink}} 카테고리에 고정된 토픽이 없습니다."
already_pinned:
- zero: " {{categoryLink}} 카테고리에 고정된 글타래가 없습니다."
- one: "{{categoryLink}} 카테고리에 고정된 글타래: 1."
- other: "{{categoryLink}} 카테고리에 고정된 글타래: {{count}}."
- pin_globally: "모든 글타래 목록 상단 고정 until"
- confirm_pin_globally: "이미 {{count}}개의 글타래가 전역적으로 고정되어 있습니다. 너무 많은 글타래가 고정되어 있으면 새로운 사용자나 익명사용자에게 부담이 될 수 있습니다. 정말로 이 글타래를 전역적으로 고정하시겠습니까?"
- unpin_globally: "모든 글타래 목록 상단에서 이 글타래를 제거"
- unpin_globally_until: "모든 글타래 목록 상단에서 이 글타래를 제거하거나 %{until}까지 기다림."
- global_pin_note: "개별적으로 사용자가 글타래 고정을 취소할 수 있습니다."
+ other: "{{categoryLink}}에 고정된 토픽 갯수: {{count}}"
+ pin_globally: "모든 토픽 목록 상단 고정 until"
+ confirm_pin_globally: "이미 {{count}}개의 토픽이 전역적으로 고정되어 있습니다. 너무 많은 토픽이 고정되어 있으면 새로운 사용자나 익명사용자에게 부담이 될 수 있습니다. 정말로 이 토픽을 전역적으로 고정하시겠습니까?"
+ unpin_globally: "모든 토픽 목록 상단에서 이 토픽을 제거"
+ unpin_globally_until: "모든 토픽 목록 상단에서 이 토픽을 제거하거나 %{until}까지 기다림."
+ global_pin_note: "개별적으로 사용자가 토픽 고정을 취소할 수 있습니다."
+ not_pinned_globally: "전역적으로 고정된 토픽이 없습니다."
already_pinned_globally:
- zero: "전역적으로 고정된 글타래가 없습니다."
- one: "전역적으로 고정된 글타래: 1."
- other: "전역적으로 고정된 글타래: {{count}}."
- make_banner: "이 글타래를 모든 페이지의 상단에 나타나는 배너로 만들기"
+ other: "전역적으로 고정된 토픽 갯수: {{count}}"
+ make_banner: "이 토픽을 모든 페이지의 상단에 나타나는 배너로 만들기"
remove_banner: "모든 페이지에서 나타나는 배너에서 제거"
- banner_note: "사용자는 배너를 닫음으로써 배너를 나타나지 않게 할 수 있습니다. 단지 어떤 기간동안 딱 하나의 글타래만이 배너로 지정 가능합니다."
- already_banner:
- zero: "배너 글타래가 없습니다."
- one: "현재 배너글타래가 존재합니다."
+ banner_note: "사용자는 배너를 닫음으로써 배너를 나타나지 않게 할 수 있습니다. 단지 어떤 기간동안 딱 하나의 토픽만이 배너로 지정 가능합니다."
+ no_banner_exists: "배너 토픽이 없습니다."
+ banner_exists: "현재 배너 토픽이 있습니다."
inviting: "초대 중..."
automatically_add_to_groups_optional: "이 초대는 다음 그룹에 대한 접근 권한을 포함합니다: (선택, 관리자만 가능)"
automatically_add_to_groups_required: "이 초대는 다음 그룹에 대한 접근 권한을 포함합니다: (필수, 관리자만 가능)"
@@ -1024,16 +1170,16 @@ ko:
title: '초대하기'
username_placeholder: "아이디"
action: '초대장 보내기'
- help: '이메일을 통해 다른 사람을 이 글타래에 초대합니다.'
+ help: '이메일을 통해 다른 사람을 이 토픽에 초대합니다.'
to_forum: "친구에게 요약 이메일을 보내고 이 포럼에 가입할 수 있도록 링크를 전송합니다."
- sso_enabled: "이 글타래에 초대하고 싶은 사람의 아이디를 입력하세요."
- to_topic_blank: "이 글타래에 초대하고 싶은 사람의 아이디나 이메일주소를 입력하세요."
- to_topic_email: "이메일 주소를 입력하셨습니다. 친구들에게 이 글타래에 답변 달기가 가능하도록 조치하는 초대장을 보내겠습니다."
- to_topic_username: "아이디를 입력하셨습니다. 이 글타래에 초대하는 링크와 함께 알림을 보내겠습니다."
- to_username: "초대하려는 사용자의 아이디를 입력하세요. 이 글타래에 초대하는 링크와 함께 알림을 보내겠습니다."
+ sso_enabled: "이 토픽에 초대하고 싶은 사람의 아이디를 입력하세요."
+ to_topic_blank: "이 토픽에 초대하고 싶은 사람의 아이디나 이메일주소를 입력하세요."
+ to_topic_email: "이메일 주소를 입력하셨습니다. 친구들에게 이 토픽에 답변 달기가 가능하도록 조치하는 초대장을 보내겠습니다."
+ to_topic_username: "아이디를 입력하셨습니다. 이 토픽에 초대하는 링크와 함께 알림을 보내겠습니다."
+ to_username: "초대하려는 사용자의 아이디를 입력하세요. 이 토픽에 초대하는 링크와 함께 알림을 보내겠습니다."
email_placeholder: '이메일 주소'
success_email: "{{emailOrUsername}}로 초대장을 발송했습니다. 초대를 수락하면 알려 드리겠습니다. 초대상태를 확인하려면 사용자 페이지에서 '초대장' 탭을 선택하세요."
- success_username: "사용자가 이 글타래에 참여할 수 있도록 초대했습니다."
+ success_username: "사용자가 이 토픽에 참여할 수 있도록 초대했습니다."
error: "그 사람을 초대할 수 없습니다. 혹시 이미 초대하진 않았나요? (Invites are rate limited)"
login_reply: '로그인하고 답글 쓰기'
filters:
@@ -1041,18 +1187,18 @@ ko:
other: "{{count}} 글"
cancel: "필터 제거"
split_topic:
- title: "새로운 글타래로 이동"
- action: "새로운 글타래로 이동"
- topic_name: "새로운 글타래 이름"
- error: "새로운 글타래로 이동시키는데 문제가 발생하였습니다."
+ title: "새로운 토픽으로 이동"
+ action: "새로운 토픽으로 이동"
+ topic_name: "새로운 토픽 이름"
+ error: "새로운 토픽으로 이동시키는데 문제가 발생하였습니다."
instructions:
- other: "새로운 글타래를 생성하여, 선택한 {{count}}개의 글로 채우려고 합니다."
+ other: "새로운 토픽을 생성하여, 선택한 {{count}}개의 글로 채우려고 합니다."
merge_topic:
- title: "이미 있는 글타래로 옮기기"
- action: "이미 있는 글타래로 옮기기"
- error: "이 글타래를 이동시키는데 문제가 발생하였습니다."
+ title: "이미 있는 토픽으로 옮기기"
+ action: "이미 있는 토픽으로 옮기기"
+ error: "이 토픽을 이동시키는데 문제가 발생하였습니다."
instructions:
- other: " {{count}}개의 글을 옮길 글타래를 선택해주세요."
+ other: " {{count}}개의 글을 옮길 토픽을 선택해주세요."
change_owner:
title: "글 소유자 변경"
action: "작성자 바꾸기"
@@ -1062,6 +1208,11 @@ ko:
instructions:
other: "{{old_user}}(이)가 작성한 글의 새로운 작성자를 선택해주세요."
instructions_warn: "이 글에 대한 알림이 새 사용자에게 자동으로 이전되지 않습니다.\n
경고: 글과 연관된 데이터가 새로운 사용자로 이전되지 않습니다. 주의해서 사용하세요."
+ change_timestamp:
+ title: "타임스탬프 변경"
+ action: "타임스탬프 변경"
+ invalid_timestamp: "타임스탬프는 미래값으로 할 수 없습니다."
+ error: "토픽 타임스탬프를 바꾸는 중 에러가 발생하였습니다."
multi_select:
select: '선택'
selected: '({{count}})개가 선택됨'
@@ -1080,13 +1231,13 @@ ko:
edit_reason: "Reason: "
post_number: "{{number}}번째 글"
last_edited_on: "마지막으로 편집:"
- reply_as_new_topic: "링크된 글타래로 답글 작성하기"
+ reply_as_new_topic: "연결된 토픽으로 답글 작성하기"
continue_discussion: "{{postLink}}에서 토론을 계속:"
follow_quote: "인용 글로 이동"
show_full: "전체 글 보기"
show_hidden: '숨겨진 내용을 표시'
deleted_by_author:
- other: "(작성자에 의해 취소된 글입니다. 신고당한 글이 아니면 %{count} 시간 뒤에 자동으로 삭제됩니다)"
+ other: "(작성자에 의해 취소된 글입니다. 글이 신고된 것이 아닌 한 %{count} 시간 뒤에 자동으로 삭제됩니다)"
expand_collapse: "확장/축소"
gap:
other: "{{count}}개의 숨겨진 답글 보기"
@@ -1098,10 +1249,9 @@ ko:
other: "{{count}} 좋아요"
has_likes_title:
other: "{{count}}명이 이 글을 좋아합니다"
+ has_likes_title_only_you: "당신이 이 글을 좋아합니다."
has_likes_title_you:
- zero: "이 글을 좋아합니다."
- one: "당신과 다른 1명이 이 글을 좋아합니다."
- other: "당신과 {{count}}명이 이 글을 좋아합니다."
+ other: "당신 외 {{count}}명이 이 글을 좋아합니다"
errors:
create: "죄송합니다. 글을 만드는 동안 오류가 발생했습니다. 다시 시도하십시오."
edit: "죄송합니다. 글을 수정하는 중에 오류가 발생했습니다. 다시 시도하십시오."
@@ -1118,9 +1268,10 @@ ko:
confirm: "글 작성을 취소 하시겠습니까?"
no_value: "아니오"
yes_value: "예"
- via_email: "이 글타래는 이메일을 통해 등록되었습니다."
+ via_email: "이 토픽은 이메일을 통해 등록되었습니다."
+ whisper: "이 포스트는 운영자를 위한 비공개 귓말입니다."
wiki:
- about: "이 글은 위키입니다. 누구나 수정할 수 있습니다."
+ about: "이 글은 위키(wiki) 입니다."
archetypes:
save: '옵션 저장'
controls:
@@ -1129,8 +1280,8 @@ ko:
has_liked: "이 글을 좋아합니다."
undo_like: "'좋아요' 취소"
edit: "이 글 편집"
- edit_anonymous: "이 글타래를 수정하려면 먼저 로그인을 해야합니다."
- flag: "운영자에게 이 글을 신고합니다."
+ edit_anonymous: "이 토픽을 수정하려면 먼저 로그인을 해야합니다."
+ flag: "이 토픽에 관심을 가지기 위해 깃발을 표시해두고 개인적으로 알림을 받습니다"
delete: "이 글을 삭제합니다."
undelete: "이 글 삭제를 취소합니다."
share: "이 글에 대한 링크를 공유합니다."
@@ -1147,18 +1298,19 @@ ko:
revert_to_regular: "스태프 색상 제거하기"
rebake: "HTML 다시 빌드하기"
unhide: "숨기지 않기"
+ change_owner: "소유자 변경"
actions:
- flag: '신고'
+ flag: '신고하기'
defer_flags:
- other: "신고 연기"
+ other: "신고 보류하기"
it_too:
- off_topic: "Flag it too"
- spam: "저도 신고합니다"
- inappropriate: "저도 신고합니다"
- custom_flag: "신고 추가하기"
- bookmark: "Bookmark it too"
- like: "저도 '좋아요' 줄래요"
- vote: "Vote for it too"
+ off_topic: "나도 신고하기"
+ spam: "나도 신고하기"
+ inappropriate: "나도 신고하기"
+ custom_flag: "나도 신고하기"
+ bookmark: "나도 북마크하기"
+ like: "나도 좋아해요"
+ vote: "나도 투표하기"
undo:
off_topic: "신고 취소"
spam: "신고 취소"
@@ -1167,64 +1319,57 @@ ko:
like: "좋아요 취소"
vote: "투표 취소"
people:
- off_topic: "{{icons}}님이 이 글을 글타래에서 제외했습니다."
- spam: "{{icons}} 스팸으로 신고되었습니다"
- spam_with_url: "{{icons}} 스팸으로 표시됨"
- inappropriate: "{{icons}} 부적절하다고 신고했습니다"
- notify_moderators: "{{icons}}님은 이 글을 운영자에게 보고했습니다."
- notify_moderators_with_url: "{{icons}}님은 이 글을 운영자에게 보고했습니다."
- notify_user: "{{icons}} 메시지를 보냈습니다"
- notify_user_with_url: "{{icons}} 메시지를 보냈습니다."
- bookmark: "{{icons}}님이 북마크했습니다."
- like: "{{icons}}님이 좋아합니다."
- vote: "{{icons}}님이 투표했습니다."
+ off_topic: "주제에서 벗어났다고 신고했습니다"
+ spam: "스팸으로 신고했습니다"
+ inappropriate: "부적절한 글로 신고했습니다"
+ notify_moderators: "운영자에게 알렸습니다"
+ notify_user: "글쓴이에게 메시지를 보냈습니다"
+ bookmark: "북마크 했습니다"
+ like: "좋아해요"
+ vote: "이곳에 투표했습니다"
by_you:
- off_topic: "이 글을 글타래에서 벗어남으로 신고함"
- spam: "이 글을 스팸으로 신고함"
- inappropriate: "이 글을 부적절로 신고함"
- notify_moderators: "이 글을 운영자에게 보고함"
- notify_user: "이 사용자에게 메시지를 보냈습니다."
- bookmark: "이 글을 북마크함"
- like: "'좋아요' 했습니다"
- vote: "이 글에 투표함"
+ off_topic: "이글을 주제에서 벗어났다고 신고했습니다"
+ spam: "이글을 스팸으로 신고했습니다"
+ inappropriate: "이 글을 부적절한 컨텐츠로 신고했습니다"
+ notify_moderators: "운영자에게 알렸습니다"
+ notify_user: "글쓴이에게 메시지를 보냈습니다"
+ bookmark: "이 글을 북마크했습니다"
+ like: "좋아해요"
+ vote: "이 글에 투표했습니다"
by_you_and_others:
off_topic:
- other: "나와 {{count}}명의 다른 사용자가 이 글을 글타래에서 제외했습니다."
+ other: "당신 외 {{count}}명이 주제에서 벗어났다고 신고했습니다"
spam:
- other: "나와 {{count}}명의 다른 사람들이 스팸이라고 신고했습니다"
+ other: "당신 외 {{count}}명이 스팸이라고 신고했습니다"
inappropriate:
- other: "나와 {{count}}명의 다른 사람들이 부적절하다고 신고했습니다"
+ other: "당신 외 {{count}}명이 부적절한 컨텐츠라고 신고했습니다"
notify_moderators:
- other: "나와 {{count}}명의 다른 사람들이 적당하다고 표시했습니다."
+ other: "당신 외 {{count}}명이 운영자에게 알렸습니다"
notify_user:
- other: "나와 {{count}}명의 사용자가 이 사용자에게 메시지를 보냈습니다."
+ other: "당신 외 {{count}}명이 글쓴이에게 메시지를 보냈습니다"
bookmark:
- other: "나와 {{count}}명의 다른 사람들이 북마크 했습니다."
+ other: "당신 외 {{count}}명이 북마크 했습니다"
like:
- other: "나와 {{count}}명의 다른 사람들이 좋아합니다."
+ other: "당신 외 {{count}}명이 좋아합니다"
vote:
- other: "나와 {{count}}명의 다른 사람들이 이 포스트에 투표했습니다."
+ other: "당신 외 {{count}}명이 이 글에 투표했습니다"
by_others:
off_topic:
- other: "{{count}}명의 사용자가 이 글을 글타래에서 제외했습니다."
+ other: "{{count}}명이 주제에서 벗어났다고 신고했습니다"
spam:
- other: "{{count}}명의 사람들이 스팸이라고 신고했습니다"
+ other: "{{count}}명의 스팸이라고 신고했습니다"
inappropriate:
- other: "{{count}}명의 사람들이 부적절하다고 신고했습니다"
+ other: "{{count}}명이 부적절한 컨텐츠라고 신고했습니다"
notify_moderators:
- other: "{{count}}명의 사람들이 이 글을 운영자에게 신고했습니다"
+ other: "{{count}}명이 운영자에게 알렸습니다"
notify_user:
- other: "{{count}}명이 이 사용자에게 메시지를 보냈습니다."
+ other: "{{count}}명이 글쓴이에게 메시지를 보냈습니다"
bookmark:
- other: "{{count}}명의 사용자가 이 글을 북마크했습니다."
+ other: "{{count}}명이 북마크했습니다"
like:
- other: "{{count}}명이 이 글을 좋아합니다"
+ other: "{{count}}명이 좋아합니다"
vote:
- other: "{{count}}명의 사용자가 이 글을 추천했습니다."
- edits:
- one: 하나 편집
- other: "{{count}}개 편집"
- zero: 편집 안함
+ other: "{{count}}명이 이 글에 투표했습니다"
delete:
confirm:
other: "모든 글들을 삭제하시겠습니까?"
@@ -1254,12 +1399,13 @@ ko:
choose: '카테고리를 선택하세요…'
edit: '편집'
edit_long: "카테고리 편집"
- view: '카테고리안의 글타래보기'
- general: '일반'
+ view: '카테고리안의 토픽보기'
+ general: '장군'
settings: '설정'
- topic_template: "글타래 템플릿"
+ topic_template: "토픽 템플릿"
delete: '카테고리 삭제'
create: '새 카테고리'
+ create_long: '새 카테고리 만들기'
save: '카테고리 저장'
slug: '카테고리 Slug'
slug_placeholder: '(Optional) dashed-words for url'
@@ -1267,10 +1413,10 @@ ko:
save_error: 카테고리 저장 중 오류가 발생했습니다.
name: "카테고리 이름"
description: "설명"
- topic: "카테고리 글타래"
+ topic: "카테고리 토픽"
logo: "카테고리 로고 이미지"
background_image: "카테고리 백그라운드 이미지"
- badge_colors: "뱃지 색상"
+ badge_colors: "배지 색상"
background_color: "배경 색상"
foreground_color: "글씨 색상"
name_placeholder: "짧고 간결해야합니다"
@@ -1283,13 +1429,14 @@ ko:
already_used: '이 색은 다른 카테고리에서 사용되고 있습니다.'
security: "보안"
images: "이미지"
- auto_close_label: "글타래 자동 닫기 :"
+ auto_close_label: "토픽 자동 닫기 :"
auto_close_units: "시간"
email_in: "incoming 메일 주소 수정"
email_in_allow_strangers: "계정이 없는 익명 유저들에게 이메일을 받습니다."
- email_in_disabled: "이메일로 새 글타래 작성하기 기능이 비활성화되어 있습니다. 사이트 설정에서 '이메일로 새 글타래작성하기'를 활성화 해주세요."
+ email_in_disabled: "이메일로 새 토픽 작성하기 기능이 비활성화되어 있습니다. 사이트 설정에서 '이메일로 새 토픽작성하기'를 활성화 해주세요."
email_in_disabled_click: '"email in" 활성화'
- allow_badges_label: "뱃지가 이 카테고리에서 주어질 수 있도록 허용"
+ suppress_from_homepage: "홈페이지에서 이 카테고리를 감춥니다."
+ allow_badges_label: "배지가 이 카테고리에서 주어질 수 있도록 허용"
edit_permissions: "권한 수정"
add_permission: "권한 추가"
this_year: "올해"
@@ -1301,46 +1448,42 @@ ko:
notifications:
watching:
title: "주시 중"
- description: "이 카테고리 내의 새로운 글타래들을 지켜보도록 자동으로 설정됩니다. 새로운 글이나 글타래에 대하여 알림을 받게되며 글타래 옆에 읽지 않은 글의 수가 표시됩니다."
tracking:
title: "새 글 표시 중"
- description: "이 카테고리 내의 새로운 글타래들을 추적하도록 자동으로 설정됩니다. 글타래 옆에 읽지 않은 글의 수가 표시됩니다."
regular:
- title: "알림: 일반"
+ title: "알림 : 일반"
description: "누군가 내 @아아디 으로 멘션했거나 당신의 글에 답글이 달릴 때 알림을 받게 됩니다."
muted:
title: "알림 꺼짐"
- description: "이 카테고리의 새로운 글타래에 대한 알림을 받지 않고 읽지 않\x1C은 탭에도 표시하지 않습니다."
flagging:
- title: '우리 커뮤니티에 기여해 주셔서 감사합니다.'
- private_reminder: '신고는 오직 관리자만 볼 수 있습니다.'
- action: '글 신고하기'
- take_action: "조치를 취하기"
- notify_action: '메시지'
- delete_spammer: "스팸 사용자 삭제"
- delete_confirm: "이 사용자의 %{posts}개의 글과 %{topics}개의 글타래를 삭제하고 IP주소 %{ip_address}와 이메일 %{email}을 영구 블락하려고 합니다. 이 사용자가 악성 사용자임이 확실합니까? "
- yes_delete_spammer: "예, 스팸 사용자 삭제."
+ title: '우리 커뮤니티 질서를 지키는데 도와주셔서 감사합니다!'
+ action: '글 신고했습니다'
+ take_action: "조치하기"
+ notify_action: '메시지 보내기'
+ delete_spammer: "네, 스패머 회원을 삭제합니다"
+ delete_confirm: "이 회원의 글 %{posts}개 및 토픽 %{topics}개를 삭제하고 IP주소 %{ip_address}와 이메일 %{email}을 영구 차단하려고 합니다. 이 회원이 정말 스패머 확실합니까?"
+ yes_delete_spammer: "예, 스팸 회원을 삭제합니다"
ip_address_missing: "(알 수 없음)"
- hidden_email_address: "(감춰짐)"
- submit_tooltip: "신고 접수하기"
+ hidden_email_address: "(숨김)"
+ submit_tooltip: "비밀 신고하기"
take_action_tooltip: "커뮤니티의 신고 수가 채워지기 기다리지 않고, 바로 신고 수를 제재 수준까지 채웁니다."
- cant: "죄송합니다, 지금 이 글을 신고 할 수 없습니다."
+ cant: "죄송합니다, 지금은 이 글을 신고할 수 없습니다"
formatted_name:
- off_topic: "오프 글타래입니다."
- inappropriate: "부적절함"
+ off_topic: "주제에 벗어났습니다"
+ inappropriate: "부적절 컨텐츠입니다"
spam: "스팸입니다"
custom_placeholder_notify_user: "구체적이고, 건설적이며, 항상 친절하세요."
- custom_placeholder_notify_moderators: "구체적으로 사용자님께서 걱정하는 것과 가능한 모든 관련된 링크를 제공해주세요."
+ custom_placeholder_notify_moderators: "구체적으로 회원님이 걱정하는 내용과 가능한 모든 관련된 링크를 제공해주세요."
custom_message:
at_least: "최소한 {{n}}자를 입력하세요"
more: "{{n}} 이동합니다"
left: "{{n}} 나머지"
flagging_topic:
- title: "우리 커뮤니티에 기여해 주셔서 감사합니다."
- action: "신고된 글타래"
- notify_action: "메시지"
+ title: "우리 커뮤니티 질서를 지키는데 도와주셔서 감사합니다!"
+ action: "토픽 신고하기"
+ notify_action: "메시지 보내기"
topic_map:
- title: "글타래 요약"
+ title: "토픽 요약"
participants_title: "빈번한 게시자"
links_title: "인기 링크"
links_shown: "show all {{totalLinks}} links..."
@@ -1350,25 +1493,24 @@ ko:
warning:
help: "공식적인 주의입니다."
bookmarked:
- help: "북마크한 글타래"
+ help: "북마크한 토픽"
locked:
- help: "이 글타래는 폐쇄되었습니다. 더 이상 새 답글을 받을 수 없습니다."
+ help: "이 토픽은 폐쇄되었습니다. 더 이상 새 답글을 받을 수 없습니다."
archived:
- help: "이 글타래는 보관중입니다. 고정되어 변경이 불가능합니다."
+ help: "이 토픽은 보관중입니다. 고정되어 변경이 불가능합니다."
unpinned:
title: "핀 제거"
- help: "이 글타래는 핀 제거 되었습니다. 목록에서 일반적인 순서대로 표시됩니다."
+ help: "이 토픽은 핀 제거 되었습니다. 목록에서 일반적인 순서대로 표시됩니다."
pinned_globally:
title: "핀 지정됨 (전역적)"
- help: "이 글타래는 전역적으로 핀 지정 되었습니다. 모든 목록의 최상위에 표시됩니다."
pinned:
title: "핀 지정됨"
- help: "이 글타래는 고정되었습니다. 카테고리의 상단에 표시됩니다."
+ help: "이 토픽은 고정되었습니다. 카테고리의 상단에 표시됩니다."
invisible:
- help: "이 글타래는 목록에서 제외됩니다. 글타래 목록에 표시되지 않으며 링크를 통해서만 접근 할 수 있습니다."
+ help: "이 토픽은 목록에서 제외됩니다. 토픽 목록에 표시되지 않으며 링크를 통해서만 접근 할 수 있습니다."
posts: "글"
posts_lowercase: "글"
- posts_long: "이 글타래의 글 수는 {{number}}개 입니다."
+ posts_long: "이 토픽의 글 수는 {{number}}개 입니다."
posts_likes_MF: |
This topic has {count, plural, one {1 reply} other {# replies}} {ratio, select,
low {with a high like to post ratio}
@@ -1380,7 +1522,7 @@ ko:
views_lowercase:
other: "조회"
replies: "답변"
- views_long: "이 글타래는 {{number}}번 읽혔습니다."
+ views_long: "이 토픽은 {{number}}번 읽혔습니다."
activity: "활동"
likes: "좋아요"
likes_lowercase:
@@ -1397,61 +1539,55 @@ ko:
not_available: "Raw 이메일이 가능하지 않습니다."
categories_list: "카테고리 목록"
filters:
- with_topics: "%{filter} 글타래"
- with_category: "%{filter} %{category} 글타래"
+ with_topics: "%{filter} 토픽"
+ with_category: "%{filter} %{category} 토픽"
latest:
- title:
- zero: "최근"
- one: "최근 (1)"
- other: "최근 ({{count}})"
- help: "가장 최근 글타래"
+ title: "최근글"
+ title_with_count:
+ other: "최근글 ({{count}})"
+ help: "가장 최근 토픽"
hot:
title: "인기 있는 글"
- help: "가장 인기있는 글타래 중 하나를 선택"
+ help: "가장 인기있는 토픽 중 하나를 선택"
read:
title: "읽기"
- help: "마지막으로 순서대로 읽은 글타래"
+ help: "마지막으로 순서대로 읽은 토픽"
search:
title: "검색"
- help: "모든 글타래 검색"
+ help: "모든 토픽 검색"
categories:
title: "카테고리"
title_in: "카테고리 - {{categoryName}}"
- help: "카테고리별로 그룹화 된 모든 글타래"
+ help: "카테고리별로 그룹화 된 모든 토픽"
unread:
- title:
- zero: "읽지 않은"
- one: "읽지 않은(1)"
- other: "읽지 않은({{count}})"
- help: "지켜보거나 추적 중인 읽지 않은 글타래 "
+ title: "읽지 않은 글"
+ title_with_count:
+ other: "읽지 않은 글 ({{count}})"
+ help: "지켜보거나 추적 중인 읽지 않은 토픽 "
lower_title_with_count:
- one: "1개의 읽지 않은 글"
- other: "{{count}}개의 읽지 않은 글"
+ other: "{{count}} unread"
new:
lower_title_with_count:
- one: "1 new"
other: "{{count}} new"
lower_title: "new"
- title:
- zero: "새로운"
- one: "새로운(1)"
- other: "새로운({{count}})"
- help: "며칠 내에 만들어진 글타래"
+ title: "새글"
+ title_with_count:
+ other: "새글 ({{count}})"
+ help: "며칠 내에 만들어진 토픽"
posted:
title: "내 글"
help: "내가 게시한 글"
bookmarks:
title: "북마크"
- help: "북마크된 글타래들"
+ help: "북마크된 토픽"
category:
- title:
- zero: "{{categoryName}}"
- one: "{{categoryName}} (1)"
+ title: "{{categoryName}}"
+ title_with_count:
other: "{{categoryName}} ({{count}})"
- help: "{{categoryName}}카테고리의 최신 글타래"
+ help: "{{categoryName}}카테고리의 최신 토픽"
top:
- title: "인기"
- help: "작년 또는 지난 달, 지난 주, 어제에 활발했던 글타래"
+ title: "인기글"
+ help: "작년 또는 지난 달, 지난 주, 어제에 활발했던 토픽"
all:
title: "전체 시간"
yearly:
@@ -1527,6 +1663,7 @@ ko:
refresh_report: "보고서 새로고침"
start_date: "시작일"
end_date: "종료일"
+ groups: "모든 그룹"
commits:
latest_changes: "최근 변경 사항: 자주 업데이트하십시오!"
by: "에 의해"
@@ -1535,31 +1672,31 @@ ko:
old: "지난"
active: "활성화된"
agree: "동의"
- agree_title: "이 신고가 올바르고 타당한지 확인하세요."
+ agree_title: "이 신고가 올바르고 타당함을 확인합니다"
agree_flag_modal_title: "동의 및 ..."
- agree_flag_hide_post: "동의 (포스트 숨기기 + 개인 메시지 보내기)"
- agree_flag_hide_post_title: "Hide this post and automatically send the user a message urging them to edit it"
- agree_flag_restore_post: "동의하기(글 복원)"
+ agree_flag_hide_post: "동의 (글 숨기기 + 개인 메시지 보내기)"
+ agree_flag_hide_post_title: "이 글을 숨기고 글쓴이에게 글을 수정하라고 개인메시지 자동발송하기"
+ agree_flag_restore_post: "동의 (글 복원)"
agree_flag_restore_post_title: "글을 복원하기"
agree_flag: "신고에 동의함"
agree_flag_title: "신고에 동의하며 글이 수정되지 않도록 유지하기"
defer_flag: "연기"
- defer_flag_title: "신고 제거하기. 현재 어떠한 행위를 할 필요 없음"
+ defer_flag_title: "신고 제거하기. 별도추가조치는 더이상 필요없습니다"
delete: "삭제"
delete_title: "신고에서 멘션된 글 삭제하기"
- delete_post_defer_flag: "글을 삭제하고 신고에 결정을 따름"
- delete_post_defer_flag_title: "글을 삭제하고 첫번째 글이면 글타래 삭제하기"
+ delete_post_defer_flag: "글을 삭제하고 신고를 보류함"
+ delete_post_defer_flag_title: "글을 삭제하고 첫번째 글이면 토픽 삭제하기"
delete_post_agree_flag: "글을 삭제하고 신고에 동의함"
- delete_post_agree_flag_title: "글을 삭제하고 첫번째 글이면 글타래 삭제하기"
+ delete_post_agree_flag_title: "글을 삭제하고 첫번째 글이면 토픽 삭제하기"
delete_flag_modal_title: "삭제하고.."
delete_spammer: "스패머 삭제"
- delete_spammer_title: "사용자와 사용자가 작성한 모든 글타래과 글을 삭제함 "
- disagree_flag_unhide_post: "Disagree (글 감추기 취소)"
+ delete_spammer_title: "글쓴이의 모든 글과 토픽을 삭제하고 회원계정도 제거하기"
+ disagree_flag_unhide_post: "동의안함 (글 숨김 취소)"
disagree_flag_unhide_post_title: "글의 모든 신고를 삭제하고 글을 볼 수 있도록 변경"
- disagree_flag: "Disagree"
+ disagree_flag: "동의안함"
disagree_flag_title: "신고를 유효하지 않거나 올바르지 않은 것으로 거부함"
clear_topic_flags: "완료"
- clear_topic_flags_title: "이 글타래를 조사하였고 이슈는 해결되었습니다. 플래그를 지우기 위해 완료를 클리하세요"
+ clear_topic_flags_title: "토픽 조사를 끝냈고 이슈를 해결했습니다. 신고를 지우기 위해 완료를 클릭하세요"
more: "(더 많은 답글...)"
dispositions:
agreed: "agreed"
@@ -1572,8 +1709,8 @@ ko:
error: "뭔가 잘못 됐어요"
reply_message: "답글"
no_results: "신고가 없습니다."
- topic_flagged: "이 글타래은 신고 되었습니다."
- visit_topic: "처리하기 위해 글타래로 이동"
+ topic_flagged: "이 토픽 은 신고 되었습니다."
+ visit_topic: "처리하기 위해 토픽으로 이동"
was_edited: "첫 신고 이후에 글이 수정되었음"
previous_flags_count: "이 글은 이미 {{count}}번 이상 신고 되었습니다."
summary:
@@ -1602,15 +1739,23 @@ ko:
delete_confirm: "이 그룹을 삭제 하시겠습니까?"
delete_failed: "이것은 자동으로 생성된 그룹입니다. 삭제할 수 없습니다."
delete_member_confirm: "'%{group}' 그룹에서 '%{username}'을 제외시키겠습니까?"
+ delete_owner_confirm: "'%{username}' 님에게서 소유자권한을 제거할까요?"
name: "이름"
add: "추가"
add_members: "사용자 추가하기"
custom: "Custom"
+ bulk_complete: "회원들이 그룹에 추가되었습니다."
+ bulk: "그룹에 한꺼번에 추가하기"
+ bulk_paste: "한 줄당 하나씩 아이디 또는 이메일 리스트를 붙여넣기 하세요."
+ bulk_select: "(그룹을 선택하세요)"
automatic: "자동화"
automatic_membership_email_domains: "이 목록의 있는 항목과 사용자들이 등록한 이메일 도메인이 일치할때 이 그룹에 포함"
automatic_membership_retroactive: "이미 등록된 사용자에게 같은 이메일 도메인 규칙 적용하기"
default_title: "Default title for all users in this group"
primary_group: "Automatically set as primary group"
+ group_owners: 소유자
+ add_owners: 소유자 추가하기
+ incoming_email_placeholder: "이메일 주소를 입력하세요"
api:
generate_master: "마스터 API 키 생성"
none: "지금 활성화된 API 키가 없습니다."
@@ -1622,7 +1767,7 @@ ko:
revoke: "폐지"
confirm_regen: "API 키를 새로 발급 받으시겠습니까?"
confirm_revoke: "API 키를 폐지하겠습니까?"
- info_html: "당신의 API 키는 JSON콜을 이용하여 글타래를 생성하거나 수정할 수 있습니다."
+ info_html: "당신의 API 키는 JSON콜을 이용하여 토픽을 생성하거나 수정할 수 있습니다."
all_users: "전체 유저"
note_html: "이 키의 보안에 특별히 주의하세요. 이 키를 아는 모든 사용자는 다른 사용자의 이름으로 글을 작성할 수 있습니다."
plugins:
@@ -1684,11 +1829,11 @@ ko:
is_disabled: "사이트 설정에서 '복구 기능'이 비활성화 되어있습니다."
label: "복구"
title: "백업을 이용하여 복구"
- confirm: "정말 이 백업을 이용하여 복구할까요?"
+ confirm: "정말 이 백업으로 복원할까요?"
rollback:
label: "롤백"
title: "데이터베이스를 이전 workiong state로 되돌리기"
- confirm: "정말로 이전 작업 상태로 데이터베이스를 롤백하시겠습니까?"
+ confirm: "데이타베이스를 이전 상태로 롤백 또는 되돌리기 할까요?"
export_csv:
user_archive_confirm: "정말로 내 글을 다운로드 받습니까?"
success: "Export initiated, you will be notified via message when the process is complete."
@@ -1739,6 +1884,14 @@ ko:
color: "색"
opacity: "투명도"
copy: "복사"
+ email_templates:
+ title: "이메일 템플릿"
+ subject: "제목"
+ multiple_subjects: "이 이메일 양식은 제목이 여러가지 있습니다."
+ body: "본문"
+ none_selected: "편집하려는 이메일 템플릿을 선택하세요."
+ revert: "변경사항 취소"
+ revert_confirm: "정말로 변경사항을 되돌리시겠습니까?"
css_html:
title: "CSS/HTML"
long_title: "CSS, HTML 사용자 정의"
@@ -1773,7 +1926,7 @@ ko:
description: "사이트 헤더에 텍스트와 아이콘"
highlight:
name: '하이라이트'
- description: '페이지 내에 강조된 글 및 글타래 등의 배경색'
+ description: '페이지 내에 강조된 글 및 토픽 등의 배경색'
danger:
name: '위험'
description: '글 삭제 등에 사용되는 강조색'
@@ -1783,18 +1936,18 @@ ko:
love:
name: '사랑'
description: "좋아요 버튼 색"
- wiki:
- name: '위키'
- description: "위키 글의 배경색으로 사용될 기본 색상"
email:
title: "이메일"
settings: "설정"
- all: "전체"
+ templates: "템플릿"
+ preview_digest: "요약 미리보기"
sending_test: "테스트 메일 발송중..."
error: "에러 - %{server_error}"
test_error: "테스트 메일을 전송하는데 문제가 있습니다. 메일 설정을 다시한번 체크해보고 메일 전송이 정상인지 다시 확인하고 시도해주세요."
- sent: "보낸 메일"
- skipped: "생략"
+ sent: "보냄"
+ skipped: "생략됨"
+ received: "전송받음"
+ rejected: "거부됨"
sent_at: "보냄"
time: "시간"
user: "사용자"
@@ -1804,7 +1957,6 @@ ko:
send_test: "테스트 메일 전송"
sent_test: "전송됨!"
delivery_method: "전달 방법"
- preview_digest: "요약 미리보기"
preview_digest_desc: "초대 사용자들에게 보낼 요약 메일 내용 미리보기"
refresh: "새로고침"
format: "형식"
@@ -1813,6 +1965,23 @@ ko:
last_seen_user: "마지막으로 본 사용자"
reply_key: "답글 단축키"
skipped_reason: "생략 이유"
+ incoming_emails:
+ from_address: "보내는사람"
+ to_addresses: "받는사람"
+ cc_addresses: "참조"
+ subject: "제목"
+ error: "에러"
+ none: "수신된 이메일이 없습니다."
+ modal:
+ error: "에러"
+ subject: "제목"
+ body: "본문"
+ filters:
+ from_placeholder: "from@example.com"
+ to_placeholder: "to@example.com"
+ cc_placeholder: "cc@example.com"
+ subject_placeholder: "제목..."
+ error_placeholder: "에러"
logs:
none: "로그가 없습니다."
filters:
@@ -1829,8 +1998,9 @@ ko:
last_match_at: "마지막 방문"
match_count: "방문"
ip_address: "IP"
- topic_id: "글타래 ID"
+ topic_id: "토픽 ID"
post_id: "글 ID"
+ category_id: "카테고리 ID"
delete: '삭제'
edit: '편집'
save: '저장'
@@ -1855,22 +2025,33 @@ ko:
no_previous: "이전 값이 없습니다."
deleted: "새로운 값이 없습니다. 기록이 삭제되었습니다."
actions:
- delete_user: "사용자 삭제"
- change_trust_level: "신뢰도 변경"
+ delete_user: "회원 삭제"
+ change_trust_level: "회원등급 변경"
change_username: "아이디 변경"
change_site_setting: "사이트 설정 변경"
change_site_customization: "사이트 커스텀화 변경"
delete_site_customization: "사이트 커스텀화 삭제"
+ change_site_text: "site text 변경"
suspend_user: "suspend user"
unsuspend_user: "unsuspend user"
- grant_badge: "뱃지 부여"
- revoke_badge: "뱃지 회수"
+ grant_badge: "배지 부여"
+ revoke_badge: "배지 회수"
check_email: "이메일 확인"
- delete_topic: "글타래 삭제"
+ delete_topic: "토픽 삭제"
delete_post: "글 삭제"
impersonate: "대역"
anonymize_user: "anonymize user"
roll_up: "roll up IP blocks"
+ change_category_settings: "카테고리 설정 변경"
+ delete_category: "카테고리 지우기"
+ create_category: "카테고리 만들기"
+ block_user: "사용자 차단"
+ unblock_user: "사용자 차단 해제"
+ grant_admin: "관리자권한 부여"
+ revoke_admin: "관리자권한 회수"
+ grant_moderation: "운영자권한 부여"
+ revoke_moderation: "운영자권한 회수"
+ backup_operation: "백업 작업"
screened_emails:
title: "블락된 이메일들"
description: "누군가가 새로운 계정을 만들면 아래 이메일 주소는 체크되고 등록은 블락됩니다, 또는 다른 조치가 취해집니다."
@@ -1878,12 +2059,12 @@ ko:
actions:
allow: "허용"
screened_urls:
- title: "블락된 URL들"
+ title: "노출된 URL들"
description: "이 목록은 사용자에 의해 스팸으로 알려진 URL 목록입니다."
url: "URL"
domain: "도메인"
screened_ips:
- title: "블락된 IP들"
+ title: "노출된 IP들"
description: 'IP 주소는 감시됩니다. "허용"으로 Whitelist에 등록해주세요.'
delete_confirm: "%{ip_address}를 규칙에 의해 삭제할까요?"
roll_up_confirm: "화면에 표시되는 IP 주소를 subnet으로 바꾸시겠습니까?"
@@ -1923,27 +2104,27 @@ ko:
staff: '스태프'
suspended: '접근 금지 사용자'
blocked: '블락된 사용자'
- suspect: 'Suspect'
+ suspect: '의심스러운 사용자'
approved: "승인?"
approved_selected:
other: "승인한 사용자 ({{count}}명)"
reject_selected:
other: "거부한 사용자 ({{count}}명)"
titles:
- active: '활성화된 사용자'
- new: '새로운 사용자'
- pending: '검토가 필요한 사용자'
- newuser: '사용자 신뢰도 0 (새로운 사용자)'
- basic: '사용자 신뢰도 1 (초보 사용자)'
- regular: '사용자 신뢰도 2 (회원)'
- leader: '사용자 신뢰도 3 (정규)'
- elder: '사용자 신뢰도 4 (지도자)'
+ active: '활동적인 회원'
+ new: '신규회원'
+ pending: '검토 대기중인 회원'
+ newuser: '0등급 회원 (신규가입 회원)'
+ basic: '1등급 회원 (초보 회원)'
+ member: '2등급 회원 (부회원)'
+ regular: '3등급 회원 (정회원)'
+ leader: '4등급 회원 (리더)'
staff: "스태프"
- admins: '관리자 사용자 목록'
+ admins: '관리자'
moderators: '운영자'
blocked: '블락된 사용자들'
suspended: '접근 금지된 사용자들'
- suspect: 'Suspect Users'
+ suspect: '의심스러운 사용자들'
reject_successful:
other: "성공적으로 ${count}명의 사용자를 거절하였습니다."
reject_failures:
@@ -1961,13 +2142,14 @@ ko:
suspend_reason: "Reason"
suspended_by: "접근 금지자"
delete_all_posts: "모든 글을 삭제합니다"
- delete_all_posts_confirm: "%{posts}개의 글과 %{topics}개의 글타래를 지우려고 합니다. 확실합니까?"
+ delete_all_posts_confirm: "%{posts}개의 글과 %{topics}개의 토픽을 지우려고 합니다. 확실합니까?"
suspend: "접근 금지"
unsuspend: "접근 허용"
suspended: "접근 금지?"
moderator: "운영자?"
admin: "관리자?"
blocked: "블락"
+ staged: "격리조치?"
show_admin_profile: "관리자"
edit_title: "제목 수정"
save_title: "제목 저장"
@@ -1989,10 +2171,10 @@ ko:
activity: 활동
like_count: 준/받은 '좋아요'
last_100_days: '지난 100일간'
- private_topics_count: 개인적인 글타래 수
+ private_topics_count: 비공개 토픽 수
posts_read_count: 글 읽은 수
post_count: 글 수
- topics_entered: 읽은 글타래 수
+ topics_entered: 읽은 토픽 수
flags_given_count: 작성한 신고
flags_received_count: 받은 신고
warnings_received_count: 받은 경고
@@ -2008,7 +2190,7 @@ ko:
anonymize_failed: "There was a problem anonymizing the account."
delete: "사용자 삭제"
delete_forbidden_because_staff: "관리자 및 운영자 계정은 삭제할 수 없습니다."
- delete_posts_forbidden_because_staff: "Can't delete all posts of admins and moderators."
+ delete_posts_forbidden_because_staff: "어드민와 운영자들의 포스트는 삭제할 수 없습니다."
delete_forbidden:
other: "사용자가 작성한 글이 있으면 사용자를 삭제 할 수 없습니다. 사용자를 삭제 하기 전에 사용자가 작성한 글을 모두 삭제해야 합니다. (%{count}일 이전에 작성한 글은 삭제할 수 없습니다.)"
cant_delete_all_posts:
@@ -2029,42 +2211,45 @@ ko:
deactivate_failed: "사용자 비활성에 문제가 있습니다."
unblock_failed: '사용자 언블락에 문제가 있습니다.'
block_failed: '사용자 블락에 문제가 있습니다.'
+ block_confirm: '정말로 이 사용자를 차단하겠습니까? 차단된 사용자는 어떠한 토픽이나 포스트도 작성할 수 없습니다.'
+ block_accept: '네, 이 사용자를 차단합니다.'
deactivate_explanation: "비활성화 사용자는 이메일 인증을 다시 받아야합니다."
suspended_explanation: "접근 금지된 유저는 로그인 할 수 없습니다."
- block_explanation: "블락 사용자는 글을 작성하거나 글타래를 작성할 수 없습니다."
- trust_level_change_failed: "신뢰도 변경에 문제가 있습니다."
- suspend_modal_title: "Suspend User"
- trust_level_2_users: "신뢰도 2 사용자들"
- trust_level_3_requirements: "사용자 신뢰도 3 이상이 필요"
- trust_level_locked_tip: "신뢰도 시스템이 잠겼습니다. 시스템이 사용자를 승급이나 강등시키지 않을 것 입니다."
- trust_level_unlocked_tip: "신뢰도 시스템이 잠금이 해제되었습니다. 시스템은 사용자를 승급이나 강등 시킬 것입니다."
- lock_trust_level: "신뢰도 시스템 잠금"
- unlock_trust_level: "신뢰도 시스템 잠금 해제"
+ block_explanation: "블락 사용자는 글을 작성하거나 토픽을 작성할 수 없습니다."
+ stage_explanation: "격리조치된 회원은 특정 토픽에만 이메일로만 글을 쓸 수 있습니다."
+ trust_level_change_failed: "회원등급 변경에 실패했습니다."
+ suspend_modal_title: "거부된 사용자"
+ trust_level_2_users: "2등급 회원들"
+ trust_level_3_requirements: "회원등급 3 이상이어야 합니다."
+ trust_level_locked_tip: "회원등급이 고정되었습니다. 시스템이 회원등급을 올리거나 내리지 않을 것입니다."
+ trust_level_unlocked_tip: "회원등급 고정이 풀렸습니다. 시스템이 회원등급을 자동적으로 올리거나 내릴 것입니다."
+ lock_trust_level: "회원등급 고정"
+ unlock_trust_level: "회원등급 고정 해제"
tl3_requirements:
- title: "레벨 3 권한이 필요합니다."
- table_title: "최근 100일 간:"
+ title: "3등급 회원이 되기 위한 자격"
+ table_title: "지난 %{time_period} 일간"
value_heading: "값"
- requirement_heading: "필수"
- visits: "방문수"
+ requirement_heading: "자격요건"
+ visits: "방문횟수"
days: "일"
- topics_replied_to: "답글 달린 글타래"
- topics_viewed: "읽은 글타래 수"
- topics_viewed_all_time: "읽은 글타래 수 (전체 기간)"
- posts_read: "읽은 글 수"
- posts_read_all_time: "읽은 글 수 (전체 기간)"
- flagged_posts: "신고된 글"
- flagged_by_users: "신고한 사용자들"
- likes_given: "선사한 '좋아요'"
- likes_received: "받은 '좋아요'"
- likes_received_days: "받은 '좋아요' : 특정일"
- likes_received_users: "받은 좋아요: 순사용자(unique users)"
- qualifies: "신뢰 등급 3의 조건에 부합합니다."
- does_not_qualify: "신뢰 등급 3의 조건에 부합하지 않습니다."
+ topics_replied_to: "댓글 달은 토픽 갯수"
+ topics_viewed: "열어본 토픽 갯수"
+ topics_viewed_all_time: "열어본 토픽 갯수 (전체 기간)"
+ posts_read: "읽은 글 갯수"
+ posts_read_all_time: "읽은 글 갯수 (전체 기간)"
+ flagged_posts: "신고당한 글 갯수"
+ flagged_by_users: "신고한 회원수"
+ likes_given: "'좋아요' 선물한 횟수"
+ likes_received: "'좋아요' 받은 횟수"
+ likes_received_days: "한번이라도 '좋아요' 받아본 날짜횟수"
+ likes_received_users: "한번이라도 '좋아요' 선물해준 회원수"
+ qualifies: "3등급회원 자격을 만족합니다"
+ does_not_qualify: "3등급회원 자격을 만족하지 않습니다"
will_be_promoted: "곧 승급 됩니다."
will_be_demoted: "곧 강등됩니다."
on_grace_period: "현재 승급 유예 기간이므로 강등되지 않습니다."
- locked_will_not_be_promoted: "신뢰도 시스템이 잠겼습니다. 승급되지 않습니다."
- locked_will_not_be_demoted: "신뢰도 시스템이 잠겼습니다. 강등되지 않습니다."
+ locked_will_not_be_promoted: "회원등급이 고정되었습니다. 승급되지 않을 것입니다."
+ locked_will_not_be_demoted: "회원등급이 고정되었습니다. 강등되지 않을 것입니다."
sso:
title: "Single Sign On"
external_id: "External ID"
@@ -2103,8 +2288,15 @@ ko:
confirm: '확인'
dropdown: "드롭다운"
site_text:
- none: "편집할 콘텐츠 유형을 선택하세요."
+ description: "포럼에 있는 그 어떤 텍스트도 수정이 가능합니다. 아래의 검색기능을 통해 시작하세요."
+ search: "편집하고 싶은 텍스트를 검색하세요."
title: '텍스트 콘텐츠'
+ edit: '편집'
+ revert: "변경사항 취소"
+ revert_confirm: "정말로 변경사항을 되돌리시겠습니까?"
+ go_back: "검색으로 돌아가기"
+ recommended: "다음의 텍스트를 요구에 맞게 편집하는 것을 권장:"
+ show_overriden: 'Override 된 설정만 보여주기'
site_settings:
show_overriden: '수정된 것만 표시'
title: '사이트 설정'
@@ -2115,87 +2307,86 @@ ko:
add_url: "URL 추가"
add_host: "Host 추가"
categories:
- all_results: 'All'
+ all_results: '전체'
required: '필수'
basic: '기본 설정'
- users: '사용자'
+ users: '회원'
posting: '글'
email: '이메일'
files: '파일'
- trust: '신뢰도'
+ trust: '회원등급'
security: '보안'
onebox: "Onebox"
- seo: 'SEO'
+ seo: '검색엔진최적화(SEO)'
spam: '스팸'
rate_limits: '제한'
developer: '개발자'
embedding: "Embedding"
- legal: "합법적인"
+ legal: "법률조항"
uncategorized: '카테고리 없음'
backups: "백업"
login: "로그인"
plugins: "플러그인"
- user_preferences: "사용자 환경 설정"
+ user_preferences: "회원 환경설정"
badges:
- title: 뱃지
- new_badge: 새로운 뱃지
+ title: 배지
+ new_badge: 새 배지
new: New
name: 이름
- badge: 뱃지
+ badge: 배지
display_name: 표시 이름
description: 설명
- badge_type: 뱃지 종류
+ badge_type: 배지 종류
badge_grouping: 그룹
badge_groupings:
- modal_title: 뱃지 그룹으로 나누기
+ modal_title: 배지 그룹으로 나누기
granted_by: 배지 부여자
granted_at: 배지 수여일
- reason_help: ( 글타래가나 글 링크)
+ reason_help: (토픽 또는 댓글로 가는 링크)
save: 저장
delete: 삭제
- delete_confirm: 정말로 이 뱃지를 삭제하시겠습니까?
+ delete_confirm: 정말로 이 배지를 삭제할까요?
revoke: 회수
- reason: 원인
+ reason: 이유
expand: 확장 …
- revoke_confirm: 정말로 이 뱃지를 회수하시겠습니까?
- edit_badges: 뱃지 수정
- grant_badge: 뱃지 부여
- granted_badges: 부여된 뱃지
+ revoke_confirm: 정말로 이 배지를 회수할까요?
+ edit_badges: 배지 수정
+ grant_badge: 배지 부여
+ granted_badges: 부여된 배지
grant: 부여
- no_user_badges: "%{name}님은 수여받은 뱃지가 없습니다."
- no_badges: 받을 수 있는 뱃지가 없습니다.
- none_selected: "시작하려면 뱃지를 선택하세요"
- allow_title: 뱃지를 칭호로 사용 가능하도록 허용
+ no_user_badges: "%{name}님은 배지가 없습니다."
+ no_badges: 받을 수 있는 배지가 없습니다.
+ none_selected: "시작하려면 배지를 선택하세요"
+ allow_title: 배지를 칭호로 사용 가능하도록 허용
multiple_grant: 중복 부여할 수 있도록 허용
- listable: 공개 뱃지 페이지에 표시되는 뱃지입니다.
- enabled: 뱃지 기능 사용
+ listable: 공개 배지 페이지에 표시되는 배지입니다.
+ enabled: 배지 기능 사용
icon: 아이콘
image: 이미지
- icon_help: "Font Awesome class나 이미지 주소를 사용합니다"
- query: 뱃지 Query(SQL)
- target_posts: 포스트들을 타겟으로 하는 query
- auto_revoke: 매일 회수 query를 실행한다.
- show_posts: 뱃지 페이지에서 뱃지를 받게한 글을 보여줍니다.
+ icon_help: "이미지 주소로 Font Awesome 클래스 또는 URL을 사용합니다"
+ query: 배지 쿼리(SQL)
+ target_posts: 글들을 대상으로 하는 쿼리
+ auto_revoke: 회수 쿼리를 매일 실행
+ show_posts: 배지 페이지에서 배지를 받게한 글을 보여줍니다.
trigger: Trigger
trigger_type:
none: "매일 업데이트"
- post_action: "사용자가 포스트에 액션을 했을 때"
- post_revision: "사용자가 포스트를 수정거나 작성했을 때"
- trust_level_change: "사용자의 신뢰도가 변했을 떄"
- user_change: "사용자가 수정되거나 생성되었을 때"
+ post_action: "회원이 글에 액션을 할 때"
+ post_revision: "회원이 새글을 쓰거나 글을 수정할 때"
+ trust_level_change: "회원등급이 바뀔 때"
+ user_change: "회원이 생성되거나 수정될 때"
preview:
- link_text: "수여된 뱃지 미리보기"
- plan_text: "Query plan 미리보기"
- modal_title: "뱃지 Query 미리보기"
- sql_error_header: "Query에 오류가 있습니다."
- error_help: "뱃지 query의 도움말을 보려면 다음의 링크를 확인하세요."
+ link_text: "수여된 배지 미리보기"
+ plan_text: "쿼리 플랜 미리보기"
+ modal_title: "배지 쿼리 미리보기"
+ sql_error_header: "질의 중 오류가 발생했습니다"
+ error_help: "배지 쿼리 도움말을 보려면 다음 링크를 확인하세요."
bad_count_warning:
header: "주의!"
- text: "사라진 뱃지 샘플이 있습니다. 뱃지 query가 존재하지 않는 user ID나 post ID를 반환할 경우 발생합니다. 예상하지 못한 결과를 일으킬 수 있으니 query를 다시 한번 확인하세요."
+ text: "사라진 배지 샘플이 있습니다. 배지 query가 존재하지 않는 user ID나 post ID를 반환할 경우 발생합니다. 예상하지 못한 결과를 일으킬 수 있으니 query를 다시 한번 확인하세요."
+ no_grant_count: "할당된 배지가 없습니다."
grant_count:
- zero: "할당된 뱃지가 없습니다."
- one: "1개의 뱃지가 할당됨."
- other: "%{count}개의 뱃지가 할당됨."
+ other: "%{count}개의 배지가 할당됨."
sample: "샘플:"
grant:
with: %{username}
@@ -2203,28 +2394,40 @@ ko:
with_post_time: %{username} for post in %{link} at %{time}
with_time: %{username} at %{time}
emoji:
- title: "Emoji"
- help: "모든 사용자가 사용가능한 새로운 이미지를 추가. (프로 팁: 여러개의 파일을 드래그 & 드롭으로 한번에)"
- add: "새로운 Emoji 추가"
+ title: "이모지"
+ help: "모든 사람이 쓸 수 있는 이모지를 추가합니다. (팁: 여러개 파일을 한 번에 드래그 & 드롭할 수 있어요)"
+ add: "새 이모지 추가"
name: "이름"
image: "이미지"
- delete_confirm: "정말 :%{name}: emoji를 삭제하시겠습니까?"
+ delete_confirm: "정말로 :%{name}: 이모지를 삭제할까요?"
embedding:
get_started: "다른 웹사이트에 Discourse를 임베드하려면 호스트 추가부터 하세요"
confirm_delete: "정말로 host를 삭제할까요?"
- title: "Embedding"
+ sample: "Discourse 토픽을 웨사이트에 삽입(embed)하기 위해 다음 HTML코드를 이용하세요. REPLACE_ME 부분을 당신이 삽입하려는 웨사이트의 정식URL로 바꿔치기 하시면 됩니다."
+ title: "삽입(Embedding)"
host: "허용 Host"
edit: "편집"
category: "카테고리에 게시"
add_host: "Host 추가"
- settings: "Embedding 설정"
- feed_settings: "Feed 설정"
- crawling_settings: "클롤러 설정"
+ settings: "삽입(Embedding) 설정"
+ feed_settings: "피드 설정"
+ feed_description: "당신 사이트의 RSS/ATOM 피드를 알려주시면 Discourse가 그 사이트 컨텐트를 더 잘 가져올 수 있습니다."
+ crawling_settings: "크롤러 설정"
+ crawling_description: "When Discourse creates topics for your posts, if no RSS/ATOM feed is present it will attempt to parse your content out of your HTML. Sometimes it can be challenging to extract your content, so we provide the ability to specify CSS rules to make extraction easier."
+ embed_by_username: "토픽 생성 시 사용할 회원이름(Username)"
+ embed_post_limit: "삽입(embed)할 글 최대갯수"
+ embed_username_key_from_feed: "피드에서 discourse usename을 꺼내오기 위한 키(key)"
+ embed_truncate: "임베드된 글 뒷부분 잘라내기"
+ embed_whitelist_selector: "CSS selector for elements that are allowed in embeds"
+ embed_blacklist_selector: "CSS selector for elements that are removed from embeds"
+ feed_polling_enabled: "RSS/ATOM으로 글 가져오기"
+ feed_polling_url: "긁어올 RSS/ATOM 피드 URL"
+ save: "삽입(Embedding) 설정 저장하기"
permalink:
title: "고유링크"
url: "URL"
- topic_id: "글타래 ID"
- topic_title: "글타래"
+ topic_id: "토픽 ID"
+ topic_title: "토픽"
post_id: "글 ID"
post_title: "글"
category_id: "카테고리 ID"
@@ -2248,34 +2451,37 @@ ko:
new: 'g, n 새로운'
unread: 'g, u 읽지 않은'
categories: 'g, c 카테고리'
- top: 'g, t 인기'
+ top: 'g, t 인기글'
bookmarks: 'g, b 북마크'
+ profile: 'g, p 프로필'
+ messages: 'g, m 메시지'
navigation:
title: 'Navigation'
jump: '# 글 번호로'
back: 'u Back'
up_down: 'k/j 선택된 글 이동 ↑ ↓'
- open: 'o or Enter 선택한 글타래에 들어갑니다.'
+ open: 'o or Enter 선택한 토픽에 들어갑니다.'
next_prev: 'shift+j/shift+k 이전/다음 섹션'
application:
title: 'Application'
- create: 'c 새 글타래를 만듭니다.'
+ create: 'c 새 토픽을 만듭니다.'
notifications: 'n Open notifications'
hamburger_menu: '= 햄버거 메뉴 열기'
user_profile_menu: 'p 사용자 메뉴 열기'
- show_incoming_updated_topics: '. 갱신된 글타래 보기'
+ show_incoming_updated_topics: '. 갱신된 토픽 보기'
search: '/ Search'
help: '? 키보드 도움말 열기'
dismiss_new_posts: 'x, r 새글을 읽은 상태로 표시하기'
- dismiss_topics: 'x, t 글타래 무시하기'
+ dismiss_topics: 'x, t 토픽 무시하기'
+ log_out: 'shift+z shift+z 로그아웃'
actions:
title: 'Actions'
- bookmark_topic: 'f 토글 북마크 글타래'
+ bookmark_topic: 'f 토글 북마크 토픽'
pin_unpin_topic: 'shift+p 핀고정/핀해제'
- share_topic: 'shift+s 글타래 공유'
+ share_topic: 'shift+s 토픽 공유'
share_post: 's 글 공유'
- reply_as_new_topic: 't 링크된 글타래로 답글 작성하기'
- reply_topic: 'shift+r 글타래에 답글 달기'
+ reply_as_new_topic: 't 연결된 토픽으로 답글 작성하기'
+ reply_topic: 'shift+r 토픽에 답글 달기'
reply_post: 'r 글에 답글 달기'
quote_post: 'q 인용 글'
like: 'l Like post'
@@ -2283,21 +2489,21 @@ ko:
bookmark: 'b Bookmark post'
edit: 'e Edit post'
delete: 'd Delete post'
- mark_muted: 'm, m 글타래 알람 : 끄기'
- mark_regular: 'm, r 글타래 알람 : 일반(기본)으로 설정하기'
- mark_tracking: 'm, t 글타래 알람 : 추적하기'
- mark_watching: 'm, w 글타래 알람 : 주시하기'
+ mark_muted: 'm, m 토픽 알람 : 끄기'
+ mark_regular: 'm, r 토픽 알람 : 일반(기본)으로 설정하기'
+ mark_tracking: 'm, t 토픽 알람 : 추적하기'
+ mark_watching: 'm, w 토픽 알람 : 주시하기'
badges:
- title: 뱃지
- allow_title: "can be used as a title"
- multiple_grant: "can be awarded multiple times"
+ earned_n_times:
+ other: "이 배지를 %{count}번 받았습니다"
+ title: 배지
badge_count:
- other: "뱃지 %{count}개"
+ other: "배지 %{count}개"
more_badges:
other: "+%{count} More"
granted:
other: "%{count} 개 부여"
- select_badge_for_title: 칭호로 사용할 뱃지를 선택하세요
+ select_badge_for_title: 칭호로 사용할 배지를 선택하세요
none: "<없음>"
badge_grouping:
getting_started:
@@ -2305,102 +2511,11 @@ ko:
community:
name: 커뮤니티
trust_level:
- name: 신뢰 등급
+ name: 회원등급
other:
name: 기타
posting:
name: 글 관련 배지
- badge:
- editor:
- name: 편집자
- description: 첫 포스트 편집
- basic_user:
- name: 기본
- description: 부여되면 커뮤니티의 기본 기능 수행 가능
- member:
- name: 멤버
- description: Granted invitations
- regular:
- name: 일반
- description: Granted recategorize, rename, followed links and lounge
- leader:
- name: 중견
- description: Granted global edit, pin, close, archive, split and merge
- welcome:
- name: 환영합니다
- description: 좋아요 받음
- autobiographer:
- name: 자서전 작가
- description: 사용자의 프로필 정보를 작성함
- anniversary:
- name: 기념일
- description: Active member for a year, posted at least once
- nice_post:
- name: 괜찮은 글
- description: 작성한 글이 좋아요를 10개 받았습니다. 이 뱃지는 중복 수여 가능합니다.
- good_post:
- name: 좋은 글
- description: 작성한 글이 좋아요를 25개 받았습니다. 이 뱃지는 중복 수여 가능합니다.
- great_post:
- name: 굉장히 좋은 글
- description: 작성한 글이 좋아요를 50개 받았습니다. 이 뱃지는 중복 수여 가능합니다.
- nice_topic:
- name: Nice 글타래
- description: 10개의 '좋아요'를 받았습니다. 이 뱃지는 여러번 받을 수 있습니다.
- good_topic:
- name: Good 글타래
- description: 25개의 '좋아요'를 받았습니다. 이 뱃지는 여러번 받을 수 있습니다.
- great_topic:
- name: Great 글타래
- description: 50개의 '좋아요'를 받았습니다. 이 뱃지는 여러번 받을 수 있습니다.
- nice_share:
- name: Nice 공유
- description: 25명의 사용자로부터 공유되었습니다
- good_share:
- name: Good 공유
- description: 300명의 사용자로부터 공유되었습니다
- great_share:
- name: Great 공유
- description: 1000명의 사용자로부터 공유되었습니다
- first_like:
- name: 첫 좋아요
- description: 처음으로 글에 '좋아요'를 했습니다.
- first_flag:
- name: 첫 신고
- description: 글을 처음으로 신고하였습니다.
- promoter:
- name: Promoter
- description: 사용자 초대
- campaigner:
- name: Campaigner
- description: 기본 사용자 3명 초대하기 (신뢰도 1)
- champion:
- name: Champion
- description: 기본 사용자 5명 초대하기 (신뢰도 2)
- first_share:
- name: 첫 공유
- description: 처음으로 글을 공유했습니다.
- first_link:
- name: 첫 링크
- description: 글 작성시, 다른 글타래로 가는 링크를 처음으로 추가하였습니다.
- first_quote:
- name: 첫 인용
- description: 글 작성시 다른 사용자의 글을 인용하였습니다.
- read_guidelines:
- name: 가이드라인 읽음
- description: 커뮤니티 가이드라인 을 읽었습니다.
- reader:
- name: 독서가
- description: 100개가 넘는 댓글이 달린 글타래의 댓글을 모두 읽었습니다.
- popular_link:
- name: 인기 링크
- description: 50회 이상 클릭이 발생한 외부 링크 게시
- hot_link:
- name: HOT 링크
- description: 300회 이상 클릭이 발생한 외부 링크 게시
- famous_link:
- name: Famous 링크
- description: 1000회 이상 클릭이 발생한 외부 링크 게시
google_search: |
diff --git a/config/locales/client.nb_NO.yml b/config/locales/client.nb_NO.yml index bc95f1c0eb2..d14a7cec02c 100644 --- a/config/locales/client.nb_NO.yml +++ b/config/locales/client.nb_NO.yml @@ -138,6 +138,7 @@ nb_NO: admin_title: "Admin" flags_title: "Rapporteringer" show_more: "vis mer" + show_help: "alternativer" links: "Lenker" links_lowercase: one: "link" @@ -214,6 +215,7 @@ nb_NO: saved: "Lagret!" upload: "Last opp" uploading: "Laster opp..." + uploading_filename: "Laster opp {{filename}}..." uploaded: "Lastet opp!" enable: "Aktiver" disable: "Deaktiver" @@ -243,7 +245,6 @@ nb_NO: one: "Dette emnet har 1 innlegg som venter på godkjenning" other: "Dette emnet har {{count}} innlegg som venter på godkjenning" confirm: "Lagre endringer" - delete_prompt: "Er du sikker du ønsker å slette %{username}? Dette vil fjerne alle brukerens innnlegg og blokkere epost og ip-addressen." approval: title: "Innlegg Behøver Godkjenning" description: "Vi har mottatt ditt nye innlegg men det krever godkjenning av en moderator før det vises. Venligst vær tålmodig." @@ -286,6 +287,13 @@ nb_NO: one: "1 bruker" other: "%{count} brukere" groups: + empty: + posts: "Det er ingen innlegg av medlemmene i denne gruppen." + members: "Det er ingen medlemmer i denne gruppen." + messages: "Det er ingen meldinger for denne gruppen." + add: "Legg til" + selector_placeholder: "Legg til medlemmer" + owner: "eier" visible: "Gruppen er synlig for alle brukere" title: one: "gruppe" @@ -293,12 +301,20 @@ nb_NO: members: "Medlemmer" posts: "Innlegg" alias_levels: - title: "Hvem kan benytte denne gruppen som alias?" nobody: "Ingen" only_admins: "Kun administratorer" mods_and_admins: "Kun moderatorer og administratorer" members_mods_and_admins: "Kun gruppemedlemmer, moderatorer og administratorer" everyone: "Alle" + trust_levels: + none: "ingen" + notifications: + watching: + title: "Følger" + tracking: + title: "Sporer" + regular: + title: "Normal" user_action_groups: '1': "Liker tildelt" '2': "Liker mottatt" @@ -308,7 +324,6 @@ nb_NO: '6': "Svar" '7': "Omtalelser" '9': "Sitater" - '10': "Favoritter" '11': "Redigeringer" '12': "Sendte elementer" '13': "Innboks" @@ -365,13 +380,12 @@ nb_NO: invited_by: "Invitert av" trust_level: "Tillitsnivå" notifications: "Varsler" + statistics: "Statistikk" desktop_notifications: perm_default: "Slå på varslinger" perm_denied_btn: "Tillatelse avslått" disable: "Slå av varslinger" - currently_enabled: "(slått på)" enable: "Slå på varslinger" - currently_disabled: "(slått av)" each_browser_note: "Merk: Du må endre denne innstillinger for hver nettleser du bruker." dismiss_notifications: "Merk alle som lest" dismiss_notifications_tooltip: "Merk alle uleste varslinger som lest" @@ -395,7 +409,6 @@ nb_NO: tracked_categories: "Sporet" tracked_categories_instructions: "Du vil automatisk spore alle nye emner i disse kategoriene. Antallet uleste og nye innlegg vil vises ved emnets oppføring." muted_categories: "Dempet" - muted_categories_instructions: "Du vil ikke bli varslet om nye emner i disse kategoriene og de vil ikke vises i listen over ulest innhold." delete_account: "Slett kontoen min" delete_account_confirm: "Er du sikker på at du vil slette kontoen din permanent? Denne handlingen kan ikke angres!" deleted_yourself: "Slettingen av din konto har vært vellykket." @@ -413,8 +426,10 @@ nb_NO: warnings_received: "advarsler" messages: all: "Alle" - mine: "Mine" - unread: "Uleste" + inbox: "Innboks" + sent: "Sendt" + groups: "Mine grupper" + select_all: "Velg Alle" change_password: success: "(e-post sendt)" in_progress: "(sender e-post)" @@ -458,10 +473,6 @@ nb_NO: ok: "Vi sender deg en e-post for å bekrefte" invalid: "Vennligst oppgi en gyldig e-postadresse" authenticated: "Din e-post har blitt autentisert av {{provider}}" - frequency: - zero: "Vi sender deg straks en e-post hvis du ikke har lest saken vi sendte deg en e-post om." - one: "Du får bare e-post hvis du ikke er blitt sett det siste minuttet." - other: "Du får bare e-post hvis du ikke har blitt sett de siste {{count}} minuttene." name: title: "Navn" instructions: "Ditt fulle navn (valgfritt)" @@ -520,7 +531,7 @@ nb_NO: search: "skriv for å søke etter invitasjoner..." title: "invitasjoner" user: "Invitert bruker" - truncated: "Viser de første {{count}} invitasjoner." + sent: "Sendt" redeemed: "Løs inn invitasjoner" redeemed_tab: "Brukt" redeemed_at: "Løst inn ved" @@ -551,6 +562,12 @@ nb_NO: same_as_email: "Ditt passord er det samme som din e-post." ok: "Passordet ditt ser bra ut" instructions: "Minst %{count} tegn." + summary: + title: "Oppsummering" + stats: "Statistikk" + top_replies: "Mest Populære Svar" + top_topics: "Mest Populære Emner" + more_topics: "Flere Emner" associated_accounts: "Innloggingsforsøk" ip_address: title: "Siste IP-adresse" @@ -576,11 +593,13 @@ nb_NO: server: "Serverfeil" forbidden: "Tilgang avslått" unknown: "Feil" + not_found: "Side Ikke funnet" desc: network: "Vennligst sjekk nettverkstilkoblingen din" network_fixed: "Ser ut som om den er tilbake." server: "Feilkode: {{status}}" forbidden: "Du har ikke tilgang til dette." + not_found: "Oops, applikasjonen forsøkte å laste en URL som ikke eksisterer." unknown: "Noe gikk galt." buttons: back: "Gå tilbake" @@ -591,7 +610,6 @@ nb_NO: logout: "Du ble logget ut" refresh: "Refresh" read_only_mode: - enabled: "Skrivebeskyttet modus er aktivert. Du kan fortsette å benytte siden med enkelte funksjoner vil muligens ikke fungere." login_disabled: "Innlogging er deaktivert mens nettsiden er i skrivebeskyttet modus." learn_more: "lær mer..." year: 'år' @@ -609,10 +627,15 @@ nb_NO: replies_lowercase: one: svar other: svar + signup_cta: + sign_up: "Registrer deg" + hide_session: "Spør meg igjen i morgen" + hide_forever: "nei takk" + hidden_for_session: "OK, jeg spør igjen i morgen. Du kan også registrere en konto når du vil!" + intro: "Hei du! :heart_eyes: Det ser ut som du følger diskusjonen, men ikke har registrert deg enda." + value_prop: "Når du registrerer deg husker vi hvor langt du har lest, så du starter på riktig sted neste gang du åpner en tråd. Du får også varsler, her og på e-post når det skjer ting i diskusjonene du vil følge. I tillegg kan du like innlegg :heartbeat:" summary: enabled_description: "Du ser for øyeblikket en oppsummering av dette emnet: de mest interessante innleggene i følge nettsamfunnet." - description: "Det er {{count}} svar." - description_time: "Det er {{count}} svar med en estimert lesetid på {{readingTime}} minutter." enable: 'Oppsummer dette emnet' disable: 'Vis alle innlegg' deleted_filter: @@ -666,6 +689,9 @@ nb_NO: admin_not_allowed_from_ip_address: "Du kan ikke logge inn som administrator fra den IP-adressen." resend_activation_email: "Klikk her for å sende e-posten for aktivering igjen." sent_activation_email_again: "Vi sendte deg en ny e-post for aktivering på {{currentEmail}}. Det kan ta noen minutter før den kommer fram; sørg for at du sjekker nettsøppel om du ikke finner den." + to_continue: "Vennligst Logg Inn" + preferences: "Du må være innlogget for å endre brukerinnstillinger." + forgot: "I husker ikke mine kontodetaljer" google: title: "med Google" message: "Autentiserer med Google (sørg for at du tillater pop-up vindu)" @@ -688,8 +714,15 @@ nb_NO: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + emoji: "Emoji :)" + more_emoji: "mer..." + options: "Alternativer" + whisper: "hvisker" add_warning: "Dette er en offisiell advarsel." posting_not_on_topic: "Du svarer på emnet \"{{title}}\", men for øyeblikket ser du på et annet emne." saving_draft_tip: "lagrer..." @@ -718,7 +751,7 @@ nb_NO: edit_reason_placeholder: "hvorfor endrer du?" show_edit_reason: "(legg till endringsbegrunnelse)" view_new_post: "Se ditt nye innlegg." - saving: "Lagrer..." + saving: "Lagrer" saved: "Lagret!" saved_draft: "Innleggsutkast. Velg for å fortsette." uploading: "Laster opp..." @@ -745,10 +778,10 @@ nb_NO: heading_title: "Overskrift" heading_text: "Overskrift" hr_title: "Horisontalt Skille" - undo_title: "Angre" - redo_title: "Gjenta" help: "Hjelp for redigering i Markdown" toggler: "gjem eller vis redigeringspanelet" + modal_ok: "OK" + modal_cancel: "Avbryt" admin_options_title: "Valgfrie emne-instillinger for ansatte" auto_close: label: "Tid for auto-lukking av emnet:" @@ -767,7 +800,6 @@ nb_NO: mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -777,6 +809,15 @@ nb_NO: moved_post: "
{{username}} moved {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
Ble tildelt '{{description}}'
" + alt: + mentioned: "Nevnt av" + quoted: "Sitert av" + replied: "Svart" + posted: "Innlegg av" + liked: "Likte innlegget ditt" + private_message: "Privat melding fra" + linked: "Link til innlegget ditt" + granted_badge: "Merke innvilget" popup: mentioned: '{{username}} nevnte deg i "{{topic}}" - {{site_title}}' quoted: '{{username}} siterte deg i "{{topic}}" - {{site_title}}' @@ -790,14 +831,19 @@ nb_NO: from_my_computer: "Fra Min Enhet" from_the_web: "Fra nettet" remote_tip: "link til bilde" - remote_tip_with_attachments: "link til bilde eller fil ({{authorized_extensions}})" local_tip: "velg bilder fra din enhet" - local_tip_with_attachments: "velg bilder eller filer fra din enhet ({{authorized_extensions}})" hint: "(du kan også drag & drop inn i editoren for å laste dem opp)" uploading: "Laster opp bilde" select_file: "Velg Fil" image_link: "lenken som bildet skal peke til" search: + sort_by: "Sorter etter" + relevance: "Relevanse" + latest_post: "Nyeste Innlegg" + most_viewed: "Mest Lest" + most_liked: "Mest Likt" + select_all: "Velg Alle" + clear_all: "Fjern Alle" title: "søk etter emner, innlegg, brukere eller kategorier" no_results: "Ingen resultater funnet." no_more_results: "Ingen flere resultater funnet." @@ -809,6 +855,8 @@ nb_NO: category: "Søk i kategorien \"{{category}}\"" topic: "Søk i dette emnet" private_messages: "Søk i meldinger" + hamburger_menu: "gå til en annen emneliste eller kategori" + new_item: "ny" go_back: 'gå tilbake' not_logged_in_user: 'brukerside med oppsummering av nylig aktivtet og preferanser.' current_user: 'go til din brukerside' @@ -816,10 +864,6 @@ nb_NO: bulk: reset_read: "Nullstill lest" delete: "Slett Emne" - dismiss_posts: "Avvis innlegg" - dismiss_posts_tooltip: "Tøm antallet uleste innlegg i disse emnene men fortsett å vis dem i min liste over uleste innlegg når nye innlegg blir lagt inn" - dismiss_topics: "Avvis innlegg" - dismiss_topics_tooltip: "Ikke vis disse emnene i min ulest-liste når nye innlegg i disse forekommer" dismiss_new: "Lest" toggle: "Veksle mellom massevelging av emner" actions: "Massehandlinger" @@ -842,9 +886,6 @@ nb_NO: category: "Det er ingen {{category}} emner." top: "Det er ingen populære emner." search: "Det er ingen søkeresultater" - educate: - new: '
Dine nye emner vises her.
Som standard anses emner som nye, og vil ha indikatoren ny hvis emnet ble opprettet de siste 2 dagene
Du kan endre dette i dine innstillinger.
' - unread: '
Dine uleste emner vises her.
Som standard anses emner som uleste, og vil vise antall uleste 1 dersom du:
Eller dersom du eksplisitt har satt emnet som Sporet eller Fulgt via varslingskontrollene under hvert emne.
Du kan endre dette i dine innstillinger.
' bottom: latest: "Det er ikke noen siste emner igjen å lese." hot: "Det er ikke noen populære emner igjen å lese." @@ -960,7 +1001,6 @@ nb_NO: description: "Du vil ikke få varslinger om noe i denne meldingnen. " muted: title: "Dempet" - description: "du vil ikke bli varslet om noen ting i dette emnet, og det vil ikke visest som ulest." actions: recover: "Gjenopprett emne" delete: "slett emne" @@ -999,23 +1039,12 @@ nb_NO: confirm_pin: "Du har allerede {{count}} låste emner. For mange låste emner kan være et problem for nye og anonyme brukere. Er du sikker på at du ønsker å låse et til emne i denne kategorien?" unpin: "Fjern dette emnet fra toppen av {{categoryLink}} kategorien." pin_note: "Brukere kan låse opp emnet selv." - already_pinned: - zero: "Det er ingen låste emner i {{categoryLink}}." - one: "Emner for øyeblikket låst i {{categoryLink}}: 1." - other: "Emner for øyeblikket låst i {{categoryLink}}: {{count}}." confirm_pin_globally: "Du har allerede {{count}} globalt låste emner. For mange låste emner kan bli en byrde for nye og anonyme brukere. Er du sikker på at du vil låse et til emne globalt? " unpin_globally: "Fjern dette emnet fra toppen av alle emnelister. " global_pin_note: "Brukere kan låse opp emner for dem selv. " - already_pinned_globally: - zero: "Det er ingen låste emner globalt." - one: "Emner for øyeblikket låst globalt: 1." - other: "Dette enmnet er låst globalt: {{count}}." make_banner: "Gjør dette emnet til et banner som dukker opp på toppen av alle sider." remove_banner: "Fjern banneret som dukker opp på toppen av alle sider. " banner_note: "Brukere kan fjerne banneret ved å lukke det. Kun et emne kan være banner på en og samme tid. " - already_banner: - zero: "Det er ingen banneremner. " - one: "Det er for øyeblikket et banneremne. " inviting: "Inviterer..." automatically_add_to_groups_optional: "Denne invitasjonen inkluderer også tilgang på disse gruppene: (valgfritt, kun for admin)" automatically_add_to_groups_required: "Denne invitasjonen inkluderer også tilgang til disse gruppene: (påkrevet, kun for admin)" @@ -1113,8 +1142,8 @@ nb_NO: has_likes_title: one: "{{count}} bruker likte dette innlegget" other: "{{count}} brukere likte dette innlegget" + has_likes_title_only_you: "du likte dette innlegget" has_likes_title_you: - zero: "du likte dette innlegget" one: "du og 1 annen bruker likte dette innlegget" other: "du og {{count}} andre likte dette innlegget" errors: @@ -1134,8 +1163,6 @@ nb_NO: no_value: "Nei" yes_value: "Ja" via_email: "Dette innlegget ankom via e-post" - wiki: - about: "Dette innlegget er en wiki; brukere kan redigere den" archetypes: save: 'Lagre Alternativene' controls: @@ -1183,18 +1210,6 @@ nb_NO: bookmark: "Angre bokmerke" like: "Angre liker" vote: "Angre stemme" - people: - off_topic: "{{icons}} rapporterte dette som irrelevant" - spam: "{{icons}} rapporterte dette som spam" - spam_with_url: "{{icons}} merket dette som spam" - inappropriate: "{{icons}} rapporterte dette som upassende" - notify_moderators: "{{icons}} varslet moderatorene" - notify_moderators_with_url: "{{icons}} varslet moderatorene" - notify_user: "{{icons}} sendte en melding" - notify_user_with_url: "{{icons}} sente en melding" - bookmark: "{{icons}} bokmerket dette" - like: "{{icons}} likte dette" - vote: "{{icons}} stemte for dette" by_you: off_topic: "Du rapporterte dette som irrelevant" spam: "Du rapporterte dette som spam" @@ -1254,10 +1269,6 @@ nb_NO: vote: one: "1 bruker stemte på dette innlegget" other: "{{count}} brukere stemte på dette innlegget" - edits: - one: 1 redigering - other: "{{count}} redigeringer" - zero: ingen redigeringer delete: confirm: one: "Er du sikker på at du vil slette det innlegget?" @@ -1294,6 +1305,7 @@ nb_NO: topic_template: "Emnemal" delete: 'Slett kategori' create: 'Ny Kategori' + create_long: 'Opprett en ny kategori' save: 'Lagre Kategori' slug: 'Kategorinavn i URL' slug_placeholder: '(valgfritt) sammensatte ord for bruk i URL' @@ -1335,19 +1347,15 @@ nb_NO: notifications: watching: title: "Følger" - description: "Du vil automatisk følge alle nye emner i disse kategoriene. Du vil bli varslet om alle nye innlegg og emner. Antallet uleste og nye emner vil også vises." tracking: title: "Sporing" - description: "Du vil automatisk spore alle nye emner i disse kategoriene. Antallet nye svar vises for disse." regular: - title: "Vanlig" + title: "Normal" description: "Du vil bli varslet om noen nevner ditt @navn eller svarer deg." muted: title: "Dempet" - description: "Du vil ikke bli varslet om noe vedrørende disse emnene i disse kategoriene og de vil ikke vises i din ulest-liste." flagging: title: 'Takk for at du hjelper å holde forumet ryddig!' - private_reminder: 'flagg er private, bare synlige for staben' action: 'Rapporter innlegg' take_action: "Ta Handling" notify_action: 'Melding' @@ -1395,7 +1403,6 @@ nb_NO: help: "Dette emnet er ikke lenger fastsatt, det vil vises i vanlig rekkefølge" pinned_globally: title: "Globalt fastsatt" - help: "Dette emnet er globalt fastsatt; det vil vises på toppen av alle lister" pinned: title: "Fastsatt" help: "Dette emnet er fastsatt for deg; det vil vises i toppen av sin kategori" @@ -1438,8 +1445,8 @@ nb_NO: with_topics: "%{filter} emner" with_category: "%{filter} %{category} emner" latest: - title: - zero: "Siste" + title: "Siste" + title_with_count: one: "Siste (1)" other: "Siste ({{count}})" help: "de sist oppdaterte emnene" @@ -1457,21 +1464,21 @@ nb_NO: title_in: "Kategori - {{categoryName}}" help: "alle emner sortert etter kategori" unread: - title: - zero: "Ulest" + title: "Ulest" + title_with_count: one: "Ulest (1)" other: "Ulest ({{count}})" help: "emner du for øyeblikket følger eller sporer med uleste innlegg" lower_title_with_count: - one: "919b31115946cb42960c0b286e3d5fae_tr" - other: "d17f3dd2f82a108995bff08a2571e0ca_tr" + one: "1 ulest" + other: "{{count}} uleste" new: lower_title_with_count: one: "1 ny" other: "{{count}} nye" lower_title: "ny" - title: - zero: "Nye" + title: "Ny" + title_with_count: one: "Nye (1)" other: "Nye ({{count}})" help: "emner opprettet de siste dagene" @@ -1482,8 +1489,8 @@ nb_NO: title: "Bokmerker" help: "emner du har bokmerket" category: - title: - zero: "{{categoryName}}" + title: "{{categoryName}}" + title_with_count: one: "{{categoryName}} (1)" other: "{{categoryName}} ({{count}})" help: "siste emner i {{categoryName}}-kategorien" @@ -1727,11 +1734,9 @@ nb_NO: is_disabled: "Gjenoppretting er deaktivert i nettstedsinnstillingene." label: "Gjenooprett" title: "Gjenopprett sikkerhetskopien" - confirm: "Er du sikker på at du vil gjenopprette denne sikkerhetskopien?" rollback: label: "Gjenopprett" title: "Gjenopprett databasen til en tidligere fungerende tilstand" - confirm: "Er du sikker på at du vil gjenopprette databasen til en tidligere fungerende tilstand?" export_csv: user_archive_confirm: "Er du sikker på at du vil laste ned innleggene dine?" success: "Eksportering iverksatt. Du vil bli varslet med en melding når prosessen er fullført." @@ -1782,6 +1787,8 @@ nb_NO: color: "Farge" opacity: "Opacity" copy: "Kopier" + email_templates: + subject: "Emne" css_html: title: "CSS/HTML" long_title: "CSS og HTML-tilpasninger" @@ -1826,13 +1833,9 @@ nb_NO: love: name: 'liker' description: "Fargen til Liker-knappen." - wiki: - name: 'wiki' - description: "Grunnfarge brukt for bakgrunnen i wiki-poster." email: - title: "E-post" settings: "Instillinger" - all: "Alle" + preview_digest: "Forhåndsvis Oppsummering" sending_test: "Sender e-post for testing" error: "ERROR - %{server_error}" test_error: "Det oppsto et problem ved utsendelse av e-post for testing. Sjekk e-postinnstillinger nøye, sjekk at verten ikke blokkerer e-posttilkoblinger, og prøv igjen." @@ -1847,7 +1850,6 @@ nb_NO: send_test: "Send e-post for testing" sent_test: "sendt!" delivery_method: "Leveringsmetode" - preview_digest: "Forhåndsvis Oppsummering" refresh: "Refresh" format: "Format" html: "html" @@ -1855,6 +1857,12 @@ nb_NO: last_seen_user: "Sist Sett Bruker:" reply_key: "Svar ID" skipped_reason: "Hopp over grunn" + incoming_emails: + from_address: "Fra" + subject: "Emne" + error: "Feil" + filters: + error_placeholder: "Feil" logs: none: "Ingen logger funnet" filters: @@ -1873,6 +1881,7 @@ nb_NO: ip_address: "IP" topic_id: "Emne ID" post_id: "Innlegg ID" + category_id: "Kategori ID" delete: 'Slett' edit: 'Endre' save: 'Lagre' @@ -1913,6 +1922,8 @@ nb_NO: impersonate: "overta brukerkonto" anonymize_user: "anonymiser bruker" roll_up: "rull opp IP-blokker" + delete_category: "slett kategori" + create_category: "opprett kategori" screened_emails: title: "Kontrollerte e-poster" description: "Når noen forsøker å lage en ny konto, vil de følgende e-postadressene bli sjekket, og registreringen vil bli blokkert, eller en annen handling vil bli utført." @@ -1978,9 +1989,6 @@ nb_NO: pending: 'Brukere som venter på evaluering' newuser: 'Brukere med tillitsnivå 0 (Ny Bruker)' basic: 'Brukere med tillitsnivå 1 (Juniormedlem)' - regular: 'Brukere med tillitsnivå 2 (Medlem)' - leader: 'Brukere med tillitsnivå 3 (Aktivt medlem)' - elder: 'Brukere med tillitsnivå 4 (Leder)' staff: "Stab" admins: 'Admins' moderators: 'Moderatorer' @@ -2090,7 +2098,6 @@ nb_NO: unlock_trust_level: "Lås opp tillitsnivå" tl3_requirements: title: "Krav til tillitsnivå 3" - table_title: "De siste 100 dagene:" value_heading: "Verdi" requirement_heading: "Krav" visits: "Besøk" @@ -2151,7 +2158,6 @@ nb_NO: confirm: 'Bekreftelse' dropdown: "Nedtrekk" site_text: - none: "Velg en innholdstype for å starte redigering." title: 'Tekstinnhold' site_settings: show_overriden: 'Bare vis overstyrte' @@ -2239,10 +2245,6 @@ nb_NO: bad_count_warning: header: "ADVARSEL!" text: "Det er manglende grant samples. Dette skjer når badge søket returnerer bruker-IDer eller post IDer som ikke eksisterer. Dette kan føre til uventede resultater senere - vennligst dobbeltsjekk søket ditt." - grant_count: - zero: "Ingen merker klare for tildeling" - one: "1 merke kan bli tildelt." - other: "%{count} merker kan bli tildelt." sample: "Eksempel:" grant: with: %{username} @@ -2324,8 +2326,6 @@ nb_NO: mark_watching: 'm, w Følg emne' badges: title: Merker - allow_title: "kan bli brukt som tittel" - multiple_grant: "kan bli belønnet mange ganger" badge_count: one: "1 Merke" other: "%{count} Merker" @@ -2348,85 +2348,3 @@ nb_NO: name: Annet posting: name: Posting - badge: - editor: - name: Redaktør - description: Første redigering av innlegg - basic_user: - name: Basic - description: Innvilget alle essensielle forumfunksjoner - member: - name: Medlem - description: Innvilget invitasjonsmulighet - regular: - name: Aktivt Medlem - description: Innvilget omkategorisering, endring av navn, fulgte lenker og salong - leader: - name: Leder - description: Innvilget global redigering, fastsetting, lukking, arkivering, splitting og sammenslåing - welcome: - name: Velkommen - description: Fått en liker - autobiographer: - name: Selvbiograf - description: Fylte ut informasjon om brukerprofilen - anniversary: - name: Jubileum - description: Aktivt medlem i over ett år, postet minst en gang - nice_post: - name: Fint innlegg - description: Fått 10 liker for et innlegg. Dette merket kan bli tildelt flere ganger - good_post: - name: Bra innlegg - description: Fått 25 liker for et innlegg. Dette merket kan bli tildelt flere ganger - great_post: - name: Flott Innlegg - description: Fått 50 liker for et innlegg. Dette merket kan bli tildelt flere ganger - nice_topic: - name: Fint emne - description: Fått 10 liker for et emne. Dette merket kan bli tildelt flere ganger - good_topic: - name: Godt emne - description: Fått 25 liker for et emne. Dette merket kan bli tildelt flere ganger - great_topic: - name: Fantastisk emne - description: Fått 50 liker for et emne. Dette merket kan bli tildelt flere ganger - nice_share: - name: Fin deling - description: Delt et innlegg med 25 unike besøkende - good_share: - name: God deling - description: Delt et innlegg med 300 unike besøkende - great_share: - name: Fantastisk Deling - description: Delt et innlegg med 1000 unike besøkende - first_like: - name: Første liker - description: Likt et innlegg - first_flag: - name: Første rapportering - description: Rapportert et innlegg - promoter: - name: Forfrem - description: Inviterte en bruker - campaigner: - name: Campaigner - description: Inviterte 3 medlemmer (tillitsnivå 1) - champion: - name: Mester - description: Inviterte 5 medlemmer (tillitsnivå 2) - first_share: - name: Første deling - description: Delt et innlegg - first_link: - name: Første lenke - description: Link til et eksisterende emne - first_quote: - name: Første sitat - description: Sitert en bruker - read_guidelines: - name: Leste retningslinjene - description: Lest forumets retningslinjer - reader: - name: Leser - description: Leste hvert innlegg i et emne med mer enn 100 innlegg diff --git a/config/locales/client.nl.yml b/config/locales/client.nl.yml index 7474d3ec9d6..509ec503aeb 100644 --- a/config/locales/client.nl.yml +++ b/config/locales/client.nl.yml @@ -100,6 +100,8 @@ nl: x_years: one: "1 jaar later" other: "%{count} jaren later" + previous_month: 'Vorige Maand' + next_month: 'Volgende Maand' share: topic: 'deel een link naar deze topic' post: 'bericht #%{postNumber}' @@ -110,6 +112,8 @@ nl: email: 'deel deze link via e-mail' action_codes: split_topic: "deze topic splitsen %{when}" + invited_user: "uitgenodigd %{who} %{when}" + removed_user: "verwijderd %{who} %{when}" autoclosed: enabled: 'gesloten %{when}' disabled: 'geopend %{when}' @@ -130,6 +134,19 @@ nl: disabled: 'niet zichtbaar %{when}' topic_admin_menu: "Adminacties voor topic" emails_are_disabled: "Alle uitgaande e-mails zijn uitgeschakeld door een beheerder. Geen enkele vorm van e-mail notificatie wordt verstuurd." + s3: + regions: + us_east_1: "US Oost (N. Virginia)" + us_west_1: "US West (N. California)" + us_west_2: "US West (Oregon)" + us_gov_west_1: "AWS GovCloud (US)" + eu_west_1: "EU (Ierland)" + eu_central_1: "EU (Frankfurt)" + ap_southeast_1: "Azië Pacific (Singapore)" + ap_southeast_2: "Azië Pacific (Sydney)" + ap_northeast_1: "Azië Pacific (Tokyo)" + ap_northeast_2: "Azië Pacific (Seoul)" + sa_east_1: "Zuid Amerika (Sao Paulo)" edit: 'bewerk de titel en categorie van deze topic' not_implemented: "Die functie is helaas nog niet beschikbaar. Sorry!" no_value: "Nee" @@ -162,6 +179,8 @@ nl: more: "Meer" less: "Minder" never: "nooit" + every_30_minutes: "elke dertig minuten" + every_hour: "elk uur" daily: "dagelijks" weekly: "wekelijks" every_two_weeks: "elke twee weken" @@ -173,6 +192,7 @@ nl: other: "{{count}} tekens" suggested_topics: title: "Aanbevolen topics" + pm_title: "Voorgestelde Berichten" about: simple_title: "Over" title: "Over %{title}" @@ -220,7 +240,7 @@ nl: saved: "Opgeslagen!" upload: "Upload" uploading: "Uploaden..." - uploading_filename: "Uploaden {{filename}}..." + uploading_filename: "Uploaden van {{filename}}..." uploaded: "Geupload!" enable: "Inschakelen" disable: "Uitschakelen" @@ -228,7 +248,7 @@ nl: revert: "Zet terug" failed: "Mislukt" switch_to_anon: "Anonieme modus" - switch_from_anon: "Anoniem afsluiten" + switch_from_anon: "Niet meer anoniem zijn" banner: close: "Verberg deze banner." edit: "Wijzig deze banner >>" @@ -251,7 +271,7 @@ nl: one: "Voor deze topic staat 1 bericht klaar om goedgekeurd te worden" other: "Voor dit topic staan {{count}} berichten klaar om goedgekeurd te worden" confirm: "Sla wijzigingen op" - delete_prompt: "Weet je zeker dat je %{username} wilt verwijderen? Dit zal alle zijn berichten verwijderen en zal zijn email en ip-adres blokkeren." + delete_prompt: "Weet je zeker dat je %{username} wilt verwijderen? Dit verwijdert al hun post en blokkeert hun IP adres en E-mail adres." approval: title: "Bericht vereist goedkeuring" description: "We hebben je nieuwe bericht ontvangen, maar deze moet eerst goedgekeurd worden door een moderator voordat deze zichtbaar wordt. Wees a.u.b. geduldig." @@ -294,6 +314,15 @@ nl: one: "1 lid" other: "%{count} leden" groups: + empty: + posts: "Er zijn geen posts van leden van deze groep." + members: "Er zijn geen leden in deze groep." + mentions: "Deze groep wordt niet benoemd." + messages: "Er zijn geen berichten voor deze groep." + topics: "Er is geen onderwerp door de leden van deze groep." + add: "Voeg toe" + selector_placeholder: "Voeg leden toe" + owner: "eigenaar" visible: "Groep is zichtbaar voor alle gebruikers" title: one: "groep" @@ -301,7 +330,7 @@ nl: members: "Leden" posts: "Berichten" alias_levels: - title: "Wie kan deze groep als alias gebruiken?" + title: "Wie kan deze groep een bericht sturen en taggen?" nobody: "Niemand" only_admins: "Alleen admins" mods_and_admins: "Alleen moderatoren and admins" @@ -310,6 +339,19 @@ nl: trust_levels: title: "Trustlevel dat automatisch wordt toegekend aan nieuwe gebruikers:" none: "Geen" + notifications: + watching: + title: "Kijken naar" + description: "Je krijgt een notificatie bij elke nieuwe post of bericht, en het aantal nieuwe reacties wordt weergeven." + tracking: + title: "Volgen" + description: "Je krijgt een notificatie wanneer iemand jouw @name noemt of reageert, en het aantal nieuwe reacties wordt weergeven." + regular: + title: "Normaal" + description: "Je krijgt een notificatie wanneer iemand jouw @name noemt of reageert." + muted: + title: "Gedempt" + description: "Je krijgt geen notificatie over nieuwe onderwerpen in deze groep." user_action_groups: '1': "Likes gegeven" '2': "Likes ontvangen" @@ -319,7 +361,6 @@ nl: '6': "Reacties" '7': "Genoemd" '9': "Citaten" - '10': "Met ster" '11': "Wijzigingen" '12': "Verzonden items" '13': "Inbox" @@ -329,11 +370,13 @@ nl: all_subcategories: "alle" no_subcategory: "geen" category: "Categorie" + category_list: "Geef categorieën lijst weer." reorder: - title: "Categorieën Herschikken " + title: "Categorieën herschikken " title_long: "Reorganiseer de categorielijst" - fix_order: "Posities fixen" - save: "Volgorde Opslaan" + fix_order: "Posities vastzetten" + fix_order_tooltip: "Niet alle categorien hebben een unieke nummer, dit resulteert soms in onverwachte resultaten." + save: "Volgorde opslaan" apply_all: "Toepassen" position: "Positie" posts: "Berichten" @@ -384,16 +427,15 @@ nl: invited_by: "Uitgenodigd door" trust_level: "Trustlevel" notifications: "Notificaties" + statistics: "Statistieken " desktop_notifications: - label: "Desktop Notificaties" + label: "Desktopnotificaties" not_supported: "Notificaties worden niet ondersteund door deze browser. Sorry." - perm_default: "Notificaties Aanzetten" - perm_denied_btn: "Toestemming Geweigerd" - perm_denied_expl: "Gebruik van notificaties staat niet ingeschakeld. Gebruik je browser om notificaties toe te staan, klik vervolgens op de knop. (Desktop: Het meest linkse icoon op de adresbalk. Mobiel: 'Site Info' )" - disable: "Notificaties Uitschakelen" - currently_enabled: "(momenteel ingeschakeld)" - enable: "Notificaties Inschakelen" - currently_disabled: "(momenteel uitgeschakeld)" + perm_default: "Notificaties aanzetten" + perm_denied_btn: "Toestemming geweigerd" + perm_denied_expl: "Je blokkeert notificaties. Sta deze toe in je browser instellingen." + disable: "Notificaties uitschakelen" + enable: "Notificaties inschakelen" each_browser_note: "Let op: Je moet deze optie instellen voor elke browser die je gebruikt." dismiss_notifications: "Markeer alles als gelezen" dismiss_notifications_tooltip: "Markeer alle ongelezen berichten als gelezen" @@ -417,7 +459,7 @@ nl: tracked_categories: "Gevolgd" tracked_categories_instructions: "Je volgt automatisch alle nieuwe topics in deze categorie. Naast het topic wordt het aantal nieuwe berichten weergegeven." muted_categories: "Genegeerd" - muted_categories_instructions: "Je zal geen notificaties krijgen over nieuwe topics en berichten in deze categoriën en ze verschijnen niet op je ongelezen overzicht." + muted_categories_instructions: "Je zal geen notificaties krijgen over nieuwe onderwerpen en berichten in deze categorieën en ze verschijnen niet op je ongelezen overzicht." delete_account: "Verwijder mijn account" delete_account_confirm: "Weet je zeker dat je je account definitief wil verwijderen? Dit kan niet meer ongedaan gemaakt worden!" deleted_yourself: "Je account is verwijderd." @@ -427,6 +469,8 @@ nl: users: "Leden" muted_users: "Negeren" muted_users_instructions: "Negeer alle meldingen van deze leden." + muted_topics_link: "Toon gedempte topics." + automatically_unpin_topics: "Topics automatisch lospinnen als ik het laatste bericht bereik." staff_counters: flags_given: "behulpzame markeringen" flagged_posts: "gemarkeerde berichten" @@ -435,8 +479,15 @@ nl: warnings_received: "waarschuwingen" messages: all: "Alle" - mine: "Mijn" - unread: "Ongelezen" + inbox: "Postvak In" + sent: "Verzend" + archive: "Archiveren" + groups: "Mijn Groepen" + bulk_select: "Selecteer berichten" + move_to_inbox: "Verplaats naar Postvak In" + move_to_archive: "Archiveren" + failed_to_move: "Het is niet gelukt om het geselecteerde bericht te verplaatsen (Waarschijnlijk is de internetconnectie verbroken)" + select_all: "Selecteer Alles" change_password: success: "(e-mail verzonden)" in_progress: "(e-mail wordt verzonden)" @@ -481,9 +532,9 @@ nl: ok: "We sturen een e-mail ter bevestiging" invalid: "Vul een geldig e-mailadres in " authenticated: "Je e-mail is geauthenticeerd door {{provider}}" + frequency_immediately: "We zullen je onmiddellijk e-mailen als je hetgeen waarover we je e-mailen niet gelezen hebt." frequency: - zero: "We zullen je onmiddelijk e-mailen als je hetgeen waarover we je e-mailen niet gelezen hebt." - one: "We zullen je alleen maar e-mailen als we je de laatste paar minuten niet gezien hebben." + one: "We zullen je alleen maar e-mailen als we je de laatste {{count}} minuten niet gezien hebben." other: "We zullen je alleen maar e-mailen als we je de laatste {{count}} minuten niet gezien hebben." name: title: "Naam" @@ -520,12 +571,25 @@ nl: title: "Badge van gebruikersprofiel" website: "Website" email_settings: "E-mail" + like_notification_frequency: + always: "Altijd" + first_time_and_daily: "De eerste keer dat iemand een bericht leuk vond en dagelijks" + first_time: "De eerste keer dat iemand een bericht leuk vond" + never: "Nooit" + email_previous_replies: + title: "Voeg de vorige reacties bij onderaan de emails" + unless_emailed: "tenzij eerder verzonden" + always: "altijd" + never: "nooit" email_digests: title: "Stuur me een mail met de laatste updates wanneer ik de site niet bezoek:" + every_30_minutes: "elke dertig minuten" + every_hour: "elk uur" daily: "dagelijks" every_three_days: "elke drie dagen" weekly: "wekelijks" every_two_weeks: "elke twee weken" + email_in_reply_to: "Voeg een deel van de reactie toe in de emails" email_direct: "Stuur me een e-mail wanneer iemand me citeert, reageert op mijn bericht, mijn @gebruikersnaam noemt of uitnodigt voor een topic." email_private_messages: "Ontvang een mail wanneer iemand je een bericht heeft gestuurd." email_always: "Stuur me e-mail notificaties, zelfs als ik ben actief op de site" @@ -556,7 +620,9 @@ nl: user: "Uitgenodigd lid" sent: "Verzonden" none: "Er zijn geen uitstaande uitnodigingen om weer te geven." - truncated: "De eerste {{count}} uitnodigingen." + truncated: + one: "Tonen van de eerste uitnodiging." + other: "Tonen van de eerste {{count}} uitnodigingen." redeemed: "Verzilverde uitnodigingen" redeemed_tab: "Verzilverd" redeemed_tab_with_count: "Verzilverd ({{count}})" @@ -591,6 +657,15 @@ nl: same_as_email: "Je wachtwoord is hetzelfde als je e-mail." ok: "Je wachtwoord ziet er goed uit." instructions: "Minimaal %{count} tekens." + summary: + title: "Overzicht " + stats: "Statistieken " + top_replies: "Beste Reacties" + more_replies: "Meer Antwoorden" + top_topics: "Top Topics" + more_topics: "Meer Topics" + top_badges: "Top Badges" + more_badges: "Meer Badges" associated_accounts: "Logins" ip_address: title: "Laatste IP-adres" @@ -616,11 +691,13 @@ nl: server: "Serverfout" forbidden: "Toegang geweigerd" unknown: "Fout" + not_found: "Pagina niet gevonden" desc: network: "Controleer je verbinding." network_fixed: "Het lijkt er op dat het terug is" server: "Fout code: {{status}}" forbidden: "Je hebt geen toestemming om dit te bekijken." + not_found: "Oeps, de applicatie heeft geprobeerd een URL te laden die niet bestaat." unknown: "Er is iets mis gegaan" buttons: back: "Ga terug" @@ -631,8 +708,9 @@ nl: logout: "Je bent uitgelogd." refresh: "Ververs" read_only_mode: - enabled: "Alleen-lezen modus is aangezet. Je kan de site bekijken, maar interacties werken mogelijk niet." + enabled: "De site is in alleen lezen modus. Interactie is niet mogelijk." login_disabled: "Zolang de site in read-only modus is, kan er niet ingelogd worden." + logout_disabled: "Uitloggen is uitgeschakeld als de site op alleen lezen staat." too_few_topics_and_posts_notice: "Laten we de discussie starten! Er zijn al %{currentTopics} / %{requiredTopics} topics en %{currentPosts} / %{requiredPosts} berichten. Nieuwe bezoekers hebben conversaties nodig om te lezen en reageren." too_few_topics_notice: "Laten we de discussie starten! Er zijn al %{currentTopics} / %{requiredTopics} topics en %{currentPosts} / %{requiredPosts} berichten. Nieuwe bezoekers hebben conversaties nodig om te lezen en reageren." too_few_posts_notice: "Laten we de discussie starten!. Er zijn al %{currentPosts} / %{requiredPosts} posts Nieuwe bezoekers hebben conversaties nodig om te lezen en reageren." @@ -655,12 +733,14 @@ nl: signup_cta: sign_up: "Aanmelden" hide_session: "Herrinner me morgen" - hide_forever: "Nee bedankt" + hide_forever: "nee dankje" hidden_for_session: "Ok, ik vraag het je morgen. Je kunt altijd 'Log in' gebruiken om in te loggen." + intro: "Hey! :heart_eyes: Praat mee in deze discussie, meld je aan met een account" + value_prop: "Wanneer je een account aangemaakt hebt, herinneren deze wat je gelezen hebt, zodat je direct door kan lezen vanaf waar je gestopt bent. Je krijgt ook notificaties, hier en via email, wanneer nieuwe posts gemaakt zijn. En je kan ook nog posts liken :heartbeat:" summary: enabled_description: "Je leest een samenvatting van dit topic: alleen de meeste interessante berichten zoals bepaald door de community. " - description: "Er zijn {{count}} reacties." - description_time: "Er zijn {{count}} reacties met een gemiddelde leestijd van {{readingTime}} minuten." + description: "Er zijn {{replyCount}} reacties." + description_time: "Er zijn {{replyCount}} reacties met een geschatte leestijd van{{readingTime}} minuten." enable: 'Samenvatting Topic' disable: 'Alle berichten' deleted_filter: @@ -714,6 +794,9 @@ nl: admin_not_allowed_from_ip_address: "Je kan jezelf niet aanmelden vanaf dat IP-adres." resend_activation_email: "Klik hier om de activatiemail opnieuw te ontvangen." sent_activation_email_again: "We hebben een nieuwe activatiemail gestuurd naar {{currentEmail}}. Het kan een aantal minuten duren voor deze aan komt. Check ook je spamfolder." + to_continue: "Log a.u.b. in" + preferences: "Je moet ingelogd zijn om je gebruikersinstellingen te wijzigen." + forgot: "Ik kan me de details van mijn gebruikersaccount niet herinneren." google: title: "met Google" message: "Inloggen met een Google-account (zorg ervoor dat je popup blocker uit staat)" @@ -723,6 +806,9 @@ nl: twitter: title: "met Twitter" message: "Inloggen met een Twitteraccount (zorg ervoor dat je popup blocker uit staat)" + instagram: + title: "met Instagram" + message: "Inloggen met een Instagram-account (zorg ervoor dat je pop-upblocker uitstaat)." facebook: title: "met Facebook" message: "Inloggen met een Facebookaccount (zorg ervoor dat je popup blocker uit staat)" @@ -736,15 +822,24 @@ nl: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + emoji: "Emoji :)" + more_emoji: "meer..." + options: "Opties" + whisper: "Fluister" add_warning: "Dit is een officiële waarschuwing." + toggle_whisper: "Schakel Fluistermode" posting_not_on_topic: "In welke topic wil je je antwoord plaatsen?" saving_draft_tip: "opslaan..." saved_draft_tip: "opgeslagen" saved_local_draft_tip: "lokaal opgeslagen" similar_topics: "Jouw topic lijkt op..." drafts_offline: "concepten offline" + group_mentioned: "Door het gebruik van {{group}}, sta je op het punt {{count}} op de hoogte te brengen." error: title_missing: "Titel is verplicht" title_too_short: "Titel moet uit minstens {{min}} tekens bestaan" @@ -765,8 +860,9 @@ nl: title_placeholder: "Waar gaat de discussie over in één korte zin?" edit_reason_placeholder: "vanwaar de wijziging?" show_edit_reason: "(geef een reden)" + reply_placeholder: "Typ hier. Gebruik Markdown, BBCode, of HTML om op te maken. Sleep of plak afbeeldingen." view_new_post: "Bekijk je nieuwe bericht." - saving: "Opslaan..." + saving: "Opslaan" saved: "Opgeslagen!" saved_draft: "Bezig met conceptbericht. Selecteer om door te gaan." uploading: "Uploaden..." @@ -781,6 +877,7 @@ nl: link_description: "geef hier een omschrijving" link_dialog_title: "Voeg weblink toe" link_optional_text: "optionele titel" + link_placeholder: "http://example.com \"optional text\"" quote_title: "Citaat" quote_text: "Citaat" code_title: "Opgemaakte tekst" @@ -793,10 +890,11 @@ nl: heading_title: "Kop" heading_text: "Kop" hr_title: "Horizontale lijn" - undo_title: "Herstel" - redo_title: "Opnieuw" help: "Uitleg over Markdown" toggler: "verberg of toon de editor" + modal_ok: "OK" + modal_cancel: "Annuleer" + cant_send_pm: "Sorry, je kan geen berichten sturen naar %{username}." admin_options_title: "Optionele stafinstellingen voor deze topic" auto_close: label: "Tijd waarna topic automatisch wordt gesloten:" @@ -813,9 +911,9 @@ nl: more: "bekijk oudere notificaties" total_flagged: "aantal gemarkeerde berichten" mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -825,6 +923,9 @@ nl: moved_post: "
{{username}} verplaatste {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
'{{description}}' ontvangen
" + group_message_summary: + one: "
{{count}} berichten in jouw {{group_name}} inbox
" + other: "
{{count}} berichten in jouw {{group_name}} inbox
" alt: mentioned: "Genoemd door" quoted: "Gequoot door" @@ -839,8 +940,10 @@ nl: moved_post: "Je bericht is verplaatst door" linked: "Link naar je bericht" granted_badge: "Badge toegekend" + group_message_summary: "Berichten in groep Postvak In" popup: mentioned: '{{username}} heeft je genoemd in "{{topic}}" - {{site_title}}' + group_mentioned: '{{username}} noemde jouw naam in "{{topic}}" - {{site_title}}' quoted: '{{username}} heeft je geciteerd in "{{topic}}" - {{site_title}}' replied: '{{username}} heeft je beantwoord in "{{topic}}" - {{site_title}}' posted: '{{username}} heeft een bericht geplaats in "{{topic}}" - {{site_title}}' @@ -852,10 +955,11 @@ nl: from_my_computer: "Vanaf mijn apparaat" from_the_web: "Vanaf het web" remote_tip: "link naar afbeelding" - remote_tip_with_attachments: "vul een url in van een afbeelding of bestand (toegestane extensies: {{authorized_extensions}})." + remote_tip_with_attachments: "link naar afbeelding of bestand {{authorized_extensions}}" local_tip: "selecteer afbeeldingen van uw apparaat" - local_tip_with_attachments: "Selecteer afbeeldingen of bestanden van je apparaat ({{authorized_extensions}})" + local_tip_with_attachments: "selecteer afbeeldingen of bestanden vanaf je apparaat {{authorized_extensions}}" hint: "(je kan afbeeldingen ook slepen in de editor om deze te uploaden)" + hint_for_supported_browsers: "je kunt ook afbeeldingen slepen of plakken in de editor" uploading: "Uploaden" select_file: "Selecteer een bestand" image_link: "de link waar je afbeelding naar verwijst" @@ -867,6 +971,9 @@ nl: most_liked: "Meest geliked" select_all: "Selecteer Alles" clear_all: "Wis Alles" + result_count: + one: "1 resultaat voor \"{{term}}\"" + other: "{{count}} resultaat voor \"{{term}}\"" title: "zoek naar topics, berichten, gebruikers of categorieën" no_results: "Geen resultaten gevonden." no_more_results: "Geen resultaten meer gevonden." @@ -885,12 +992,14 @@ nl: current_user: 'ga naar je gebruikerspagina' topics: bulk: + unlist_topics: "Topics van lijst halen" reset_read: "markeer als ongelezen" delete: "Verwijder topics" - dismiss_posts: "Verwijder berichten" - dismiss_posts_tooltip: "Reset de teller voor ongelezen berichten voor deze topics, maar houd ze wel in mijn lijst van ongelezen topics als er nieuwe berichten worden toegevoegd" - dismiss_topics: "Verwijder topics" - dismiss_topics_tooltip: "Laat deze topics niet meer in mijn lijst van ongelezen topics zien wanneer er nieuwe berichten worden geplaatst." + dismiss: "Afwijzen" + dismiss_read: "Alle ongelezen afwijzen" + dismiss_button: "Afwijzen..." + dismiss_tooltip: "Alleen nieuwe posts afwijzen of stop het volgen van topics" + also_dismiss_topics: "Stop het volgen van deze topics, zodat deze nooit meer als ongelezen worden weergegeven. " dismiss_new: "markeer nieuwe berichten als gelezen" toggle: "toggle bulkselectie van topics" actions: "Bulk Acties" @@ -914,8 +1023,8 @@ nl: top: "Er zijn geen top-topics." search: "Er zijn geen zoekresultaten gevonden." educate: - new: '
Je nieuwe topics verschijnen hier.
Standaard worden topics als nieuw beschouwd en tonen een nieuw indicator als ze gemaakt zijn in de afgelopen 2 dagen.
Je kan dit aanpassen in je voorkeuren.
' - unread: '
Je ongelezen topics verschijnen hier.
Standaard worden topics als ongelezen beschouwd en tonen een ongelezen aantal 1 als je:
Of als je het topic expliciet hebt gemarkeerd als Te Volgen via de notificatieknop onder aan de pagina van elk topic.
Je kan dit aanpassen in je instellingen.
' + new: '
Je nieuwe topics verschijnen hier.
Standaard worden topics als nieuw weergegeven en als nieuw weergegeven als deze binnen de laatste 2 dagen zijn aangemaakt.
Visit your voorkeuren om dit te veranderen.
' + unread: '
Je ongelezen berichten verschijnen hier.
Standaard worden topics als nieuw beschouwd en zullen als ongelezen worden weergegeven1 als je:
Of als je het topic als volgen hebt gemarkeerd of hebt bekeken via het notificatie onderaan elk bericht.
Bezoek jouwvoorkeuren om dit te veranderen
' bottom: latest: "Er zijn geen recente topics." hot: "Er zijn geen polulaire topics meer." @@ -935,6 +1044,12 @@ nl: create: 'Nieuw topic' create_long: 'Maak een nieuw topic' private_message: 'Stuur een bericht' + archive_message: + help: 'Verplaats berichten naar jouw archief ' + title: 'Archiveren ' + move_to_inbox: + title: 'Verplaats naar Postvak In' + help: 'Verplaats het bericht terug naar Postvak in' list: 'Topics' new: 'nieuw topic' unread: 'ongelezen' @@ -985,6 +1100,7 @@ nl: auto_close_title: 'Instellingen voor automatisch sluiten' auto_close_save: "Opslaan" auto_close_remove: "Sluit deze topic niet automatisch" + auto_close_immediate: "De laatste post in dit topic is al %{hours} uur oud, dus dit topic wordt meteen gesloten." progress: title: voortgang van topic go_top: "bovenaan" @@ -1034,7 +1150,7 @@ nl: description: "Je zal geen enkele notificatie ontvangen over dit bericht." muted: title: "Negeren" - description: "Je zal geen notificaties krijgen van dit topic en het zal ook niet verschijnen in je lijst ongelezen topics." + description: "Je zult nooit op de hoogte worden gebracht over dit topic, en het zal niet verschijnen in Nieuwste." actions: recover: "Herstel topic" delete: "Verwijder topic" @@ -1076,25 +1192,24 @@ nl: unpin_until: "Zet deze topic niet langer bovenaan in de {{categoryLink}} categorie of wacht tot %{until}." pin_note: "Gebruikers kunnen het vastpinnen voor dit topic voor zichzelf ongedaan maken." pin_validation: "Een datum is vereist om deze topic vast te pinnen." + not_pinned: "Er zijn geen topics vastgepind in {{categoryLink}}." already_pinned: - zero: "Er zijn geen topics vastgepind in {{categoryLink}}." - one: "Topics welke vastgepind zijn in {{categoryLink}}: 1." + one: "Topics welke vastgepind zijn in {{categoryLink}}: {{count}}" other: "Topics welke vastgepind zijn in {{categoryLink}}: {{count}}." pin_globally: "Zet deze topic bovenaan in alle topic lijsten tot" confirm_pin_globally: "Je hebt al {{count}} globaal vastgepinde topics. Teveel vastgepinde topics kunnen storend zijn voor nieuwe en anonieme gebruikers. Weet je zeker dat je nog een topic globaal wilt vastpinnen?" unpin_globally: "Zorg ervoor dat dit topic niet langer bovenaan alle topic lijsten komt." unpin_globally_until: "Zet deze topic niet langer bovenaan in alle topic lijsten of wacht tot %{until}." global_pin_note: "Gebruikers kunnen dit topic voor zichzelf ontpinnen." + not_pinned_globally: "Er zijn geen globaal vastgepinde topics." already_pinned_globally: - zero: "Er zijn geen globaal vastgepinde topics." - one: "Topics welke globaal vastgepind zijn: 1." + one: "Topics welke globaal vastgepind zijn: {{count}}" other: "Topics welke globaal vastgepind zijn: {{count}}." make_banner: "Zorg ervoor dat dit topic een banner wordt welke bovenaan alle pagina's komt." remove_banner: "Verwijder de banner die bovenaan alle pagina's staat." banner_note: "Gebruikers kunnen de banner negeren door deze te sluiten. Er kan maar een topic gebannered zijn." - already_banner: - zero: "Er is geen banner topic." - one: "Er is op het ogenblik een banner topic." + no_banner_exists: "Er is geen banner topic." + banner_exists: "Er is op het ogenblik een banner topic." inviting: "Uitnodigen..." automatically_add_to_groups_optional: "Deze uitnodiging geeft ook toegang tot de volgende groepen: (optioneel, alleen voor beheerders)" automatically_add_to_groups_required: "Deze uitnodiging geeft ook toegang tot de volgende groepen: (Verplicht, alleen voor beheerders)" @@ -1106,6 +1221,7 @@ nl: success: "Deze gebruiker is uitgenodigd om in de conversatie deel te nemen." error: "Sorry, er is iets misgegaan bij het uitnodigen van deze persoon" group_name: "groepsnaam" + controls: "Topic Controls" invite_reply: title: 'Uitnodigen' username_placeholder: "gebruikersnaam" @@ -1200,9 +1316,9 @@ nl: has_likes_title: one: "iemand vind dit bericht leuk" other: "{{count}} mensen vinden dit bericht leuk" + has_likes_title_only_you: "Je vind dit bericht leuk" has_likes_title_you: - zero: "Je vind dit bericht leuk" - one: "jij en 1 ander persoon vinden dit leuk" + one: "jij en 1 anderen vinden dit leuk" other: "jij en {{count}} anderen vinden dit leuk" errors: create: "Sorry, er is iets misgegaan bij het plaatsen van je bericht. Probeer het nog eens." @@ -1221,8 +1337,9 @@ nl: no_value: "Nee, behouden" yes_value: "Ja, verwijderen" via_email: "dit bericht kwam binnen via e-mail" + whisper: "deze posts zijn alleen toegankelijk voor moderators" wiki: - about: "deze discussie is een wiki; normale gebruikers kunnen hem aanpassen" + about: "dit bericht is een wiki" archetypes: save: 'Bewaar instellingen' controls: @@ -1250,6 +1367,7 @@ nl: revert_to_regular: "Verwijder stafkleur" rebake: "Maak HTML opnieuw" unhide: "Toon" + change_owner: "Eigenaar wijzigen " actions: flag: 'Markeer' defer_flags: @@ -1271,17 +1389,14 @@ nl: like: "Vind het niet meer leuk" vote: "Stem niet meer" people: - off_topic: "{{icons}} markeerden dit als off-topic" - spam: "{{icons}} markeerden dit als spam" - spam_with_url: "{{icons}} markeerde dit als spam" - inappropriate: "{{icons}} markeerden dit als ongepast" - notify_moderators: "{{icons}} lichtte moderators in" - notify_moderators_with_url: "{{icons}} lichtte moderators in" - notify_user: "{{icons}} verstuurde een bericht" - notify_user_with_url: "{{icons}} verstuurde een bericht" - bookmark: "{{icons}} voegden dit toe aan hun bladwijzers" - like: "{{icons}} vinden dit leuk" - vote: "{{icons}} hebben hier op gestemd" + off_topic: "heeft dit als off-topic gemeld" + spam: "markeerde dit als spam" + inappropriate: "markeerde dit als ongepast" + notify_moderators: "lichtte moderators in" + notify_user: "Stuur een bericht" + bookmark: "bladwijzer deze" + like: "Vind dit leuk" + vote: "stemde voor dit" by_you: off_topic: "Jij markeerde dit als off-topic" spam: "Jij markeerde dit als spam" @@ -1341,10 +1456,6 @@ nl: vote: one: "Iemand heeft op dit bericht gestemd" other: "{{count}} Mensen hebben op dit bericht gestemd" - edits: - one: één bewerking - other: "{{count}} bewerkingen" - zero: geen bewerkingen delete: confirm: one: "Weet je zeker dat je dit bericht wil verwijderen?" @@ -1404,6 +1515,7 @@ nl: change_in_category_topic: "Wijzig omschrijving" already_used: 'Deze kleur is al in gebruik door een andere categorie' security: "Beveiliging" + special_warning: "Waarschuwing: Dee catogorie is een vooringestelde categorie en de beveiligingsinstellingen kunnen hierdoor niet bewerkt worden. Als u deze categorie niet wenst te gebruiken, verwijder deze of herbestem deze." images: "Afbeeldingen" auto_close_label: "Sluit topics automatisch na:" auto_close_units: "uren" @@ -1424,19 +1536,18 @@ nl: notifications: watching: title: "In de gaten houden" - description: "Je ziet automatisch alle nieuwe topics in deze categorieën. Je ontvangt notificaties bij nieuwe berichten en topics, het aantal nieuwe reacties wordt voor deze topics weergegeven." + description: "Je krijgt automatisch alle nieuwe topics in deze categorie te zien. Je ontvangt notificaties bij nieuwe berichten en topics, naast het topic wordt het aantal nieuwe berichten weergegeven. " tracking: title: "Volgen" - description: "Je volgt automatisch alle topics in deze categorieën. Het aantal nieuwe reacties wordt voor deze topics weergegeven." + description: "Je ziet automatisch alle nieuwe topics in deze categorieën. Je ontvangt notificaties wanneer iemand je @name noemt of reageert op jou." regular: - title: "Regulier" + title: "Normaal" description: "Je krijgt een notificatie als iemand je @naam noemt of reageert op een bericht van jou." muted: title: "Genegeerd" - description: "Je zal geen notificaties krijgen over nieuwe topics en berichten in deze categoriën en ze verschijnen niet op je ongelezen overzicht." + description: "Je zult nooit op de hoogte worden gebracht over nieuwe topics in deze categorie, en ze zullen niet verschijnen in Nieuwste." flagging: title: 'Bedankt voor het helpen beleefd houden van onze gemeenschap!' - private_reminder: 'vlaggen zijn privé, alleen zichtbaar voor de staf' action: 'Meld bericht' take_action: "Onderneem actie" notify_action: 'Bericht' @@ -1486,7 +1597,7 @@ nl: help: "Dit topic is niet langer vastgepind voor je en zal weer in de normale volgorde getoond worden" pinned_globally: title: "Globaal vastgepind" - help: "Deze topic is globaal vastgepind en zal bovenaan alle topiclijsten getoond worden" + help: "Deze topic is globaal vastgepind en zal bovenaan de lijsten top en nieuwste getoond worden." pinned: title: "Vastgepind" help: "Dit topic is vastgepind voor je en zal bovenaan de categorie getoond worden" @@ -1529,8 +1640,8 @@ nl: with_topics: "%{filter} topics" with_category: "%{filter} %{category} topics" latest: - title: - zero: "Laatste" + title: "Laatste" + title_with_count: one: "Laatste (1)" other: "Laatste ({{count}})" help: "topics met recente reacties" @@ -1548,8 +1659,8 @@ nl: title_in: "Categorie - {{categoryName}}" help: "alle topics gesorteerd op categorie" unread: - title: - zero: "Ongelezen" + title: "Ongelezen" + title_with_count: one: "Ongelezen (1)" other: "Ongelezen ({{count}})" help: "topics die je volgt of bijhoudt met ongelezen berichten" @@ -1558,13 +1669,13 @@ nl: other: "{{count}} ongelezen" new: lower_title_with_count: - one: "1 nieuwe" - other: "{{count}} nieuwe" + one: "1 nieuw" + other: "{{count}} nieuw" lower_title: "nieuw" - title: - zero: "Nieuw" + title: "Nieuw" + title_with_count: one: "Nieuw (1)" - other: "Nieuw ({{count}})" + other: "({{count}}) Nieuwe" help: "topics gemaakt in de afgelopen dagen" posted: title: "Mijn berichten" @@ -1573,8 +1684,8 @@ nl: title: "Bladwijzers" help: "topics waar je een bladwijzer aan toe hebt gevoegd" category: - title: - zero: "{{categoryName}}" + title: "{{categoryName}}" + title_with_count: one: "{{categoryName}} (1)" other: "{{categoryName}} ({{count}})" help: "recente topics in de categorie {{categoryName}}" @@ -1656,6 +1767,7 @@ nl: refresh_report: "Ververs Rapport" start_date: "Start datum" end_date: "Eind datum" + groups: "Alle groepen" commits: latest_changes: "Laatste wijzigingen: update regelmatig!" by: "door" @@ -1736,15 +1848,24 @@ nl: delete_confirm: "Verwijder deze groepen?" delete_failed: "Kan groep niet verwijderen. Als dit een automatische groep is, kan deze niet verwijderd worden." delete_member_confirm: "Verwijder '%{username}' van de '%{group'} groep?" + delete_owner_confirm: "Verwijder eigenaar privilege voor '% {username}'?" name: "Naam" add: "Voeg toe" add_members: "Voeg leden toe" custom: "Aangepast" + bulk_complete: "De gebruikers zijn toegevoegd aan de groep." + bulk: "Bulk toevoegen aan groep." + bulk_paste: "Plak een lijst van gebruikersnamen of e-mails, één per regel:" + bulk_select: "(selecteer een groep)" automatic: "Automatisch" automatic_membership_email_domains: "Gebruikers welke zich registeren met een email domein dat exact overeenkomt met de domeinen in deze lijst worden automatisch toegevoegd aan deze groep:" automatic_membership_retroactive: "Pas deze email domein regel toe op reeds geregistreerde gebruikers" default_title: "Standaard titel voor alle gebruikers in deze groep" primary_group: "Automatisch ingesteld als primaire groep" + group_owners: Eigenaren + add_owners: Eigenaren toevoegen + incoming_email: "Aangepaste inkomende email adressen " + incoming_email_placeholder: "Voer je email adres in" api: generate_master: "Genereer Master API Key" none: "Er zijn geen actieve API keys" @@ -1818,11 +1939,11 @@ nl: is_disabled: "Herstellen is uitgeschakeld in de instellingen." label: "Herstel" title: "Herstel van deze backup" - confirm: "Weet je zeker dat je van deze backup wil herstellen?" + confirm: "Weet je zeker dat je deze backup wilt terugzetten? " rollback: label: "Herstel" title: "Herstel de database naar de laatst werkende versie" - confirm: "Weet je zeker dat je de database wil herstellen naar de laatste versie?" + confirm: "Weet je zeker dat je de database wilt terugzetten naar de vorige staat?" export_csv: user_archive_confirm: "Weet je zeker dat je al je berichten wil downloaden?" success: "Exporteren is gestart, je zult gewaarschuwd worden als het proces is beeindigd." @@ -1873,6 +1994,14 @@ nl: color: "Kleur" opacity: "Doorzichtigheid" copy: "Kopieër" + email_templates: + title: "Email Sjabloon " + subject: "Onderwerp" + multiple_subjects: "Dit email sjabloon heeft meerdere onderwerpen." + body: "Body" + none_selected: "Kies een email sjabloon om te beginnen met bewerken." + revert: "Maak wijzigingen ongedaan" + revert_confirm: "Weet je zeker dat je de veranderingen ongedaan wilt maken?" css_html: title: "CSS/HTML" long_title: "CSS en HTML aanpassingen" @@ -1917,18 +2046,18 @@ nl: love: name: 'liefde' description: "De like knop kleur." - wiki: - name: 'wiki' - description: "Basiskleur die gebruikt wordt voor de achtergrond van wiki berichten." email: - title: "E-mail" + title: "E-mails" settings: "Instellingen" - all: "Alle" + templates: "Sjablonen " + preview_digest: "Voorbeeld digestmail" sending_test: "Testmail wordt verstuurd..." error: "FOUT - %{server_error}" test_error: "Er ging iets mis bij het versturen van de testmail. Kijk nog eens naar je mailinstellinen, controleer of je host mailconnecties niet blokkeert. Probeer daarna opnieuw." sent: "Verzonden" skipped: "Overgeslagen" + received: "Ontvangen" + rejected: "Geweigerd " sent_at: "Verzonden op" time: "Tijd" user: "Gebruiker" @@ -1938,7 +2067,6 @@ nl: send_test: "verstuur test e-mail" sent_test: "verzonden!" delivery_method: "Verzendmethode" - preview_digest: "Voorbeeld digestmail" preview_digest_desc: "Voorbeeld van de digest e-mails die naar inactieve leden worden verzonden." refresh: "Verniew" format: "Formaat" @@ -1947,6 +2075,24 @@ nl: last_seen_user: "Laatste online:" reply_key: "Reply key" skipped_reason: "Reden van overslaan" + incoming_emails: + from_address: "Van" + to_addresses: "Naar" + cc_addresses: "Cc" + subject: "Onderwerp" + error: "Error" + none: "Geen inkomende emails gevonden." + modal: + title: "Inkomende Email Details" + error: "Error" + subject: "Onderwerp" + body: "Body" + filters: + from_placeholder: "from@example.com" + to_placeholder: "to@example.com" + cc_placeholder: "cc@example.com" + subject_placeholder: "Onderwerp.." + error_placeholder: "Error" logs: none: "Geen logs gevonden." filters: @@ -1965,6 +2111,7 @@ nl: ip_address: "IP" topic_id: "Topic ID" post_id: "Bericht ID" + category_id: "Categorie ID" delete: 'Verwijder' edit: 'Wijzig' save: 'Opslaan' @@ -1995,6 +2142,7 @@ nl: change_site_setting: "verander instellingen" change_site_customization: "verander site aanpassingen" delete_site_customization: "verwijder site aanpassingen" + change_site_text: "Verander site tekst" suspend_user: "schors gebruiker" unsuspend_user: "hef schorsing op" grant_badge: "ken badge toe" @@ -2005,6 +2153,16 @@ nl: impersonate: "Log in als gebruiker" anonymize_user: "maak gebruiker anoniem" roll_up: "groepeer verbannen IP-adressen" + change_category_settings: "verander categorie instellingen" + delete_category: "categorie verwijderen" + create_category: "categorie creeren" + block_user: "blokkeer gebruiker" + unblock_user: "deblokkeer gebruiker" + grant_admin: "Ken Beheerdersrechten toe" + revoke_admin: "Ontneem beheerdersrechten" + grant_moderation: "Geef modereerrechten" + revoke_moderation: "Ontneem modereerrechten" + backup_operation: "backup handeling" screened_emails: title: "Gescreende e-mails" description: "Nieuwe accounts met een van deze mailadressen worden geblokkeerd of een andere actie wordt ondernomen." @@ -2071,9 +2229,9 @@ nl: pending: 'Nog niet geaccepteerde leden' newuser: 'Leden met Trust Level 0 (Nieuw lid)' basic: 'Leden met Trust Level 1 (Lid)' - regular: 'Leden op Trust Level 2 (Lid)' - leader: 'Leden op Trust Level 3 (Vaste bezoeker)' - elder: 'Leden op Trust Level 4 (Leider)' + member: 'Leden op Trust Level 2 (Lid)' + regular: 'Leden op Trust Level 3 (Vaste bezoeker)' + leader: 'Leden op Trust Level 4 (Leider)' staff: "Stafleden" admins: 'Administrators' moderators: 'Moderators' @@ -2106,6 +2264,7 @@ nl: moderator: "Moderator?" admin: "Beheerder?" blocked: "Geblokkeerd?" + staged: "Opvoeren?" show_admin_profile: "Beheerder" edit_title: "Wijzig titel" save_title: "Bewaar titel" @@ -2170,9 +2329,12 @@ nl: deactivate_failed: "Er ging iets mis bij het deactiveren van deze gebruiker." unblock_failed: 'Er ging iets mis bij het deblokkeren van deze gebruiker.' block_failed: 'Er ging iets mis bij het blokkeren van deze gebruiker.' + block_confirm: 'Weet je zeker dat je deze gebruikt wilt blokkeren? Deze gebruikers is dan niet meer in staat om nieuwe topics of berichten te plaatsen.' + block_accept: 'Ja, blokkeer deze gebruiker' deactivate_explanation: "Een gedeactiveerde gebruiker moet zijn e-mailadres opnieuw bevestigen." suspended_explanation: "Een geschorste gebruiker kan niet meer inloggen." block_explanation: "Een geblokkeerde gebruiker kan geen topics maken of reageren op topics." + stage_explanation: "Een opgevoerde gebruiker kan alleen via email in bepaalde topics berichten." trust_level_change_failed: "Er ging iets mis bij het wijzigen van het trust level van deze gebruiker." suspend_modal_title: "Schors gebruiker" trust_level_2_users: "Trust Level 2 leden" @@ -2183,7 +2345,7 @@ nl: unlock_trust_level: "Deblokkeer Trust Level" tl3_requirements: title: "Vereisten voor Trust Level 3" - table_title: "In de afgelopen 100 dagen:" + table_title: "In de laatste %{time_period} dagen:" value_heading: "Waarde" requirement_heading: "Vereiste" visits: "Bezoeken" @@ -2244,8 +2406,15 @@ nl: confirm: 'Bevestiging' dropdown: "Uitklapbaar" site_text: - none: "Kies een type van inhoud om te beginnen met bewerken." + description: "Je kunt alle tekst of jouw forum aanpassen. Begin met zoeken hieronder:" + search: "Zoek voor tekst die je graag wilt bewerken." title: 'Tekst Inhoud' + edit: 'bewerk' + revert: "Maak wijzigingen ongedaan" + revert_confirm: "Weet je zeker dat je de veranderingen ongedaan wilt maken?" + go_back: "Terug naar zoeken" + recommended: "We bevelen je aan die tekst aan te passen naar je eigen ingeving. " + show_overriden: 'Bekijk alleen bewerkte instellingen' site_settings: show_overriden: 'Bekijk alleen bewerkte instellingen' title: 'Instellingen' @@ -2333,8 +2502,8 @@ nl: bad_count_warning: header: "LET OP!" text: "Er zijn vermiste toekennings-voorbeelden. Dit gebeurt als de badge query gebruikers- of bericht-ID's retourneert die niet bestaan. Dit kan onverwachte resultaten veroorzaken op een later tijdstip - kijk a.u.b. uw query goed na." + no_grant_count: "Geen badges om toe te wijzen." grant_count: - zero: "Geen badges om toe te wijzen." one: "1 badge toe te wijzen." other: "%{count} badges toe te wijzen." sample: "Voorbeeld:" @@ -2444,9 +2613,10 @@ nl: mark_tracking: 'm, t Markeer topic als volgen' mark_watching: 'm, w Markeer topic als in de gaten houden' badges: + earned_n_times: + one: "Verdiende deze badge 1 keer" + other: "Verdiende deze badge %{count} keer" title: Badges - allow_title: "kan als titel gebruikt worden" - multiple_grant: "kan meerdere keren toegekend worden" badge_count: one: "1 Badge" other: "%{count} Badges" @@ -2469,97 +2639,6 @@ nl: name: Overige posting: name: Schrijven - badge: - editor: - name: Redacteur - description: Eerste berichtwijziging - basic_user: - name: Basis - description: Toegang verleend tot alle essentiële gemeenschaps-functionaliteit. - member: - name: Lid - description: Toegang verleend tot uitnodigingen - regular: - name: Vaste bezoeker - description: Toegang verleend tot hercategoriseren, hernoemen, gevolgde links en lounge - leader: - name: Leider - description: Toegang verleend tot globaal wijzigen, vastpinnen, sluiten, archiveren, splitsen en samenvoegen - welcome: - name: Welkom - description: Like ontvangen. - autobiographer: - name: Autobiografist - description: Gebruikersprofiel informatie ingevuld - anniversary: - name: Verjaardag - description: Actief lid voor een jaar, heeft tenminste eenmaal iets gepost - nice_post: - name: Prima bericht - description: 10 likes op een post ontvangen. Deze badge kan meerdere keren worden toegekend. - good_post: - name: Goed bericht - description: 25 likes op een post ontvangen. Deze badge kan meerdere keren worden toegekend. - great_post: - name: Fantastisch Bericht - description: 50 likes op een post ontvangen. Deze badge kan meerdere keren worden toegekend. - nice_topic: - name: Leuk Topic - description: 10 likes ontvangen op een topic. Deze badge kan meerdere keren toegewezen worden. - good_topic: - name: Goed Topic - description: 25 likes ontvangen op een topic. Deze badge kan meerdere keren toegewezen worden. - great_topic: - name: Geweldig Topic - description: 50 likes ontvangen op een topic. Deze badge kan meerdere keren toegewezen worden. - nice_share: - name: Leuk Gedeeld - description: Een bericht met 25 unieke bezoekers gedeeld - good_share: - name: Goed Gedeeld - description: Een bericht met 300 unieke bezoekers gedeeld - great_share: - name: Geweldig Gedeeld - description: Een bericht met 1000 unieke bezoekers gedeeld - first_like: - name: Eerste like - description: Hebt een bericht ge-vind-ik-leukt - first_flag: - name: Eerste markering - description: Een bericht gemarkeerd - promoter: - name: Promoter - description: Heeft een gebruiker uitgenodigd - campaigner: - name: Campaigner - description: Heeft 3 leden (trust level 1) uitgenodigd - champion: - name: Kampioen - description: Heeft 5 leden (trust level 2) uitgenodigd - first_share: - name: Eerste deel actie - description: Een bericht gedeeld - first_link: - name: Eerste link - description: Een interne link toegevoegd aan een ander topic - first_quote: - name: Eerste citaat - description: Een gebruiker geciteerd - read_guidelines: - name: Heeft de richtlijnen gelezen - description: Lees de community richtlijnen - reader: - name: Lezer - description: Lees elk bericht in een topic met meer dan 100 berichten. - popular_link: - name: Populaire Link - description: Heeft een externe link geplaatst die 50 keer of vaker is aangeklikt. - hot_link: - name: Zeer Populaire Link - description: Heeft een externe link geplaatst die 300 keer of vaker is aangeklikt - famous_link: - name: Uiterst Populaire Link - description: Heeft een externe link geplaatst die 1000 keer of vaker is aangeklikt google_search: |
diff --git a/config/locales/client.pl_PL.yml b/config/locales/client.pl_PL.yml index e25fbb600bf..fd308df18d1 100644 --- a/config/locales/client.pl_PL.yml +++ b/config/locales/client.pl_PL.yml @@ -9,7 +9,7 @@ pl_PL: js: number: format: - separator: "." + separator: "," delimiter: "," human: storage_units: @@ -119,6 +119,8 @@ pl_PL: one: "1 rok później" few: "%{count} lata później" other: "%{count} lat później" + previous_month: 'Poprzedni miesiąc' + next_month: 'Następny miesiąc' share: topic: 'udostępnij odnośnik do tego tematu' post: 'wpis #%{postNumber}' @@ -128,6 +130,9 @@ pl_PL: google+: 'udostępnij ten odnośnik na Google+' email: 'wyślij ten odnośnik przez email' action_codes: + split_topic: "podziel ten temat %{when}" + invited_user: "%{who} został zaproszony %{when}" + removed_user: "%{who} został usunięty %{when}" autoclosed: enabled: 'zamknięcie %{when}' disabled: 'otworzenie %{when}' @@ -148,6 +153,19 @@ pl_PL: disabled: 'odlistowanie %{when}' topic_admin_menu: "akcje administratora" emails_are_disabled: "Wysyłanie e-maili zostało globalnie wyłączone przez administrację. Powiadomienia e-mail nie będą dostarczane." + s3: + regions: + us_east_1: "US East (N. Virginia)" + us_west_1: "US West (N. California)" + us_west_2: "US West (Oregon)" + us_gov_west_1: "AWS GovCloud (US)" + eu_west_1: "EU (Ireland)" + eu_central_1: "EU (Frankfurt)" + ap_southeast_1: "Asia Pacific (Singapore)" + ap_southeast_2: "Asia Pacific (Sydney)" + ap_northeast_1: "Asia Pacific (Tokyo)" + ap_northeast_2: "Asia Pacific (Seoul)" + sa_east_1: "South America (Sao Paulo)" edit: 'edytuj tytuł i kategorię tego tematu' not_implemented: "Bardzo nam przykro, ale ta funkcja nie została jeszcze zaimplementowana." no_value: "Nie" @@ -181,6 +199,8 @@ pl_PL: more: "Więcej" less: "Mniej" never: "nigdy" + every_30_minutes: "co 30 minut" + every_hour: "co godzinę" daily: "dziennie" weekly: "tygodniowo" every_two_weeks: "co dwa tygodnie" @@ -193,6 +213,7 @@ pl_PL: other: "{{count}} znaków" suggested_topics: title: "Sugerowane tematy" + pm_title: "sugerowane wiadomości" about: simple_title: "O stronie" title: "O %{title}" @@ -251,6 +272,7 @@ pl_PL: revert: "Przywróć" failed: "Niepowodzenie" switch_to_anon: "Tryb anonimowy" + switch_from_anon: "Zakończ tryb anonimowy" banner: close: "Zamknij ten baner." edit: "Edytuj ten baner >>" @@ -274,7 +296,7 @@ pl_PL: few: "Ten temat posiada {{count}} wpisy oczekujące na akceptację" other: "Ten temat posiada {{count}} wpisów oczekujących na akceptację" confirm: "Zapisz zmiany" - delete_prompt: "Czy na pewno chcesz usunąć %{username}? Zostaną usunięte wszystkie wpisy utworzone z tego konta oraz zostanie zablokowany powiązany e-mail oraz adres IP." + delete_prompt: "Czy na pewno chcesz usunąć %{username}? To spowoduje usunięcie wszystkich wiadomości, zablokowanie adresu e-mail i adresu IP tego użytkownika." approval: title: "Wpis wymaga zatwierdzenia" description: "Twój nowy wpis został umieszczony w kolejce i pojawi się po zatwierdzeniu przez moderatora. Prosimy o cierpliwość." @@ -319,15 +341,25 @@ pl_PL: few: "%{count} użytkownicy" other: "%{count} użytkowników" groups: + empty: + posts: "Członkowie tej grupy nie opublikowali żadnych postów." + members: "W tej grupie nie ma żadnych członków." + topics: "Członkowie tej grupy nie opublikowali żadnych postów." + add: "Dodaj" + selector_placeholder: "Dodaj członków" + owner: "właściciel" visible: "Grupa jest widoczna dla wszystkich użytkowników" title: one: "grupa" few: "grupy" other: "grupy" members: "Członkowie" + topics: "Tematy" posts: "Wpisów" + mentions: "Wzmianki" + messages: "Wiadomości" alias_levels: - title: "Kto może użyć aliasu tej grupy?" + title: "Kto może wysyłać wiadomości i używać @aliasu tej grupy?" nobody: "Nikt" only_admins: "Tylko administratorzy" mods_and_admins: "Tylko moderatorzy i administratorzy" @@ -336,6 +368,18 @@ pl_PL: trust_levels: title: "Domyślny poziom zaufania przyznawany nowych użytkownikom:" none: "Brak" + notifications: + watching: + title: "Obserwowanie" + tracking: + title: "Śledzenie" + description: "Dostaniesz powiadomienie, gdy ktoś ci odpowie lub wspomni twoją @nazwę, zobaczysz również liczbę odpowiedzi." + regular: + title: "Normalny" + description: "Dostaniesz powiadomienie, gdy ktoś ci odpowie lub wspomni twoją @nazwę." + muted: + title: "Wyciszony" + description: "Nie otrzymasz powiadomień o nowych tematach w tej grupie." user_action_groups: '1': "Przyznane polubienia" '2': "Otrzymane polubienia" @@ -345,7 +389,6 @@ pl_PL: '6': "Odpowiedzi" '7': "Wzmianki" '9': "Cytaty" - '10': "Oznaczone" '11': "Edycje" '12': "Wysłane" '13': "Skrzynka odbiorcza" @@ -355,6 +398,7 @@ pl_PL: all_subcategories: "wszystkie" no_subcategory: "żadne" category: "Kategoria" + category_list: "Wyświetl listę kategorii" reorder: title: "Zmień kolejność kategorii" title_long: "Zmień kolejność listy kategorii" @@ -413,16 +457,14 @@ pl_PL: invited_by: "Zaproszono przez" trust_level: "Poziom zaufania" notifications: "Powiadomienia" + statistics: "Statystyki" desktop_notifications: label: "Powiadomienia systemowe" not_supported: "Powiadomienia nie są wspierane przez tę przeglądarkę. Przepraszamy." perm_default: "Włącz powiadomienia" perm_denied_btn: "Brak uprawnień" - perm_denied_expl: "Wyświetlanie powiadomień jest zablokowane. Użyj ustawień swojej przeglądarki, aby odblokować powiadomienia dla tej domeny." disable: "Wyłącz powiadomienia" - currently_enabled: "(aktualnie włączone)" enable: "Włącz powiadomienia" - currently_disabled: "(aktualnie wyłączone)" each_browser_note: "Uwaga: to ustawienie musisz zmienić w każdej przeglądarce której używasz." dismiss_notifications: "Oznacz jako przeczytane" dismiss_notifications_tooltip: "Oznacz wszystkie powiadomienia jako przeczytane" @@ -446,7 +488,7 @@ pl_PL: tracked_categories: "Śledzone" tracked_categories_instructions: "Będziesz automatycznie śledzić wszystkie nowe tematy w tych kategoriach. Licznik nowych wpisów pojawi się obok tytułu na liście tematów." muted_categories: "Wyciszone" - muted_categories_instructions: "Nie będziesz powiadamiany o niczym dotyczącym nowych tematów w tych kategoriach, i nie będą się one pojawiać na karcie nieprzeczytanych." + muted_categories_instructions: "Nie będziesz powiadamiany o nowych tematach w tych kategoriach. Nie pojawią się na liście nieprzeczytanych." delete_account: "Usuń moje konto" delete_account_confirm: "Czy na pewno chcesz usunąć swoje konto? To nieodwracalne!" deleted_yourself: "Twoje konto zostało usunięte." @@ -456,6 +498,7 @@ pl_PL: users: "Użytkownicy" muted_users: "Uciszeni" muted_users_instructions: "Wstrzymaj powiadomienia od tych użytkowników." + muted_topics_link: "Pokaż wyciszone tematy" staff_counters: flags_given: "uczynnych oflagowań" flagged_posts: "oflagowane wpisy" @@ -464,8 +507,15 @@ pl_PL: warnings_received: "otrzymanych ostrzeżeń" messages: all: "Wszystkie" - mine: "Moje" - unread: "Nieprzeczytane" + inbox: "Skrzynka odbiorcza" + sent: "Wysłane" + archive: "Archiwum" + groups: "Moje grupy" + bulk_select: "Zaznacz wiadomości" + move_to_inbox: "Przenieś do skrzynki odbiorczej" + move_to_archive: "Archiwum" + failed_to_move: "Nie udało się przenieść zaznaczonych wiadomości (prawdopodobnie wystąpił problem z Twoim połączeniem)" + select_all: "Zaznacz wszystko" change_password: success: "(email wysłany)" in_progress: "(email wysyłany)" @@ -510,10 +560,11 @@ pl_PL: ok: "Otrzymasz potwierdzenie emailem" invalid: "Podaj poprawny adres email" authenticated: "Twój email został potwierdzony przez {{provider}}" + frequency_immediately: "Wyślemy powiadomienie jeśli wskazana rzecz nie została jeszcze przez Ciebie przeczytana." frequency: - zero: "Otrzymasz email natychmiast jeśli nie widziałeś rzeczy na temat której wysyłamy email." - one: "Otrzymasz e-mail jeśli nie widzieliśmy Cię w ciągu ostatniej minuty." - other: "Otrzymasz e-mail jeśli nie widzieliśmy Cię w ciągu ostatnich {{count}} minut." + one: "Otrzymasz e-mail tylko jeśli nie widzieliśmy Cię w ciągu ostatniej minuty." + few: "Otrzymasz e-mail tylko jeśli nie widzieliśmy Cię w ciągu ostatnich {{count}} minut." + other: "Otrzymasz e-mail tylko jeśli nie widzieliśmy Cię w ciągu ostatnich {{count}} minut." name: title: "Pełna nazwa" instructions: "Twoja pełna nazwa (opcjonalna)" @@ -549,8 +600,16 @@ pl_PL: title: "Odznaka karty użytkownika" website: "Strona internetowa" email_settings: "Email" + like_notification_frequency: + always: "Zawsze" + never: "Nigdy" + email_previous_replies: + always: "zawsze" + never: "nigdy" email_digests: title: "Gdy nie odwiedzam strony, wysyłaj e-mail z podsumowaniem aktywności:" + every_30_minutes: "co 30 minut" + every_hour: "co godzinę" daily: "codziennie" every_three_days: "co trzy dni" weekly: "co tydzień" @@ -585,7 +644,10 @@ pl_PL: user: "Zaproszony(-a) użytkownik(-czka)" sent: "Wysłane" none: "Nie ma żadnych zaproszeń do wyświetlenia." - truncated: "Pokaż pierwsze {{count}} zaproszeń." + truncated: + one: "Wyświetlanie pierwszego zaproszenia." + few: "Wyświetlanie {{count}} pierwszych zaproszeń." + other: "Wyświetlanie {{count}} pierwszych zaproszeń." redeemed: "Cofnięte zaproszenia" redeemed_tab: "Przyjęte" redeemed_tab_with_count: "Zrealizowane ({{count}})" @@ -620,6 +682,15 @@ pl_PL: same_as_email: "Twoje hasło jest takie samo jak twój e-mail." ok: "Twoje hasło jest poprawne." instructions: "Co najmniej %{count} znaków." + summary: + title: "Podsumowanie" + stats: "Statystyki" + top_replies: "Najlepsze odpowiedzi" + more_replies: "Więcej odpowiedzi" + top_topics: "Najlepsze tematy" + more_topics: "Więcej tematów" + top_badges: "Najlepsze odznaki" + more_badges: "Więcej odznak" associated_accounts: "Powiązane konta" ip_address: title: "Ostatni adres IP" @@ -645,11 +716,13 @@ pl_PL: server: "błąd serwera" forbidden: "Brak dostępu" unknown: "Błąd" + not_found: "Nie znaleziono strony" desc: network: "Sprawdź swoje połączenie." network_fixed: "Chyba już w porządku." server: "Kod błędu: {{status}}" forbidden: "Nie możesz obejrzeć tego zasobu." + not_found: "Ups, aplikacja próbowała otworzyć URL który nie istnieje." unknown: "Coś poszło nie tak." buttons: back: "Cofnij" @@ -660,8 +733,10 @@ pl_PL: logout: "Nastąpiło wylogowanie." refresh: "Odśwież" read_only_mode: - enabled: "Aktywowani tryb tylko-do-odczytu. Możesz nadal przeglądać serwis, ale operacje zmieniające stan i treść mogą nie działać." login_disabled: "Logowanie jest zablokowane, gdy strona jest w trybie tylko do odczytu." + too_few_topics_and_posts_notice: "Pora rozruszać dyskusję! Aktualnie istnieje %{currentTopics} / %{requiredTopics} tematów i %{currentPosts} / %{requiredPosts} wpisów. Odwiedzający potrzebują więcej tematów i konwersacji do czytania i pisania na ich temat." + too_few_topics_notice: "Pora rozruszać dyskusję! Aktualnie istnieje %{currentTopics} / %{requiredTopics} tematów. Odwiedzający potrzebują więcej tematów i konwersacji do czytania i pisania na ich temat." + too_few_posts_notice: "Pora rozruszać dyskusję! Aktualnie istnieje %{currentPosts} / %{requiredPosts} wpisów. Odwiedzający potrzebują więcej tematów i konwersacji do czytania i pisania na ich temat." learn_more: "dowiedz się więcej…" year: 'rok' year_desc: 'tematy dodane w ciągu ostatnich 365 dni' @@ -679,10 +754,16 @@ pl_PL: one: odpowiedź few: odpowiedzi other: odpowiedzi + signup_cta: + sign_up: "Rejestracja" + hide_session: "Przypomnij mi jutro" + hide_forever: "nie, dziękuję" + hidden_for_session: "Ok, zapytamy jutro. Pamiętaj, że konto możesz w każdej chwili założyć klikając na 'Logowanie'." + intro: "Hej! :heart_eyes: Wygląda na to, że zainteresowała Cię dyskusja, ale nie posiadasz jeszcze konta." + value_prop: "Jeśli stworzysz konto, zapamiętamy przeczytane przez Ciebie wpisy i tematy, dzięki czemu zawsze powrócisz do odpowiedniego miejsca. Otrzymasz też powiadomienia o nowych wpisach. Dodatkowo możliwe będzie polubienie ciekawych wpisów :heartbeat:" summary: enabled_description: "Przeglądasz podsumowanie tego tematu: widoczne są jedynie najbardziej wartościowe wpisy zdaniem uczestników. " - description: "Istnieją {{count}} odpowiedzi." - description_time: "Istnieją {{count}} odpowiedzi z czasem czytania oszacowanym na {{readingTime}} minut." + description: "Jest {{replyCount}} odpowiedzi." enable: 'Podsumuj ten temat' disable: 'Pokaż wszystkie wpisy' deleted_filter: @@ -736,6 +817,9 @@ pl_PL: admin_not_allowed_from_ip_address: "Nie możesz się zalogować jako admin z tego adresu IP." resend_activation_email: "Kliknij tutaj, aby ponownie wysłać email z aktywacją konta." sent_activation_email_again: "Wysłaliśmy do ciebie kolejny email z aktywacją konta na {{currentEmail}}. Zanim dotrze, może minąć kilka minut; pamiętaj, żeby sprawdzić folder ze spamem." + to_continue: "Zaloguj się" + preferences: "Musisz się zalogować, aby zmieniać swoje ustawienia." + forgot: "Nie pamiętam konta" google: title: "przez Google" message: "Uwierzytelnianie przy pomocy konta Google (upewnij się, że blokada wyskakujących okienek nie jest włączona)" @@ -758,15 +842,23 @@ pl_PL: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + more_emoji: "więcej…" + options: "Opcje" + whisper: "szept" add_warning: "To jest oficjalne ostrzeżenie." + toggle_whisper: "Przełącz szept" posting_not_on_topic: "W którym temacie chcesz odpowiedzieć?" saving_draft_tip: "zapisuję..." saved_draft_tip: "zapisano" saved_local_draft_tip: "zapisano lokalnie" similar_topics: "Twój temat jest podobny do…" drafts_offline: "szkice offline" + group_mentioned: "Używając {{group}} powiadamiasz grupę {{count}} osób." error: title_missing: "tytuł jest wymagany" title_too_short: "tytuł musi zawierać co najmniej {{min}} znaków" @@ -789,7 +881,7 @@ pl_PL: show_edit_reason: "(dodaj powód edycji)" reply_placeholder: "Pisz w tym miejscu. Wspierane formatowanie to Markdown, BBCode lub HTML. Możesz też przeciągnąć tu obrazek." view_new_post: "Zobacz Twój nowy wpis." - saving: "Zapisuję…" + saving: "Zapisywanie" saved: "Zapisano!" saved_draft: "Posiadasz zachowany szkic wpisu. Kliknij tu aby wznowić jego edycję." uploading: "Wczytuję…" @@ -804,6 +896,7 @@ pl_PL: link_description: "wprowadź tutaj opis odnośnika" link_dialog_title: "Wstaw odnośnik" link_optional_text: "opcjonalny tytuł" + link_placeholder: "http://example.com \"opcjonalny tekst\"" quote_title: "Cytat" quote_text: "Cytat" code_title: "Tekst sformatowany" @@ -816,10 +909,11 @@ pl_PL: heading_title: "Nagłówek" heading_text: "Nagłówek" hr_title: "Pozioma linia" - undo_title: "Cofnij" - redo_title: "Ponów" help: "Pomoc formatowania Markdown" toggler: "ukryj lub pokaż panel kompozytora tekstu" + modal_ok: "OK" + modal_cancel: "Anuluj" + cant_send_pm: "Przepraszamy, niestety nie możesz wysłać prywatnej wiadomości do %{username}." admin_options_title: "Opcjonalne ustawienia obsługi dla tego tematu" auto_close: label: "Automatycznie zamykaj tematy po:" @@ -836,11 +930,16 @@ pl_PL: more: "pokaż starsze powiadomienia" total_flagged: "wszystkie oflagowane wpisy" mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" + posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" + liked_many: + one: "
{{username}}, {{username2}} oraz 1 inna osoba {{description}}
" + few: "
{{username}}, {{username2}} i {{count}} innych osób {{description}}
" + other: "
{{username}}, {{username2}} i {{count}} innych osób {{description}}
" private_message: "
{{username}} {{description}}
" invited_to_private_message: "
{{username}} {{description}}
" invited_to_topic: "
{{username}} {{description}}
" @@ -848,6 +947,10 @@ pl_PL: moved_post: "
{{username}} przenosi {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
Otrzymujesz '{{description}}'
" + group_message_summary: + one: "
masz {{count}} wiadomość w skrzynce odbiorczej {{group_name}}
" + few: "
masz {{count}} wiadomości w skrzynce odbiorczej {{group_name}}
" + other: "
masz {{count}} wiadomości w skrzynce odbiorczej {{group_name}}
" alt: mentioned: "Wywołanie przez" quoted: "Cytowanie przez" @@ -864,6 +967,7 @@ pl_PL: granted_badge: "Przyznanie odznaki" popup: mentioned: '{{username}} wspomina o tobie w "{{topic}}" - {{site_title}}' + group_mentioned: '{{username}} wspomniał o Tobie w "{{topic}}" - {{site_title}}' quoted: '{{username}} cytuje cie w "{{topic}}" - {{site_title}}' replied: '{{username}} odpowiada na twój wpis w "{{topic}}" - {{site_title}}' posted: '{{username}} pisze w "{{topic}}" - {{site_title}}' @@ -875,17 +979,26 @@ pl_PL: from_my_computer: "Z mojego urządzenia" from_the_web: "Z Internetu" remote_tip: "link do obrazu" - remote_tip_with_attachments: "odnośnik do obrazu lub pliku ({{authorized_extensions}})" + remote_tip_with_attachments: "link do obrazu lub pliku {{authorized_extensions}}" local_tip: "wybierz obrazy ze swojego urządzenia" - local_tip_with_attachments: "wybierz obrazy lub pliki ze swojego urządzenia ({{authorized_extensions}})" + local_tip_with_attachments: "wybierz obrazy lub pliki ze swojego urządzenia {{authorized_extensions}}" hint: "(możesz także upuścić plik z katalogu komputera w okno edytora)" hint_for_supported_browsers: "możesz też przeciągać lub wklejać grafiki do edytora" uploading: "Wgrywanie" select_file: "Wybierz plik" image_link: "odnośnik do którego Twój obraz będzie kierował" search: + sort_by: "Sortuj po" + relevance: "Trafność" + latest_post: "Aktualne wpisy" + most_viewed: "Popularne" + most_liked: "Lubiane" select_all: "Zaznacz wszystkie" clear_all: "Wyczyść wszystkie" + result_count: + one: "1 wynik dla \"{{term}}\"" + few: "{{count}} wyniki dla \"{{term}}\"" + other: "{{count}} wyników dla \"{{term}}\"" title: "szukaj tematów, wpisów, użytkowników lub kategorii" no_results: "Brak wyników wyszukiwania" no_more_results: "Nie znaleziono więcej wyników." @@ -904,13 +1017,15 @@ pl_PL: current_user: 'idź do swojej strony użytkowanika' topics: bulk: + unlist_topics: "Ukryj tematy" reset_read: "Wyzeruj przeczytane" delete: "Usuń tematy" - dismiss_posts: "Wyczyść liczniki wpisów" - dismiss_posts_tooltip: "Wyczyść liczniki nieprzeczytanych wpisów w tych tematach, ale informuj mnie jeśli pojawią się w nich nowe wpisy w przyszłości." - dismiss_topics: "Wyczyść status termatów" - dismiss_topics_tooltip: "Nie pokazuj tych tematów na mojej liście nieprzeczytanych gdy pojawią się w nich nowe wpisy." - dismiss_new: "Wyczyść nieprzeczytane" + dismiss: "Wyczyść" + dismiss_read: "Wyczyść nieprzeczytane" + dismiss_button: "Wyczyść…" + dismiss_tooltip: "Wyczyść nowe wpisy lub przestań śledzić tematy" + also_dismiss_topics: "Przestać śledzić wskazane tematy. Nie chcę, aby pojawiały się w zakładce nieprzeczytane." + dismiss_new: "Wyczyść nowe" toggle: "włącz grupowe zaznaczanie tematów" actions: "Operacje grupowe" change_category: "Zmień kategorię" @@ -934,10 +1049,7 @@ pl_PL: top: "Brak najlepszych tematów." search: "Brak wyników wyszukiwania." educate: - new: '
Pojawią się tu nowe tematy.
Domyślnie, tematy są traktowane jako nowe jeśli zostały utworzone w ciągu ostatnich 2 dni.
Możesz to zmienić w swoich ustawieniach.
' - unread: '
Pojawią się tu tematy oznaczone licznikiem 1 nieprzeczytanych wpisów.
- -
Domyślnie, jako nieprzeczytane rozumiane są tematy:
Znajdą się tu też te, którym ręcznie przyznano status Śledzony lub Obserwowany przyciskiem znajdującym się na końcu każdego tematu.
Możesz zmienić te zachowania w swoich ustawieniach.
' + new: '
Nowe tematy będą pojawiać się tutaj.
Domyślnie tematy są określane jako nowe i będą oznaczone jakonowe jeśli były stworzone w ciągu ostatnich 2 dni.
Odwiedź swoje ustawienia by to zmienić.
' bottom: latest: "Nie ma więcej najnowszych tematów." hot: "Nie ma więcej gorących tematów." @@ -957,6 +1069,12 @@ pl_PL: create: 'Nowy temat' create_long: 'Utwórz nowy temat' private_message: 'Napisz wiadomość' + archive_message: + help: 'Przenieś wiadomość do archiwum' + title: 'Archiwum' + move_to_inbox: + title: 'Przenieś do skrzynki odbiorczej' + help: 'Przenieś wiadomość z powrotem do skrzynki odbiorczej' list: 'Tematy' new: 'nowy temat' unread: 'nieprzeczytane' @@ -1012,6 +1130,7 @@ pl_PL: auto_close_title: 'Ustawienia automatycznego zamykania' auto_close_save: "Zapisz" auto_close_remove: "Nie zamykaj automatycznie tego tematu" + auto_close_immediate: "Ostatni wpis w tym temacie został zamieszczony %{hours} godzin temu, więc zostanie on natychmiastowo zamknięty." progress: title: postęp tematu go_top: "początek" @@ -1061,7 +1180,7 @@ pl_PL: description: "Nie będziesz otrzymywać powiadomień dotyczących tej dyskusji." muted: title: "Wyciszenie" - description: "Nie będzie jakichkolwiek powiadomień dotyczących tego tematu i nie będzie się on pojawiać na karcie nieprzeczytanych." + description: "Nie otrzymasz powiadomień o nowych wpisach w tym temacie. Nie pojawią się na liście nieprzeczytanych" actions: recover: "Przywróć temat" delete: "Usuń temat" @@ -1103,25 +1222,26 @@ pl_PL: unpin_until: "Odepnij ten temat z początku kategorii {{categoryLink}} lub poczekaj do %{until}." pin_note: "Użytkownicy mogą przypinać tematy dla samych siebie." pin_validation: "Przypięcie tego tematu wymaga podania daty." + not_pinned: "Brak przypiętych tematów w {{categoryLink}}." already_pinned: - zero: "Brak przypiętych tematów w {{categoryLink}}." - one: "Tematy przypięte w {{categoryLink}}: 1." - other: "Tematy przypięte w {{categoryLink}}: {{count}}." + one: "Tematy przypięte w {{categoryLink}}: 1" + few: "Tematy przypięte w {{categoryLink}}: {{count}}" + other: "Tematy przypięte w {{categoryLink}}: {{count}}" pin_globally: "Wyróżnij ten temat przypinając go na górze wszystkich list do" confirm_pin_globally: "Czy na pewno chcesz globalnie przypiąć kolejny temat? Masz już {{count}} przypiętych tematów -- zbyt wiele może obniżyć czytelność innych aktywnych tematów." unpin_globally: "Usuń wyróżnienie dla tego tematu odpinając go z początku wszystkich list." unpin_globally_until: "Usuń wyróżnienie dla tego tematu odpinając go z początku wszystkich list lub poczekaj do %{until}." global_pin_note: "Użytkownicy mogą przypinać tematy dla samych siebie." + not_pinned_globally: "Brak przypiętych globalnie tematów." already_pinned_globally: - zero: "Brak przypiętych globalnie tematów." one: "Tematy przypięte globalnie: 1." - other: "Tematy przypięte globalnie: {{count}}." + few: "Tematy przypięte globalnie: {{count}}." + other: "Tematy przypięte globalnie: {{count}}." make_banner: "Ustaw ten temat jako baner wyświetlany na górze każdej strony." remove_banner: "Usuń ten temat jako baner wyświetlany na górze każdej strony." banner_note: "Użytkownicy mogą usunąć baner zamykając go przyciskiem. Tylko jeden temat może być banerem w danej chwili." - already_banner: - zero: "Baner nie jest obecnie ustawiony." - one: "Baner jest ustawiony." + no_banner_exists: "Baner nie jest obecnie ustawiony." + banner_exists: "Baner jest obecnie ustawiony." inviting: "Zapraszam…" automatically_add_to_groups_optional: "To zaproszenie daje dostęp do tych grup: (opcjonalne, tylko dla admina)" automatically_add_to_groups_required: "To zaproszenie daje dostęp do tych grup: (Wymagane, tylko dla admina)" @@ -1237,10 +1357,11 @@ pl_PL: one: "1 osoba polubiła ten wpis" few: "{{count}} osoby polubiły ten wpis" other: "{{count}} osób polubiło ten wpis" + has_likes_title_only_you: "polubiony wpis" has_likes_title_you: - zero: "polubiono ten wpis" - one: "wpis polubiony przez ciebie i 1 inną osobę" - other: "wpis polubiony przez ciebie i {{count}} innych osób" + one: "ty i 1 inna osoba polubiliście ten wpis" + few: "ty i {{count}} inne osoby polubiliście ten wpis" + other: "ty i {{count}} innych osób polubiło ten wpis" errors: create: "Przepraszamy, podczas tworzenia twojego wpisu wystąpił błąd. Spróbuj ponownie." edit: "Przepraszamy, podczas edytowania twojego wpisu wystąpił błąd. Spróbuj ponownie." @@ -1258,9 +1379,7 @@ pl_PL: no_value: "Nie, pozostaw" yes_value: "Tak, porzuć" via_email: "ten wpis został dodany emailem" - whisper: "ten wpis jest prywatną notatką dla moderatorów" - wiki: - about: "to wpis typu Wiki: zwykli użytkownicy mogą go edytować" + whisper: "ten wpis jest prywatnym szeptem do moderatorów" archetypes: save: 'Opcje zapisu' controls: @@ -1289,6 +1408,7 @@ pl_PL: revert_to_regular: "Wyłącz kolor moderatora" rebake: "Odśwież HTML" unhide: "Wycofaj ukrycie" + change_owner: "Zmiana właściciela" actions: flag: 'Oflaguj' defer_flags: @@ -1311,17 +1431,14 @@ pl_PL: like: "Cofnij" vote: "Cofnij głos" people: - off_topic: "{{icons}} oznaczyli jako nie-na-temat" - spam: "{{icons}} oznaczyli jako spam" - spam_with_url: "{{icons}} oznacza to jako spam" - inappropriate: "{{icons}} oznaczyli jako niewłaściwe" - notify_moderators: "{{icons}} powiadomiło moderatorów" - notify_moderators_with_url: "{{icons}} powiadomiło moderatorów" - notify_user: "{{icons}} wysłana wiadomość" - notify_user_with_url: "{{icons}} wysłana wiadomość" - bookmark: "{{icons}} dodało to do zakładek" - like: "{{icons}} lubi to" - vote: "{{icons}} zagłosowało za tym" + off_topic: "Oflagowano jako nie-na-temat" + spam: "oznacz jako spam" + inappropriate: "Oflagowano jako nieodpowiednie" + notify_moderators: "Powiadomiono moderatorów" + notify_user: "Wysłano wiadomość" + bookmark: "dodaj do zakładek" + like: "polubiło to" + vote: "zagłosowało" by_you: off_topic: "Oznaczono jako nie-na-temat" spam: "Oflagowano jako spam" @@ -1397,10 +1514,6 @@ pl_PL: one: "1 osoba zagłosowała za tym wpisem" few: "{{count}} osoby zagłosowały za tym wpisem" other: "{{count}} osób zagłosowało za tym wpisem" - edits: - one: 1 edycja - other: "Liczba edycji: {{count}}" - zero: brak edycji delete: confirm: one: "Jesteś pewny(-a), że chcesz usunąć ten wpis?" @@ -1482,19 +1595,18 @@ pl_PL: notifications: watching: title: "Obserwuj wszystko" - description: "Będziesz automatycznie śledzić wszystkie nowe tematy w tych kategoriach. Dostaniesz powiadomienie o każdym nowym wpisie i temacie. Liczba nowych odpowiedzi będzie wyświetlana na liście tematów." + description: "Będziesz automatycznie śledzić wszystkie nowe tematy w tych kategoriach. Otrzymasz powiadomienie o każdym nowym wpisie i temacie. Wyświetlimy liczbę nowych odpowiedzi na liście tematów." tracking: title: "Śledzona" - description: "Będziesz automatycznie śledzić wszystkie tematy w tych kategoriach. Llicznik nowych odpowiedzi pojawi się obok ich tytułów." + description: "Będziesz automatycznie śledzić wszystkie tematy w tych kategoriach. Otrzymasz powiadomienie jeśli ktoś wspomni twój @login lub odpowie na twój wpis. Licznik nowych odpowiedzi pojawi się na liście tematów." regular: title: "Normalny" description: "Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." muted: title: "Wyciszone" - description: "Nie będziesz powiadamiany o nowych tematach w tych kategoriach i nie będą się one pojawiać w karcie Nieprzeczytane." + description: "Nie otrzymasz powiadomień o nowych tematach w tych kategoriach. Nie pojawią się na liście nieprzeczytanych." flagging: title: 'Dziękujemy za pomoc w utrzymaniu porządku w naszej społeczności!' - private_reminder: 'oflagowania są poufne i widoczne jedynie dla obsługi serwisu' action: 'Oflaguj wpis' take_action: "Podejmij działanie" notify_action: 'Wiadomość' @@ -1545,7 +1657,7 @@ pl_PL: help: "Temat nie jest przypięty w ramach twojego konta. Będzie wyświetlany w normalnej kolejności." pinned_globally: title: "Przypięty globalnie" - help: "Temat przypięty globalnie. Będzie wyświetlany na początku wszystkich list." + help: "Ten temat jest przypięty globalnie. Będzie wyświetlany na początku głównej listy oraz swojej kategorii." pinned: title: "Przypięty" help: "Temat przypięty dla twojego konta. Będzie wyświetlany na początku swojej kategorii." @@ -1585,9 +1697,10 @@ pl_PL: with_topics: "%{filter} tematy" with_category: "%{filter} tematy w %{category} " latest: - title: - zero: "Aktualne" + title: "Aktualne" + title_with_count: one: "Aktualne (1)" + few: "Aktualne ({{count}})" other: "Aktualne ({{count}})" help: "tematy z ostatnimi wpisami" hot: @@ -1604,22 +1717,26 @@ pl_PL: title_in: "Kategoria - {{categoryName}}" help: "wszystkie tematy zgrupowane przez kategorię" unread: - title: - zero: "Nieprzeczytane" + title: "Nieprzeczytane" + title_with_count: one: "Nieprzeczytane (1)" + few: "Nieprzeczytane ({{count}})" other: "Nieprzeczytane ({{count}})" help: "obserwowane lub śledzone tematy z nieprzeczytanymi wpisami" lower_title_with_count: one: "1 nieprzeczytany" + few: "{{count}} nieprzeczytane" other: "{{count}} nieprzeczytanych" new: lower_title_with_count: - one: "1 nowy" + one: "1 nowa" + few: "{{count}} nowe" other: "{{count}} nowych" lower_title: "nowe" - title: - zero: "Nowe" + title: "Nowe" + title_with_count: one: "Nowe (1)" + few: "Nowe ({{count}})" other: "Nowe ({{count}})" help: "tematy dodane w ciągu ostatnich kilku dni" posted: @@ -1629,9 +1746,10 @@ pl_PL: title: "Zakładki" help: "tematy dodane do zakładek" category: - title: - zero: "{{categoryName}}" + title: "{{categoryName}}" + title_with_count: one: "{{categoryName}} (1)" + few: "{{categoryName}} ({{count}})" other: "{{categoryName}} ({{count}})" help: "najnowsze tematy w kategorii {{categoryName}}" top: @@ -1797,15 +1915,24 @@ pl_PL: delete_confirm: "Usunąć tę grupę?" delete_failed: "Nie można usunąć grupy. Jeżeli jest to grupa automatyczna, nie może zostać zniszczona." delete_member_confirm: "Usunąć '%{username}' z grupy '%{group}' ?" + delete_owner_confirm: "Usunąć status właściciela dla '%{username}'?" name: "Nazwa" add: "Dodaj" add_members: "Dodaj członków" custom: "Niestandardowe" + bulk_complete: "Użytkownicy zostali dodani do wskazanej grupy." + bulk: "Dodaj więcej do grupy" + bulk_paste: "Podaj listę nazw użytkowników lub adresów e-mail, każdy w oddzielnej linii:" + bulk_select: "(wybierz grupę)" automatic: "Automatyczne" automatic_membership_email_domains: "Użytkownicy rejestrujący się przy pomocy adresu z tej listy zostaną automatycznie przypisani do tej grupy." automatic_membership_retroactive: "Zastosuj tę regułę domenową do już istniejących użytkowników." default_title: "Domyślny tytuł użytkowników należących do tej grupy" primary_group: "Automatycznie ustawiaj jako główną grupę" + group_owners: Właściciele + add_owners: Dodaj właścicieli + incoming_email: "Niestandardowy adres poczty przychodzącej" + incoming_email_placeholder: "podaj adres e-mail" api: generate_master: "Generuj Master API Key" none: "Nie ma teraz aktywnych kluczy API." @@ -1879,11 +2006,9 @@ pl_PL: is_disabled: "Przywracanie jest zablokowane w ustawieniach." label: "Przywróć" title: "Przywróć kopię zapasową" - confirm: "Czy na pewno chcesz przywrócić tą kopię zapasową?" rollback: label: "Wycofaj" title: "Wycofaj bazę danych do poprzedniego poprawnego stanu" - confirm: "Czy na pewno chcesz przywrócić bazę danych do poprzedniego poprawnego stanu?" export_csv: user_archive_confirm: "Czy na pewno chcesz pobrać swoje wszystkie wpisy?" success: "Rozpoczęto eksport: otrzymasz wiadomość, gdy proces zostanie zakończony." @@ -1934,6 +2059,14 @@ pl_PL: color: "Kolor" opacity: "Widoczność" copy: "Kopiuj" + email_templates: + title: "Szablony email" + subject: "Temat" + multiple_subjects: "Ten szablon e-mail zawiera wiele tematów." + body: "Treść" + none_selected: "Aby rozpocząć edycję, wybierz szablon wiadomości e-mail. " + revert: "Cofnij zmiany" + revert_confirm: "Czy na pewno chcesz wycofać swoje zmiany?" css_html: title: "CSS, HTML" long_title: "Personalizacja kodu CSS i HTML" @@ -1978,18 +2111,16 @@ pl_PL: love: name: 'polubienie' description: "Kolor przycisku polub" - wiki: - name: 'wiki' - description: "Kolor tła wpisów typu wiki." email: - title: "Email" settings: "Ustawienia" - all: "Wszystkie" + preview_digest: "Pokaż zestawienie aktywności" sending_test: "Wysyłanie testowego emaila…" error: "BŁAD - %{server_error}" test_error: "Wystąpił problem podczas wysyłania testowego maila. Sprawdź ustawienia poczty, sprawdź czy Twój serwer nie blokuje połączeń pocztowych i spróbuj ponownie." sent: "Wysłane" skipped: "Pominięte" + received: "Otrzymane" + rejected: "Odrzucone" sent_at: "Wysłany na" time: "Czas" user: "Użytkownik" @@ -1999,7 +2130,6 @@ pl_PL: send_test: "Wyślij email testowy" sent_test: "wysłany!" delivery_method: "Metoda Dostarczenia" - preview_digest: "Pokaż zestawienie aktywności" preview_digest_desc: "Podgląd treści zestawienia wysyłanego e-mailem do nieaktywnych użytkowników." refresh: "Odśwież" format: "Format" @@ -2008,6 +2138,20 @@ pl_PL: last_seen_user: "Ostatnia " reply_key: "Klucz odpowiedzi" skipped_reason: "Powód pominięcia" + incoming_emails: + from_address: "Od" + to_addresses: "Do" + subject: "Temat" + error: "Błąd" + modal: + error: "Błąd" + subject: "Temat" + body: "Treść" + filters: + from_placeholder: "from@example.com" + to_placeholder: "to@example.com" + cc_placeholder: "cc@example.com" + error_placeholder: "Błąd" logs: none: "Nie znaleziono logów." filters: @@ -2026,6 +2170,7 @@ pl_PL: ip_address: "IP" topic_id: "ID tematu" post_id: "ID wpisu" + category_id: "ID kategorii" delete: 'Usuń' edit: 'Edytuj' save: 'Zapisz' @@ -2066,6 +2211,11 @@ pl_PL: impersonate: "udawanie użytkownika" anonymize_user: "anonimizuj użytkownika" roll_up: "zwiń bloki IP" + change_category_settings: "zmiana ustawień kategorii" + delete_category: "Usuń kategorię" + create_category: "Dodaj nową kategorię" + block_user: "zablokuj użytkownika" + unblock_user: "odblokuj użytkownika" screened_emails: title: "Ekranowane emaile" description: "Kiedy ktoś próbuje założyć nowe konto, jego adres email zostaje sprawdzony i rejestracja zostaje zablokowana, lub inna akcja jest podejmowana." @@ -2134,9 +2284,9 @@ pl_PL: pending: 'Użytkownicy oczekujący na akceptację' newuser: 'Użytkownicy na 0 poziomie zaufania (Nowi)' basic: 'Użytkownicy na 1 poziomie zaufania (Podstawowi)' - regular: 'Użytkownicy na 2 poziomie zaufania (Zwyczajni)' - leader: 'Użytkownicy na 3 poziomie zaufania (Regularni)' - elder: 'Użytkownicy na 4 poziomie zaufania (Weterani)' + member: 'Użytkownicy na 2 poziomie zaufania (Zwyczajni)' + regular: 'Użytkownicy na 3 poziomie zaufania (Regularni)' + leader: 'Użytkownicy na 4 poziomie zaufania (Weterani)' staff: "Zespół" admins: 'Administratorzy' moderators: 'Moderatoratorzy' @@ -2238,6 +2388,7 @@ pl_PL: deactivate_failed: "Wystąpił problem przy deaktywacji konta użytkownika." unblock_failed: 'Wystąpił problem podczaj odblokowania użytkownika.' block_failed: 'Wystąpił problem podczas blokowania użytkownika.' + block_accept: 'Tak, zablokuj tego użytkownika' deactivate_explanation: "Wymusza ponowne potwierdzenie adresu email tego konta." suspended_explanation: "Zawieszony użytkownik nie może się logować." block_explanation: "Zablokowany użytkownik nie może tworzyć wpisów ani zaczynać tematów." @@ -2251,7 +2402,7 @@ pl_PL: unlock_trust_level: "Odblokuj poziom zaufania" tl3_requirements: title: "Wymagania dla osiągnięcia 3. poziomu zaufania" - table_title: "W ciągu ostatnich 100 dni:" + table_title: "W ciągu ostatnich %{time_period} dni:" value_heading: "Wartość" requirement_heading: "Wymaganie" visits: "Odwiedziny" @@ -2312,8 +2463,15 @@ pl_PL: confirm: 'Potwierdzenie' dropdown: "Lista rozwijana" site_text: - none: "Aby rozpocząć edycję, wybierz typ treści. " + description: "Możesz dostosować dowolny tekst na swoim forum. Rozpocznij wyszukując poniżej:" + search: "Znajdź etykietę lub tekst który chcesz zmienić" title: 'Kontekst' + edit: 'edytuj' + revert: "Cofnij zmiany" + revert_confirm: "Czy na pewno chcesz wycofać swoje zmiany?" + go_back: "Wróć do wyszukiwania" + recommended: "Zalecamy zmianę poniższego tekstu, aby lepiej odpowiadał Twoim potrzebom:" + show_overriden: 'Pokaż tylko nadpisane' site_settings: show_overriden: 'Pokaż tylko nadpisane' title: 'Ustawienia' @@ -2401,9 +2559,10 @@ pl_PL: bad_count_warning: header: "UWAGA!" text: "Brakuje przykładowych wyników. Zapytanie odznaki zwraca nieistniejące ID użytkowników lub wpisów. Może to spowodować nieoczekiwane rezultaty w przyszłości – sprawdź ponownie swoje zapytanie. " + no_grant_count: "Brak odznak do przyznania." grant_count: - zero: "Brak odznak do przyznania." one: "1 odznaka do przyznania." + few: "%{count} odznaki do przyznania." other: "%{count} odznak do przyznania." sample: "Podgląd:" grant: @@ -2512,9 +2671,11 @@ pl_PL: mark_tracking: 'm, t śledź temat' mark_watching: 'm, w śledź wszystko w temacie' badges: + earned_n_times: + one: "Otrzymano tą odznakę 1 raz" + few: "Otrzymano tą odznakę %{count} razy" + other: "Otrzymano tą odznakę %{count} razy" title: Odznaki - allow_title: "może być użyta jako tytuł" - multiple_grant: "może być przyznana wielokrotnie" badge_count: one: "1 odznaka" few: "%{count} odznaki" @@ -2540,97 +2701,6 @@ pl_PL: name: Inne posting: name: Wpisy - badge: - editor: - name: Edytor - description: Pierwsza edycja - basic_user: - name: Podstawowy - description: Przyznano wszystkie podstawowe funkcje - member: - name: Zwykły - description: Przyznano zaproszenia - regular: - name: Regularny - description: Przyznano zmianę kategorii, tytułu, wyłączenie nofollow linków oraz Salon - leader: - name: Weteran - description: Przyznano możliwość edycji, przypinania, zamykania, archiwizacji, podziału i scalania - welcome: - name: Powitanie - description: Otrzymano polubienie - autobiographer: - name: Autobiograf - description: Wypełnienie profilu użytkownika - anniversary: - name: Rocznica - description: Aktywność przez rok, co najmniej jeden wpis - nice_post: - name: Niezły wpis - description: Otrzymano 10 polubień za wpis. Ta odznaka może być przyznawana wielokrotnie - good_post: - name: Dobry wpis - description: Otrzymano 25 polubień za wpis. Ta odznaka może być przyznawana wielokrotnie - great_post: - name: Wspaniały wpis - description: Otrzymano 50 polubień za wpis. Ta odznaka może być przyznawana wielokrotnie - nice_topic: - name: Niezły temat - description: Otrzymano 10 polubień w temacie. Ta odznaka może być przyznawana wielokrotnie. - good_topic: - name: Dobry temat - description: Otrzymano 25 polubień w temacie. Ta odznaka może być przyznawana wielokrotnie. - great_topic: - name: Świetny temat - description: Otrzymano 50 polubień w temacie. Ta odznaka może być przyznawana wielokrotnie. - nice_share: - name: Niezłe udostępnienie - description: Udostępniono wpis 25 unikalnym odwiedzającym. - good_share: - name: Dobre udostępnienie - description: Udostępniono wpis 300 unikalnym odwiedzającym. - great_share: - name: Świetne udostępnienie - description: Udostępniono wpis 1000 unikalnych odwiedzających. - first_like: - name: Pierwsze polubienie - description: Polubiono wpis - first_flag: - name: Pierwsza flaga - description: Zgłoszenie wpisu - promoter: - name: Promotor - description: Zaproszenie użytkownika - campaigner: - name: Działacz - description: Zaproszenie 3 użytkowników (poziom zaufania 1) - champion: - name: Czempion - description: Zaproszenie 5 użytkowników (poziom zaufania 2) - first_share: - name: Pierwsze udostępnienie - description: Udostępniono wpis - first_link: - name: Pierwszy link - description: Dodano wewnętrzny link do innego tematu - first_quote: - name: Pierwszy cytat - description: Zacytowano użytkownika - read_guidelines: - name: Przeczytany przewodnik - description: Przeczytanie wytycznych społeczności - reader: - name: Czytelnik - description: Przeczytanie każdego wpisu w temacie z ponad 100 wpisami - popular_link: - name: Popularny link - description: Opublikowanie zewnętrznego linku, który otrzymał co najmniej 50 kliknięć - hot_link: - name: Gorący link - description: Opublikowanie zewnętrznego linku, który otrzymał co najmniej 300 kliknięć - famous_link: - name: Słynny link - description: Opublikowanie zewnętrznego linku, który otrzymał co najmniej 1000 kliknięć google_search: |
diff --git a/config/locales/client.pt.yml b/config/locales/client.pt.yml index 593e8db406f..490da9de51e 100644 --- a/config/locales/client.pt.yml +++ b/config/locales/client.pt.yml @@ -100,6 +100,8 @@ pt: x_years: one: "1 ano mais tarde" other: "%{count} anos mais tarde" + previous_month: 'Mês Anterior' + next_month: 'Mês Seguinte' share: topic: 'partilhar uma hiperligação para este tópico' post: 'Mensagem #%{postNumber}' @@ -110,6 +112,8 @@ pt: email: 'enviar esta hiperligação por email' action_codes: split_topic: "dividir este tópico %{when}" + invited_user: "Convidou %{who} %{when}" + removed_user: "Removeu %{who} %{when}" autoclosed: enabled: 'fechado %{when}' disabled: 'aberto %{when}' @@ -130,6 +134,19 @@ pt: disabled: 'removido da lista %{when}' topic_admin_menu: "Ações administrativas dos Tópicos" emails_are_disabled: "Todos os envios de e-mail foram globalmente desativados por um administrador. Nenhum e-mail de notificação será enviado." + s3: + regions: + us_east_1: "Este dos E.U.A. (Virgínia do Norte)" + us_west_1: "Oeste dos E.U.A. (California do Norte)" + us_west_2: "Oeste dos E.U.A. (Óregon)" + us_gov_west_1: "AWS GovCloud (E.U.A.)" + eu_west_1: "U.E. (Irlanda)" + eu_central_1: "U.E. (Francoforte)" + ap_southeast_1: "Ásia-Pacífico (Singapura)" + ap_southeast_2: "Ásia-Pacífico (Sydney)" + ap_northeast_1: "Ásia-Pacífico (Tóquio)" + ap_northeast_2: "Ásia-Pacífico (Seoul)" + sa_east_1: "América do Sul (São Paulo)" edit: 'editar o título e a categoria deste tópico' not_implemented: "Essa funcionalidade ainda não foi implementada, pedimos desculpa!" no_value: "Não" @@ -162,6 +179,8 @@ pt: more: "Mais" less: "Menos" never: "nunca" + every_30_minutes: "a cada 30 minutos" + every_hour: "a cada hora" daily: "diário" weekly: "semanal" every_two_weeks: "a cada duas semanas" @@ -173,6 +192,7 @@ pt: other: "{{count}} caracteres" suggested_topics: title: "Tópicos Sugeridos" + pm_title: "Mensagens Sugeridas" about: simple_title: "Acerca" title: "Acerca de %{title}" @@ -294,14 +314,26 @@ pt: one: "1 utilizador" other: "%{count} utilizadores" groups: + empty: + posts: "Não há nenhuma publicação feita por membros deste grupo." + members: "Não há nenhum membro neste grupo." + mentions: "Não há nenhuma menção deste grupo." + messages: "Não há nenhuma mensagem para este grupo." + topics: "Não há nenhum tópico feito por membros deste grupo." + add: "Adicionar" + selector_placeholder: "Adicionar membros" + owner: "proprietário" visible: "O grupo é visível para todos os utilizadores" title: one: "grupo" other: "grupos" members: "Membros" + topics: "Tópicos" posts: "Mensagens" + mentions: "Menções" + messages: "Mensagens" alias_levels: - title: "Quem pode usar este grupo como pseudónimo?" + title: "Quem pode mandar mensagens e @mencionar este grupo?" nobody: "Ninguém" only_admins: "Apenas administradores" mods_and_admins: "Apenas moderadores e Administradores" @@ -310,6 +342,19 @@ pt: trust_levels: title: "Nível de confiança concedido automaticamente a membros quando são adicionados:" none: "Nenhum" + notifications: + watching: + title: "A vigiar" + description: "Será notificado de cada nova publicação em todas as mensagens, e uma contagem de novas respostas será exibida." + tracking: + title: "A Acompanhar" + description: "Será notificado se alguém mencionar o seu @nome ou lhe responder, e uma contagem de novas respostas será exibida." + regular: + title: "Habitual" + description: "Será notificado se alguém mencionar o seu @nome ou responder-lhe." + muted: + title: "Mudo" + description: "Não será notificado de nada relacionado com novos tópicos neste grupo." user_action_groups: '1': "Gostos Dados" '2': "Gostos Recebidos" @@ -319,7 +364,6 @@ pt: '6': "Respostas" '7': "Menções" '9': "Citações" - '10': "Favoritos" '11': "Edições" '12': "Itens Enviados" '13': "Caixa de Entrada" @@ -329,6 +373,7 @@ pt: all_subcategories: "todas" no_subcategory: "nenhuma" category: "Categoria" + category_list: "Exibir lista de categorias" reorder: title: "Re-organizar Categorias" title_long: "Re-organizar a lista de categorias" @@ -385,16 +430,15 @@ pt: invited_by: "Convidado Por" trust_level: "Nível de Confiança" notifications: "Notificações" + statistics: "Estatísticas" desktop_notifications: label: "Notificações de Desktop" not_supported: "Não são suportadas notificações neste navegador. Desculpe." perm_default: "Ligar Notificações" perm_denied_btn: "Permissão Negada" - perm_denied_expl: "Tem permissões negadas para notificações. Utilize o seu navegador para ativar notificações, de seguida clique no botão quando concluir. (Desktop: O ícone mais à esquerda na barra de endereço. Móvel: 'Info do Sítio'.)" + perm_denied_expl: "Negou a permissão para as notificações. Autorize as notificações através das configurações do seu navegador." disable: "Desativar Notificações" - currently_enabled: "(atualmente ativo)" enable: "Ativar Notificações" - currently_disabled: "(atualmente inativo)" each_browser_note: "Nota: Tem que alterar esta configuração em todos os navegadores de internet que utiliza." dismiss_notifications: "Marcar tudo como lido" dismiss_notifications_tooltip: "Marcar como lidas todas as notificações por ler" @@ -418,7 +462,7 @@ pt: tracked_categories: "Acompanhado" tracked_categories_instructions: "Irá acompanhar automaticamente todos os novos tópicos nestas categorias. Uma contagem de novas mensagens irá aparecer junto ao tópico." muted_categories: "Silenciado" - muted_categories_instructions: "Não será notificado relativamente a novos tópicos nestas categorias, e não aparecerão no seu separador de tópicos não lidos." + muted_categories_instructions: "Não será notificado de nada acerca de novos tópicos nestas categorias, e estes não irão aparecer nos recentes." delete_account: "Eliminar A Minha Conta" delete_account_confirm: "Tem a certeza que pretende eliminar a sua conta de forma permanente? Esta ação não pode ser desfeita!" deleted_yourself: "A sua conta foi eliminada com sucesso." @@ -428,6 +472,8 @@ pt: users: "Utilizadores" muted_users: "Mudo" muted_users_instructions: "Suprimir todas as notificações destes utilizadores." + muted_topics_link: "Mostrar tópicos mudos" + automatically_unpin_topics: "Desafixar tópicos automaticamente quando eu chegar ao final." staff_counters: flags_given: "sinalizações úteis" flagged_posts: "mensagens sinalizadas" @@ -436,8 +482,15 @@ pt: warnings_received: "avisos" messages: all: "Todas" - mine: "Minha" - unread: "Não lidas" + inbox: "Caixa de Entrada" + sent: "Enviado" + archive: "Arquivo" + groups: "Os Meus Grupos" + bulk_select: "Selecionar mensagens" + move_to_inbox: "Mover para Caixa de Entrada" + move_to_archive: "Arquivo" + failed_to_move: "Falha ao mover as mensagens selecionadas (talvez a sua rede esteja em baixo)" + select_all: "Selecionar Tudo" change_password: success: "(email enviado)" in_progress: "(a enviar email)" @@ -482,8 +535,8 @@ pt: ok: "Enviar-lhe-emos um email para confirmar" invalid: "Por favor introduza um endereço de email válido" authenticated: "O seu email foi autenticado por {{provider}}" + frequency_immediately: "Enviar-lhe-emos um email imediatamente caso não leia o que lhe estamos a enviar." frequency: - zero: "Enviar-lhe-emos um email imediatamente caso não leia o que lhe estamos a enviar." one: "Só iremos enviar-lhe um email se não o tivermos visto no último minuto." other: "Só iremos enviar-lhe um email se não o tivermos visto nos últimos {{count}} minutos." name: @@ -521,12 +574,27 @@ pt: title: "Medalha de cartão de utilizador" website: "Sítio da Internet" email_settings: "Email" + like_notification_frequency: + title: "Notificar quando alguém gostar" + always: "Sempre" + first_time_and_daily: "Na primeira vez que mensagem é gostada e diariamente" + first_time: "A primeira vez que uma mensagem é gostada." + never: "Nunca" + email_previous_replies: + title: "Incluir respostas prévias no fundo do email." + unless_emailed: "a não ser quê previamente enviado" + always: "sempre" + never: "nunca" email_digests: title: "Quando não visitar o sítio, enviar um email com o resumo das novidades:" + every_30_minutes: "a cada 30 minutos" + every_hour: "A cada hora" daily: "diariamente" every_three_days: "a cada três dias" weekly: "semanalmente" every_two_weeks: "a cada duas semanas" + include_tl0_in_digests: "Incluir mensagens de novos utilizadores nos emails de resumo" + email_in_reply_to: "Incluir um excerto do mensagem respondida nos emails" email_direct: "Enviar-me um email quando alguém me citar, responder às minhas mensagens, mencionar o meu @nomedeutilizador, ou convidar-me para um tópico" email_private_messages: "Enviar-me um email quando alguém me envia uma mensagem" email_always: "Enviar-me notificações de email mesmo quando estou ativo no sítio" @@ -557,7 +625,9 @@ pt: user: "Utilizadores Convidados" sent: "Enviado" none: "Não há convites pendentes para mostrar." - truncated: "A mostrar os primeiros {{count}} convites." + truncated: + one: "A exibir o primeiro convite." + other: "A exibir os primeiros {{count}} convites." redeemed: "Convites Resgatados" redeemed_tab: "Resgatado" redeemed_tab_with_count: "Resgatados ({{count}})" @@ -592,6 +662,15 @@ pt: same_as_email: "A sua palavra-passe é a mesma que o seu email." ok: "A sua palavra-passe parece correta." instructions: "Pelo menos %{count} caracteres." + summary: + title: "Sumário" + stats: "Estatísticas" + top_replies: "Respostas" + more_replies: "Mais Respostas" + top_topics: "Melhores Tópicos" + more_topics: "Mais Tópicos" + top_badges: "Melhores Distintivos" + more_badges: "Mais Distintivos" associated_accounts: "Contas associadas" ip_address: title: "Último endereço IP" @@ -617,11 +696,13 @@ pt: server: "Erro de Servidor" forbidden: "Acesso Negado" unknown: "Erro" + not_found: "Página Não Encontrada" desc: network: "Por favor verifique a sua ligação." network_fixed: "Parece que está de volta." server: "Código de Erro: {{status}}" forbidden: "Não tem permissão para visualizar isso." + not_found: "Oops, a aplicação tentou carregar um URL que não existe." unknown: "Algo correu mal." buttons: back: "Voltar Atrás" @@ -632,8 +713,9 @@ pt: logout: "A sua sessão estava encerrada." refresh: "Atualizar" read_only_mode: - enabled: "O modo só de leitura está ativo. Pode continuar a navegar no sítio mas as interações podem não funcionar." + enabled: "Este sítio encontra-se no modo só de leitura. Por favor continue a navegar mas responder, dar gostos e outras acções estão de momento desativadas." login_disabled: "A função de início de sessão está desativada enquanto o sítio se encontrar no modo só de leitura." + logout_disabled: "A função de término de sessão está desativada enquanto o sítio se encontrar no modo só de leitura." too_few_topics_and_posts_notice: "Vamos começar esta discussão! Atualmente existem %{currentTopics} / %{requiredTopics} tópicos e %{currentPosts} / %{requiredPosts} mensagens. Novos visitantes precisam de conversações para ler e responder a." too_few_topics_notice: "Vamos começar esta discussão! Atualmente existem %{currentTopics} / %{requiredTopics} tópios. Novos visitantes precisam de algumas conversações para ler e responder a." too_few_posts_notice: "Vamos começar esta discussão! Atualmente existem %{currentPosts} / %{requiredPosts} mensagens. Novos visitantes precisam de algumas conversações para ler e responder a." @@ -656,22 +738,14 @@ pt: signup_cta: sign_up: "Inscrever-se" hide_session: "Lembrar-me amanhã" - hide_forever: "Não obrigado" + hide_forever: "não obrigado" hidden_for_session: "OK, Irei perguntar-lhe amanhã. Pode sempre usar 'Iniciar Sessão' para criar uma conta, também." intro: "Olá! :heart_eyes: Parece que está a gostar da discussão, mas não está inscrito para uma conta." - value_prop: "Quando cria uma conta, pode acompanhar exatamente o que leu, por isso volta sempre ao sítio onde ficou. Pode também obter notificações, aqui e por email, sempre que novas mensagens são feitas. E pode gostar de mensagens para partilhar o amor. :heartbeat:" - methods: - sso: "Inscrever-se é fácil: tudo o que precisa é uma conta no sítio principal." - only_email: "Inscrever-se é fácil: tudo o que precisa é um email e uma palavra-passe." - only_other: "Utilize a sua conta %{provider} para se inscrever." - one_and_email: "Utilize a sua conta %{provider}, ou um email e palavra-passe, para se inscrever." - multiple_no_email: "Inscrever-se é fácil: utilize qualquer um dos nossos %{count} inícios de sessão sociais." - multiple: "Inscrever-se é fácil: utilize qualquer um dos nossos %{count} inícios de sessão sociais, ou um email e palavra-passe." - unknown: "erro ao obter métodos suportados de início de sessão " + value_prop: "Quando cria uma conta, nós lembramo-nos exatamente do que leu, por isso volta sempre ao sítio onde ficou. Também recebe notificações, aqui ou por email, sempre que novas mensagens são feitas. E pode gostar de mensagens para partilhar o amor. :heartbeat:" summary: enabled_description: "Está a ver um resumo deste tópico: as mensagens mais interessantes são determinados pela comunidade." - description: "Existem {{count}} respostas." - description_time: "Existem {{count}} respostas com um tempo de leitura estimado de {{readingTime}} minutos." + description: "Existem {{replyCount}} respostas." + description_time: "Existem {{replyCount}} respostas com um tempo de leitura estimado de {{readingTime}} minutos." enable: 'Resumir Este Tópico' disable: 'Mostrar Todas As Mensagens' deleted_filter: @@ -725,6 +799,9 @@ pt: admin_not_allowed_from_ip_address: "Não pode iniciar sessão como administrador a partir desse endereço IP." resend_activation_email: "Clique aqui para enviar o email de ativação novamente." sent_activation_email_again: "Enviámos mais um email de ativação para o endereço {{currentEmail}}. Pode ser que demore alguns minutos; certifique-se que verifica a sua pasta de spam ou lixo." + to_continue: "Por favor Inicie Sessão" + preferences: "Necessita de ter sessão iniciada para alterar as suas preferências de utilizador." + forgot: "Não me recordo dos detalhes da minha conta" google: title: "com Google" message: "A autenticar com Google (certifique-se de que os bloqueadores de popup estão desativados)" @@ -734,6 +811,9 @@ pt: twitter: title: "com Twitter" message: "A autenticar com Twitter (certifique-se de que os bloqueadores de popup estão desativados)" + instagram: + title: "com Instagram" + message: "A autenticar com Instagram (certifique-se de que os bloqueadores de popup estão desativados)" facebook: title: "com Facebook" message: "A autenticar com o Facebook (certifique-se de que os bloqueadores de popup estão desativados)" @@ -747,8 +827,13 @@ pt: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + emoji: "Emoji :)" + more_emoji: "mais..." options: "Opções" whisper: "susurro" add_warning: "Este é um aviso oficial." @@ -759,6 +844,7 @@ pt: saved_local_draft_tip: "guardado localmente" similar_topics: "O seu tópico é similar a..." drafts_offline: "rascunhos offline" + group_mentioned: "Ao usar {{group}}, estará a notificar {{count}} pessoas." error: title_missing: "O título é obrigatório" title_too_short: "O título tem que ter pelo menos {{min}} caracteres." @@ -781,7 +867,7 @@ pt: show_edit_reason: "(adicione a razão para a edição)" reply_placeholder: "Digite aqui. Utilize Markdown, BBCode, ou HTML para formatar. Arraste ou cole imagens." view_new_post: "Ver a sua nova mensagem." - saving: "A Guardar..." + saving: "A Guardar" saved: "Guardado!" saved_draft: "Rascunho da mensagem em progresso. Selecione para continuar." uploading: "A carregar…" @@ -796,6 +882,7 @@ pt: link_description: "digite a descrição da hiperligação aqui" link_dialog_title: "Inserir Hiperligação" link_optional_text: "título opcional" + link_placeholder: "http://example.com \"texto opcional\"" quote_title: "Bloco de Citação" quote_text: "Bloco de Citação" code_title: "Texto pré-formatado" @@ -808,10 +895,11 @@ pt: heading_title: "Título" heading_text: "Título" hr_title: "Barra horizontal" - undo_title: "Desfazer" - redo_title: "Refazer" help: "Ajuda de Edição Markdown" toggler: "esconder ou exibir o painel de composição" + modal_ok: "OK" + modal_cancel: "Cancelar" + cant_send_pm: "Desculpe, não pode enviar uma mensagem para %{username}." admin_options_title: "Configurações opcionais do pessoal para este tópico" auto_close: label: "Tempo de fecho automático do tópico:" @@ -828,11 +916,16 @@ pt: more: "ver notificações antigas" total_flagged: "total de mensagens sinalizadas" mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" + posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" + liked_2: "
{{username}}, {{username2}} {{description}}
" + liked_many: + one: "
{{username}}, {{username2}} e 1 outro {{description}}
" + other: "
{{username}}, {{username2}} e {{count}} outros {{description}}
" private_message: "
{{username}} {{description}}
" invited_to_private_message: "
{{username}} {{description}}
" invited_to_topic: "
{{username}} {{description}}
" @@ -840,6 +933,9 @@ pt: moved_post: "
{{username}} moveu {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
Ganhou '{{description}}'
" + group_message_summary: + one: "
{{count}} mensagem na caixa de entrada do seu grupo {{group_name}}
" + other: "
{{count}} mensagens na caixa de entrada do seu grupo {{group_name}}
" alt: mentioned: "Mencionado por" quoted: "Citado por" @@ -854,8 +950,10 @@ pt: moved_post: "A sua mensagem foi movida por" linked: "Hiperligação para a sua mensagem" granted_badge: "Distintivo concedido" + group_message_summary: "Mensagens na caixa de entrada do seu grupo" popup: mentioned: '{{username}} mencionou-o em "{{topic}}" - {{site_title}}' + group_mentioned: '{{username}} mencionou-o em "{{topic}}" - {{site_title}}' quoted: '{{username}} citou-o em "{{topic}}" - {{site_title}}' replied: '{{username}} respondeu-lhe em "{{topic}}" - {{site_title}}' posted: '{{username}} publicou em "{{topic}}" - {{site_title}}' @@ -867,9 +965,9 @@ pt: from_my_computer: "Do meu dispositivo " from_the_web: "Da internet" remote_tip: "hiperligação para imagem" - remote_tip_with_attachments: "hiperligação para imagem ou ficheiro ({{authorized_extensions}})" + remote_tip_with_attachments: "hiperligação para imagem ou ficheiro {{authorized_extensions}}" local_tip: "selecionar imagens do seu dispositivo" - local_tip_with_attachments: "selecionar imagens ou ficheiros do seu dispositivo ({{authorized_extensions}})" + local_tip_with_attachments: "selecionar imagens ou ficheiros a partir do seu dispositivo {{authorized_extensions}}" hint: "(pode também arrastar o ficheiro para o editor para fazer o carregamento)" hint_for_supported_browsers: "pode também arrastar e largar ou colar imagens no editor" uploading: "A carregar" @@ -904,12 +1002,14 @@ pt: current_user: 'ir para a sua página de utilizador' topics: bulk: + unlist_topics: "Remover Tópicos da Lista" reset_read: "Repor Leitura" delete: "Eliminar Tópicos" - dismiss_posts: "Destituir mensagens" - dismiss_posts_tooltip: "Remover contagem de não lidos nestes tópicos, mas manter a exibição dos mesmos na minha lista de não lidos quando novas mensagens são criadas." - dismiss_topics: "Destituir Tópicos" - dismiss_topics_tooltip: "Parar a exibição destes tópicos na minha lista de não lidos quando são criadas novas mensagens" + dismiss: "Destituir" + dismiss_read: "Destituir todos os não lidos" + dismiss_button: "Destituir..." + dismiss_tooltip: "Destituir apenas novas mensagens ou parar o acompanhamento de tópicos" + also_dismiss_topics: "Parar de acompanhar estes tópicos para que estes nunca me apareçam como não lidos novamente" dismiss_new: "Destituir Novo" toggle: "ativar seleção em massa de tópicos" actions: "Ações em Massa" @@ -933,8 +1033,8 @@ pt: top: "Não existem tópicos recentes." search: "Não há resultados na pesquisa." educate: - new: '
Os seus novos tópicos aparecem aqui.
Por defeito, os tópicos são considerados novos e mostrarão o indicador novo caso tenham sido criados nos últimos 2 dias.
Pode alterar isto nas suas preferências.
' - unread: '
Os seus tópicos não lidos aparecem aqui.
Por defeito, os tópicos são considerados não lidos e aparecem nas contagens de não lidos 1 Se:
Ou, se definiu explicitamente o tópico para acompanhar ou vigiar através do controlo de notificações que se encontra na parte inferior de cada tópico.
Pode alterar isto nas suas preferências.
' + new: '
Os seus novos tópicos aparecem aqui.
Por defeito, os tópicos são considerados novos e mostrarão o indicador novo caso tenham sido criados nos últimos 2 dias.
Pode alterar isto nas suas preferências.
' + unread: '
Os seus tópicos não lidos aparecem aqui.
Por defeito, os tópicos são considerados não lidos e aparecem nas contagens de não lidos 1 Se:</p>
Ou, se definiu explicitamente o tópico para acompanhar ou vigiar através do controlo de notificações que se encontra na parte inferior de cada tópico.
Visite as preferências para alterar isto.
'
bottom:
latest: "Não existem mais tópicos recentes."
hot: "Não existem mais tópicos quentes."
@@ -954,6 +1054,12 @@ pt:
create: 'Novo Tópico'
create_long: 'Criar um novo Tópico'
private_message: 'Iniciar uma mensagem'
+ archive_message:
+ help: 'Mover mensagem para o seu arquivo'
+ title: 'Arquivo'
+ move_to_inbox:
+ title: 'Mover para Caixa de Entrada'
+ help: 'Mover mensagem de volta para a Caixa de Entrada'
list: 'Tópicos'
new: 'novo tópico'
unread: 'não lido'
@@ -1004,6 +1110,7 @@ pt:
auto_close_title: 'Configurações para Fechar Automaticamente'
auto_close_save: "Guardar"
auto_close_remove: "Não Fechar Este Tópico Automaticamente"
+ auto_close_immediate: "A última mensagem neste tópico já tem %{hours} horas, por isso o tópico será fechado imediatamente."
progress:
title: progresso do tópico
go_top: "topo"
@@ -1053,7 +1160,7 @@ pt:
description: "Não será notificado de nada relacionado com esta mensagem."
muted:
title: "Silenciado"
- description: "Não será notificado de nada que esteja relacionado com este tópico, e este não será apresentado no seu separador de 'não lido'."
+ description: "Nunca será notificado de nada acerca deste tópico, e este não irá aparecer nos recentes."
actions:
recover: "Recuperar Tópico"
delete: "Eliminar Tópico"
@@ -1095,25 +1202,24 @@ pt:
unpin_until: "Remover este tópico do topo da categoria {{categoryLink}} ou espere até %{until}."
pin_note: "Os utilizadores podem desafixar individualmente o tópico por si próprios."
pin_validation: "É necessária uma data para fixar este tópico."
+ not_pinned: "Não há tópicos fixados em {{categoryLink}}."
already_pinned:
- zero: "Não há tópicos fixados em {{categoryLink}}."
- one: "Tópicos atualmente fixados em {{categoryLink}}: 1."
- other: "Tópicos atualmente fixados em {{categoryLink}}: {{count}}."
+ one: "Tópicos atualmente fixados em {{categoryLink}}: 1"
+ other: "Tópicos atualmente fixados em {{categoryLink}}: {{count}}"
pin_globally: "Fazer com que este tópico apareça no topo da lista de todos os tópicos até"
confirm_pin_globally: "Já tem {{count}} tópicos fixados globalmente. Demasiados tópicos fixados podem ser um fardo para utilizadores novos e anónimos. Tem a certeza que deseja fixar outro tópico globalmente?"
unpin_globally: "Remover este tópico do topo de todas as listas de tópicos."
unpin_globally_until: "Remover este tópico do topo da lista de todos os tópicos ou espere até %{until}."
global_pin_note: "Os utilizadores podem desafixar individualmente o tópico por si próprios."
+ not_pinned_globally: "Não existem tópicos fixados globalmente."
already_pinned_globally:
- zero: "Não há tópicos fixados globalmente."
- one: "Tópicos atualmente fixados globalmente: 1."
- other: "Tópicos atualmente fixados globalmente: {{count}}."
+ one: "Tópicos atualmente fixados globalmente: 1"
+ other: "Tópicos atualmente fixados globalmente: {{count}}"
make_banner: "Tornar este tópico numa faixa que apareça no topo de todas as páginas."
remove_banner: "Remover a faixa que aparece no topo de todas as páginas."
banner_note: "Os utilizadores podem destituir a faixa ao fecharem-na. Apenas um tópico pode ser considerado uma faixa em qualquer momento."
- already_banner:
- zero: "Não há nenhum tópico de faixa."
- one: "Há atualmente um tópico de faixa."
+ no_banner_exists: "Não existe tópico de faixa."
+ banner_exists: "Existe atualmente um tópico de faixa."
inviting: "A Convidar..."
automatically_add_to_groups_optional: "Este convite também inclui acesso a estes grupos: (opcional, apenas Administração)"
automatically_add_to_groups_required: "Esse convite também inclui acesso a estes grupos: (Obrigatório, apenas Administração)"
@@ -1125,6 +1231,7 @@ pt:
success: "Convidámos esse utilizador para participar nesta mensagem."
error: "Pedimos desculpa, ocorreu um erro ao convidar esse utilizador."
group_name: "nome do grupo"
+ controls: "Controlos de Tópico"
invite_reply:
title: 'Convidar'
username_placeholder: "nome de utilizador"
@@ -1219,8 +1326,8 @@ pt:
has_likes_title:
one: "1 pessoa gostou desta mensagem"
other: "{{count}} pessoas gostaram desta mensagem"
+ has_likes_title_only_you: "você gostou desta mensagem"
has_likes_title_you:
- zero: "você gostou desta mensagem"
one: "você e 1 outra pessoa gostaram desta mensagem"
other: "você e {{count}} outras pessoas gostaram desta mensagem"
errors:
@@ -1242,9 +1349,10 @@ pt:
via_email: "esta mensagem chegou por email"
whisper: "esta mensagem é um susurro privado para os moderadores"
wiki:
- about: "esta mensagem é uma wiki; utilizadores comuns podem editá-la"
+ about: "esta mensagem é uma wiki"
archetypes:
save: 'Guardar as Opções'
+ few_likes_left: "Obrigado por partilhar o amor! Restam-lhe apenas um gostos para hoje."
controls:
reply: "começar a compor uma resposta a este tópico"
like: "gostar deste tópico"
@@ -1270,6 +1378,7 @@ pt:
revert_to_regular: "Remover Cor do Pessoal"
rebake: "Reconstruir HTML"
unhide: "Mostrar"
+ change_owner: "Mudar Titularidade"
actions:
flag: 'Sinalizar'
defer_flags:
@@ -1291,17 +1400,14 @@ pt:
like: "Retirar gosto"
vote: "Retirar voto"
people:
- off_topic: "{{icons}} sinalizou isto como fora de contexto"
- spam: "{{icons}} sinalizou isto como spam"
- spam_with_url: "{{icons}} sinalizaram isto como spam"
- inappropriate: "{{icons}} sinalizou isto como inapropriado"
- notify_moderators: "{{icons}} moderadores notificados"
- notify_moderators_with_url: "{{icons}} moderadores notificados"
- notify_user: "{{icons}} enviou uma mensagem"
- notify_user_with_url: "{{icons}} enviou uma mensagem"
- bookmark: "{{icons}} adicionaram um marcador a isto"
- like: "{{icons}} gostaram disto"
- vote: "{{icons}} votaram nisto"
+ off_topic: "sinalizou isto como fora de contexto"
+ spam: "sinalizou isto como spam"
+ inappropriate: "sinalizou isto como inapropriado"
+ notify_moderators: "moderadores notificados"
+ notify_user: "enviou uma mensagem"
+ bookmark: "adicionou um marcador disto"
+ like: "gostou disto"
+ vote: "votou nisto"
by_you:
off_topic: "Sinalizou isto como fora de contexto"
spam: "Sinalizou isto como spam"
@@ -1361,10 +1467,6 @@ pt:
vote:
one: "1 pessoa votou nesta mensagem"
other: "{{count}} pessoas votaram nesta mensagem"
- edits:
- one: 1 edição
- other: "{{count}} edições"
- zero: sem edições
delete:
confirm:
one: "Tem a certeza que quer eliminar essa mensagem?"
@@ -1377,6 +1479,7 @@ pt:
last: "Última revisão"
hide: "Esconder revisão"
show: "Mostrar revisão"
+ revert: "Reverter para esta revisão"
comparing_previous_to_current_out_of_total: "{{previous}} {{current}} / {{total}}"
displays:
inline:
@@ -1445,19 +1548,18 @@ pt:
notifications:
watching:
title: "A vigiar"
- description: "Irá vigiar automaticamente todos os novos tópicos nestas categorias. Será notificado de todas as novas mensagens e tópicos, e uma contagem de novas respostas irá aparecer para estes tópicos."
+ description: "Irá vigiar automaticamente todos os novos tópicos nestas categorias. Irá ser notificado de cada nova mensagem em cada tópico, e uma contagem de novas respostas será exibida."
tracking:
title: "Acompanhar"
- description: "Irá acompanhar automaticamente todos os novos tópicos nestas categorias. Uma contagem de novas respostas irá aparecer para estes tópicos."
+ description: "Irá acompanhar automaticamente todos os novos tópicos nestas categorias. Irá ser notificado se alguém mencionar o seu @nome ou lhe responder, e uma contagem de novas respostas será exibida."
regular:
- title: "Habitual"
+ title: "Normal"
description: "Será notificado se alguém mencionar o seu @nome ou responder-lhe."
muted:
title: "Silenciado"
- description: "Não será notificado relativamente acerca de novos tópicos nestas categorias, e não aparecerão no seu separador de não lidos."
+ description: "Nunca será notificado de nada acerca de novos tópicos nestas categorias, e estes não irão aparecer nos recentes."
flagging:
title: 'Obrigado por ajudar a manter a nossa comunidade cívica!'
- private_reminder: 'as sinalizações são privadas, visíveis apenas para o pessoal'
action: 'Sinalizar Mensagem'
take_action: "Acionar"
notify_action: 'Mensagem'
@@ -1469,6 +1571,7 @@ pt:
submit_tooltip: "Submeter a sinalização privada"
take_action_tooltip: "Atingir imediatamente o limite de sinalizações, em vez de esperar por mais denúncias da comunidade"
cant: "Pedimos desculpa, não é possível colocar uma sinalização nesta mensagem neste momento."
+ notify_staff: 'Notificar o pessoal privadamente'
formatted_name:
off_topic: "Está fora do contexto"
inappropriate: "É inapropriado"
@@ -1507,7 +1610,7 @@ pt:
help: "Este tópico foi desafixado por si; será mostrado na ordem habitual"
pinned_globally:
title: "Fixado Globalmente"
- help: "Este tópico está fixado globalmente; será mostrado no topo de todas as listas"
+ help: "Este tópico está fixado globalmente; será exibido no topo dos recentes e da sua categoria"
pinned:
title: "Fixado"
help: "Este tópico foi fixado por si; será mostrado no topo da sua categoria"
@@ -1550,8 +1653,8 @@ pt:
with_topics: "%{filter} tópicos"
with_category: "%{filter} %{category} tópicos"
latest:
- title:
- zero: "Recentes"
+ title: "Recente"
+ title_with_count:
one: "Recente (1)"
other: "Recentes ({{count}})"
help: "tópicos com mensagens recentes"
@@ -1569,10 +1672,10 @@ pt:
title_in: "Categoria - {{categoryName}}"
help: "todos os tópicos agrupados por categoria"
unread:
- title:
- zero: "Não lido"
- one: "Não lido (1)"
- other: "Não lidos ({{count}})"
+ title: "Não Lido"
+ title_with_count:
+ one: "Não Lido (1)"
+ other: "Não Lidos ({{count}})"
help: "tópicos que está atualmente a vigiar ou a acompanhar com mensagens não lidas"
lower_title_with_count:
one: "1 não lido"
@@ -1582,8 +1685,8 @@ pt:
one: "1 novo"
other: "{{count}} novos"
lower_title: "novo"
- title:
- zero: "Novo"
+ title: "Novo"
+ title_with_count:
one: "Novo (1)"
other: "Novos ({{count}})"
help: "tópicos criados nos últimos dias"
@@ -1594,8 +1697,8 @@ pt:
title: "Marcadores"
help: "tópicos que marcou"
category:
- title:
- zero: "{{categoryName}}"
+ title: "{{categoryName}}"
+ title_with_count:
one: "{{categoryName}} (1)"
other: "{{categoryName}} ({{count}})"
help: "tópicos recentes na categoria {{categoryName}}"
@@ -1677,6 +1780,7 @@ pt:
refresh_report: "Atualizar relatório"
start_date: "Data de Início"
end_date: "Data final"
+ groups: "Todos os grupos"
commits:
latest_changes: "Últimas alterações: atualize com frequência!"
by: "por"
@@ -1757,15 +1861,24 @@ pt:
delete_confirm: "Eliminar este grupo?"
delete_failed: "Impossível eliminar grupo. Se se trata de um grupo automático, não pode ser eliminado."
delete_member_confirm: "Remova o '%{username}' do grupo '%{group}'?"
+ delete_owner_confirm: "Remover privilégios do proprietário para '%{username}'?"
name: "Nome"
add: "Adicionar"
add_members: "Adicionar membros"
custom: "Personalizar"
+ bulk_complete: "Os utilizadores foram adicionados ao grupo."
+ bulk: "Adicionar ao Grupo em Massa"
+ bulk_paste: "Colar uma lista de nomes de utilizador ou emails, um por linha:"
+ bulk_select: "(selecionar um grupo)"
automatic: "Automático"
automatic_membership_email_domains: "Utilizadores que registem um domínio de email que corresponde exactamente a algum desta lista irão ser automaticamente adicionados a este grupo:"
automatic_membership_retroactive: "Aplicar a mesma regra de domínio de email para adicionar utilizadores registados existentes"
default_title: "Título padrão para todos os utilizadores neste grupo"
primary_group: "Definir automaticamente como grupo primário"
+ group_owners: Proprietários
+ add_owners: Adicionar proprietários
+ incoming_email: "Endereço de email de entrada personalizado"
+ incoming_email_placeholder: "introduza o endereço de email"
api:
generate_master: "Gerar Chave Mestra API "
none: "Não existem chaves API ativas neste momento."
@@ -1839,11 +1952,11 @@ pt:
is_disabled: "A opção de restauro encontra-se desativada nas configurações do sítio."
label: "Restaurar"
title: "Restaurar a cópia de segurança"
- confirm: "Tem a certeza que deseja restaurar esta cópia de segurança?"
+ confirm: "Tem a certeza que deseja recuperar esta cópia de segurança?"
rollback:
label: "Reverter"
title: "Reverter a base de dados para um estado anterior operacional"
- confirm: "Tem a certeza que deseja reverter a base de dados para um estado anterior operacional?"
+ confirm: "Tem a certeza que pretende reverter a base de dados para o estado de funcionamento anterior?"
export_csv:
user_archive_confirm: "Tem a certeza que deseja descarregar as suas mensagens?"
success: "Exportação iniciada, será notificado através de mensagem assim que o processo estiver concluído."
@@ -1894,6 +2007,14 @@ pt:
color: "Cor"
opacity: "Opacidade"
copy: "Copiar"
+ email_templates:
+ title: "Modelos de Email"
+ subject: "Assunto"
+ multiple_subjects: "Este modelo de email tem múltiplos assuntos."
+ body: "Corpo"
+ none_selected: "Selecione um modelo de email para começar a editar."
+ revert: "Reverter Alterações"
+ revert_confirm: "Tem a certeza que quer reverter as suas alterações?"
css_html:
title: "CSS/HTML"
long_title: "Personalizações CSS e HTML"
@@ -1938,18 +2059,18 @@ pt:
love:
name: 'amor'
description: "A cor do botão 'gosto'."
- wiki:
- name: 'wiki'
- description: "Cor base utilizada para o fundo de mensagens wiki"
email:
- title: "Email"
+ title: "Emails"
settings: "Configurações"
- all: "Todos"
+ templates: "Templates"
+ preview_digest: "Pré-visualizar Resumo"
sending_test: "A enviar Email de teste..."
error: "ERRO - %{server_error}"
test_error: "Occorreu um problema no envio do email de teste. Por favor verifique novamente as suas definições de email, verifique se o seu host não está a bloquear conexões de email, e tente novamente."
sent: "Enviado"
skipped: "Ignorado"
+ received: "Recebido"
+ rejected: "Rejeitado"
sent_at: "Enviado em"
time: "Tempo"
user: "Utilizador"
@@ -1959,7 +2080,6 @@ pt:
send_test: "Enviar Email de Teste"
sent_test: "enviado!"
delivery_method: "Método de Entrega"
- preview_digest: "Pré-visualizar Resumo"
preview_digest_desc: "Pré-visualizar o conteúdo dos emails de resumo enviados aos utilizadores inativos."
refresh: "Atualizar"
format: "Formato"
@@ -1968,6 +2088,25 @@ pt:
last_seen_user: "Último Utilizador Visto:"
reply_key: "Chave de Resposta"
skipped_reason: "Ignorar Motivo"
+ incoming_emails:
+ from_address: "De"
+ to_addresses: "Para"
+ cc_addresses: "Cc"
+ subject: "Assunto"
+ error: "Erro"
+ none: "Nenhum email de entrada encontrado."
+ modal:
+ title: "Detalhes de emails recebidos."
+ error: "Erro"
+ subject: "Assunto"
+ body: "Corpo"
+ rejection_message: "Correio de rejeição"
+ filters:
+ from_placeholder: "de@exemplo.com"
+ to_placeholder: "para@exemplo.com"
+ cc_placeholder: "cc@exemplo.com"
+ subject_placeholder: "Assunto..."
+ error_placeholder: "Erro"
logs:
none: "Nenhuns logs encontrados."
filters:
@@ -1986,6 +2125,7 @@ pt:
ip_address: "IP"
topic_id: "ID do Tópico"
post_id: "ID da Mensagem"
+ category_id: "ID da Categoria"
delete: 'Eliminar'
edit: 'Editar'
save: 'Guardar'
@@ -2016,6 +2156,7 @@ pt:
change_site_setting: "alterar configurações do sítio"
change_site_customization: "alterar personalização do sítio"
delete_site_customization: "remover personalização do sítio"
+ change_site_text: "alterar texto do sítio"
suspend_user: "utilizador suspenso"
unsuspend_user: "utilizador não suspenso"
grant_badge: "conceder distintivo"
@@ -2026,6 +2167,16 @@ pt:
impersonate: "personificar"
anonymize_user: "tornar utilizador anónimo"
roll_up: "agregar blocos IP"
+ change_category_settings: "alterar configurações de categoria"
+ delete_category: "eliminar categoria"
+ create_category: "criar categoria"
+ block_user: "utilizador bloqueado"
+ unblock_user: "Desbloquear utilizador"
+ grant_admin: "conceder administração"
+ revoke_admin: "revogar administração"
+ grant_moderation: "conceder moderação"
+ revoke_moderation: "revogar moderação"
+ backup_operation: "operação de cópia de segurança"
screened_emails:
title: "Emails Filtrados"
description: "Quando alguém tenta criar uma nova conta, os seguintes endereços de email serão verificados e o registo será bloqueado, ou outra ação será executada."
@@ -2092,9 +2243,9 @@ pt:
pending: 'Utilizadores com Confirmação Pendente'
newuser: 'Utilizadores no Nível de Confiança 0 (Novo Utilizador)'
basic: 'Utilizadores no Nível de Confiança 1 (Utilizador Básico)'
- regular: 'Utilizadores no Nível de Confiança 2 (Membro)'
- leader: 'Utilizadores no Nível de Confiança 3 (Habitual)'
- elder: 'Utilizadores no Nível de Confiança 4(Líder)'
+ member: 'Utilizadores no Nível de Confiança 2 (Membro)'
+ regular: 'Utilizadores no Nível de Confiança 3 (Habitual)'
+ leader: 'Utilizadores no Nível de Confiança 4 (Líder)'
staff: "Pessoal"
admins: 'Utilizadores da Administração'
moderators: 'Moderadores'
@@ -2127,6 +2278,7 @@ pt:
moderator: "Moderador?"
admin: "Administração?"
blocked: "Bloqueado?"
+ staged: "Temporário?"
show_admin_profile: "Administração"
edit_title: "Editar Título"
save_title: "Guardar Título"
@@ -2191,9 +2343,12 @@ pt:
deactivate_failed: "Ocorreu um problema ao desativar o utilizador."
unblock_failed: 'Ocorreu um problema ao desbloquear o utilizador.'
block_failed: 'Ocorreu um problema ao bloquear o utilizador.'
+ block_confirm: 'Tem a certeza que pretende bloquear este utilizador? Este não será capaz de criar novos tópicos ou mensagens.'
+ block_accept: 'Sim, bloquear este utilizador'
deactivate_explanation: "Um utilizador desativado deve revalidar o seu email."
suspended_explanation: "Um utilizador suspenso não pode iniciar sessão."
block_explanation: "Um utilizador bloqueado não pode publicar mensagens ou iniciar tópicos."
+ stage_explanation: "Um utilizador em estado temporário pode apenas publicar por email em tópicos específicos."
trust_level_change_failed: "Ocorreu um problema ao alterar o Nível de Confiança do utilizador."
suspend_modal_title: "Utilizador Suspenso"
trust_level_2_users: "Utilizadores no Nível de Confiança 2"
@@ -2204,7 +2359,7 @@ pt:
unlock_trust_level: "Desbloquear Nível de Confiança"
tl3_requirements:
title: "Requisitos para o Nível de Confiança 3"
- table_title: "Nos últimos 100 dias:"
+ table_title: "Nos últimos %{time_period} dias:"
value_heading: "Valor"
requirement_heading: "Requisito"
visits: "Visitas"
@@ -2265,8 +2420,15 @@ pt:
confirm: 'Confirmação'
dropdown: "Suspenso"
site_text:
- none: "Escolha um tipo de conteúdo para começar a editar."
+ description: "Pode personalizar qualquer texto no seu fórum. Por favor comece por pesquisar abaixo:"
+ search: "Pesquisar o texto que gostaria de editar"
title: 'Conteúdo do Texto'
+ edit: 'editar'
+ revert: "Reverter Alterações"
+ revert_confirm: "Tem a certeza que quer reverter as suas alterações?"
+ go_back: "De volta à Pesquisa"
+ recommended: "Recomendamos personalizar o seguinte texto para que se aplique às suas necessidades."
+ show_overriden: 'Apenas mostrar valores alterados'
site_settings:
show_overriden: 'Apenas mostrar valores alterados'
title: 'Configurações'
@@ -2354,8 +2516,8 @@ pt:
bad_count_warning:
header: "AVISO!"
text: "Estão em falta amostras de concessão. Isto acontece quando a \"query\" do sistema de distintivos devolve IDs de nomes de utilizador ou IDs de mensagens que não existem. Isto pode causar resultados inesperados futuramente, sendo que deverá rever a sua \"query\"."
+ no_grant_count: "Nenhuns distintivos a atribuir."
grant_count:
- zero: "Nenhuns distintivos a atribuir."
one: "1 distintivo a atribuir."
other: "%{count} distintivos a atribuir."
sample: "Amostra:"
@@ -2465,9 +2627,10 @@ pt:
mark_tracking: 'm, t Acompanhar tópico'
mark_watching: 'm, w Vigiar este tópico'
badges:
+ earned_n_times:
+ one: "Ganhou este distintivo 1 vez"
+ other: "Ganhou este distintivo %{count} vezes"
title: Distintivos
- allow_title: "pode ser usado como título"
- multiple_grant: "pode ser premiado múltiplas vezes"
badge_count:
one: "1 Distintivo"
other: "%{count} Distintivos"
@@ -2490,97 +2653,6 @@ pt:
name: Outro
posting:
name: A publicar
- badge:
- editor:
- name: Editor
- description: Primeira edição de uma mensagem
- basic_user:
- name: Básico
- description: Atribuídas todas as funções comunitárias essenciais
- member:
- name: Membro
- description: Atribuídos convites
- regular:
- name: Habitual
- description: Atribuída re-categorização, renomeação, seguimento de hiperligações e lounge
- leader:
- name: Líder
- description: Atribuída a edição, destaque, encerramento, arquivo, separação e junção globais
- welcome:
- name: Bem-vindo
- description: Recebeu um gosto
- autobiographer:
- name: Autobiógrafo
- description: 'Preencheu informações no perfil de utilizador '
- anniversary:
- name: Aniversário
- description: Membro ativo há um ano, publicou pelo menos uma vez
- nice_post:
- name: Boa Mensagem
- description: Recebeu 10 gostos numa mensagem. Este distintivo pode ser concedido diversas vezes
- good_post:
- name: Ótima Mensagem
- description: 'Recebeu 25 gostos numa mensagem. Este distintivo pode ser concedido diversas vezes '
- great_post:
- name: Excelente Mensagem
- description: Recebeu 50 gostos numa mensagem. Este distintivo pode ser concedido diversas vezes
- nice_topic:
- name: Bom Tópico
- description: Recebeu 10 gostos num tópico. Este distintivo pode ser concedido diversas vezes
- good_topic:
- name: Ótimo Tópico
- description: 'Recebeu 25 gostos num tópico. Este distintivo pode ser concedido diversas vezes '
- great_topic:
- name: Excelente Tópico
- description: Recebeu 50 gostos num tópico. Este distintivo pode ser concedido diversas vezes
- nice_share:
- name: Boa Partilha
- description: Partilhou uma mensagem com 25 visitantes únicos
- good_share:
- name: Ótima Partilha
- description: Partilhou uma mensagem com 300 visitantes únicos
- great_share:
- name: Excelente Partilha
- description: Partilhou uma mensagem com 1000 visitantes únicos
- first_like:
- name: Primeiro Gosto
- description: Gostou de uma mensagem
- first_flag:
- name: Primeira Sinalização
- description: Sinalizou uma mensagem
- promoter:
- name: Promotor
- description: Convidou um utilizador
- campaigner:
- name: Partidário
- description: Convidou 3 utilizadores básicos (nível de confiança 1)
- champion:
- name: Campeão
- description: Convidou 5 membros (nível de confiança 2)
- first_share:
- name: Primeira Partilha
- description: Partilhou uma mensagem
- first_link:
- name: Primeira Hiperligação
- description: Adicionou uma hiperligação interna para outro tópico
- first_quote:
- name: Primeira Citação
- description: Citou um utilizador
- read_guidelines:
- name: Ler Diretrizes
- description: Leu as diretrizes da comunidade
- reader:
- name: Leitor
- description: Ler todas as mensagens num tópico com mais de 100 mensagens
- popular_link:
- name: Hiperligação Popular
- description: Foi publicada uma hiperligação externa com pelo menos 50 cliques
- hot_link:
- name: Hiperligação Quente
- description: Foi publicada uma hiperligação externa com pelo menos 300 cliques
- famous_link:
- name: Hiperligação Famosa
- description: Foi publicada uma hiperligação externa com pelo menos 1000 cliques
google_search: |
Pesquise com o Google
diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml index d9e7b213413..74cae231c1c 100644 --- a/config/locales/client.pt_BR.yml +++ b/config/locales/client.pt_BR.yml @@ -9,8 +9,8 @@ pt_BR: js: number: format: - separator: "," - delimiter: "." + separator: "." + delimiter: "," human: storage_units: format: '%n %u' @@ -100,6 +100,8 @@ pt_BR: x_years: one: "1 ano depois" other: "%{count} anos depois" + previous_month: 'Mês Anterior' + next_month: 'Próximo Mês' share: topic: 'compartilhe o link desse tópico' post: 'post #%{postNumber}' @@ -108,8 +110,33 @@ pt_BR: facebook: 'compartilhe este link no Facebook' google+: 'compartilhe este link no Google+' email: 'enviar esse link para um email' + action_codes: + split_topic: "dividiu este tópico %{when}" + invited_user: "convidou %{who} %{when}" + removed_user: "removido %{who} %{when}" + autoclosed: + enabled: 'fechou %{when}' + disabled: 'abriu %{when}' + closed: + enabled: 'fechou %{when}' + disabled: 'abriu %{when}' + archived: + enabled: 'arquivou %{when}' + disabled: 'desarquivou %{when}' + pinned: + enabled: 'fixou %{when}' + disabled: 'desafixou %{when}' + pinned_globally: + enabled: 'fixou globalmente %{when}' + disabled: 'desafixou %{when}' + visible: + enabled: 'listou %{when}' + disabled: 'desalistou %{when}' topic_admin_menu: "ações administrativas do tópico" emails_are_disabled: "Todo o envio de email foi globalmente desabilitado por algum administrador. Nenhum email de notificações de qualquer tipo será enviado." + s3: + regions: + sa_east_1: "América do Sul (São Paulo)" edit: 'edite o título e a categoria deste tópico' not_implemented: "Esse recurso ainda não foi implementado, desculpe!" no_value: "Não" @@ -123,6 +150,7 @@ pt_BR: admin_title: "Admin" flags_title: "Sinalizações" show_more: "mostrar mais" + show_help: "opções" links: "Links" links_lowercase: one: "link" @@ -141,6 +169,8 @@ pt_BR: more: "Mais" less: "Menos" never: "nunca" + every_30_minutes: "a cada 30 minutos" + every_hour: "a cada hora" daily: "diário" weekly: "semanal" every_two_weeks: "a cada duas semanas" @@ -152,6 +182,7 @@ pt_BR: other: "{{count}} caracteres" suggested_topics: title: "Tópicos sugeridos" + pm_title: "Mensagens Sugeridas" about: simple_title: "Sobre" title: "Sobre %{title}" @@ -161,7 +192,7 @@ pt_BR: stat: all_time: "Desde o começo" last_7_days: "Últimos 7 dias" - last_30_days: "Últimos 30 Dias" + last_30_days: "Últimos 30 dias" like_count: "Curtidas" topic_count: "Tópicos" post_count: "Mensagens" @@ -199,6 +230,7 @@ pt_BR: saved: "Salvo!" upload: "Enviar" uploading: "Enviando..." + uploading_filename: "Enviando {{filename}}" uploaded: "Enviado!" enable: "Habilitar" disable: "Desabilitar" @@ -206,6 +238,7 @@ pt_BR: revert: "Reverter" failed: "Falhou" switch_to_anon: "Modo Anônimo" + switch_from_anon: "Sair do Modo Anônimo" banner: close: "Ignorar este banner." edit: "Editar este banner >>" @@ -228,7 +261,7 @@ pt_BR: one: "Este tópico tem 1 mensagem aguardando aprovação" other: "Este tópico tem {{count}} mensagens aguardando aprovação" confirm: "Salvar Mudanças" - delete_prompt: "Você tem certeza que deseja deletar %{username}? Isso irá remover todas as mensagens e irá bloquear o email e endereço IP desse usuário." + delete_prompt: "Você tem certeza que quer deletar %{username}? Esta ação irá remover todas as suas postagens e bloquear seu email e endereço IP." approval: title: "Aprovação Necessária da Mensagem" description: "Nós recebemos sua nova postagem mas é necessário que seja aprovada por um moderador antes de ser exibida. Por favor tenha paciência." @@ -271,19 +304,47 @@ pt_BR: one: "1 usuário" other: "%{count} usuários" groups: + empty: + posts: "Não há postagens por membros deste grupo." + members: "Não há membros neste grupo." + mentions: "Não há menção a este grupo." + messages: "Não há mensagens para este grupo." + topics: "Não há topicos por membros deste grupo." + add: "Adicionar" + selector_placeholder: "Adicionar membros" + owner: "proprietário" visible: "Grupo é visível para todos os usuários" title: one: "grupo" other: "grupos" members: "Membros" + topics: "Tópicos" posts: "Mensagens" + mentions: "Menções" + messages: "Mensagens" alias_levels: - title: "Quem pode usar este grupo como um apelido?" + title: "Quem pode enviar mensagem e @mention a este grupo?" nobody: "Ninguém" only_admins: "Somente administradores" mods_and_admins: "Somente moderadores e Administradores" members_mods_and_admins: "Somente membros do grupo, moderadores e administradores" everyone: "Todos" + trust_levels: + title: "Nível de Confiança automaticamente concedido aos membros quando eles são incluídos" + none: "Nenhum" + notifications: + watching: + title: "Assistindo" + description: "Você será notificado sobre toda nova postagem em toda mensagem, e uma contagem de novas mensagens será mostrada." + tracking: + title: "Rastreando" + description: "Você será notificado se alguém mencionar seu @name ou responder a você, e uma contagem de novas respostas será mostrada." + regular: + title: "Normal" + description: "Você será notificado se alguém mencionar seu @name ou responder a você." + muted: + title: "Mudo" + description: "Você será notificado sobre qualquer coisa sobre novos tópicos neste grupo." user_action_groups: '1': "Curtidas dadas" '2': "Curtidas recebidas" @@ -293,7 +354,6 @@ pt_BR: '6': "Respostas" '7': "Menções" '9': "Citações" - '10': "Favoritos" '11': "Edições" '12': "Itens enviados" '13': "Caixa de Entrada" @@ -303,6 +363,15 @@ pt_BR: all_subcategories: "todos" no_subcategory: "nenhum" category: "Categoria" + category_list: "Exibir lista de categorias." + reorder: + title: "Reordenar Categorias" + title_long: "Reorganizar a lista de categorias" + fix_order: "Fixar Posições" + fix_order_tooltip: "Algumas categorias não possuem um número de posição único, o que pode causar resultados inesperados." + save: "Salvar Ordem" + apply_all: "Aplicar" + position: "Posição" posts: "Respostas" topics: "Tópicos" latest: "Recentes" @@ -345,18 +414,21 @@ pt_BR: private_messages: "Mensagens" activity_stream: "Atividade" preferences: "Preferências" + expand_profile: "Expandir" bookmarks: "Favoritos" bio: "Sobre mim" invited_by: "Convidado por" trust_level: "Nível de Confiança" notifications: "Notificações" + statistics: "Estatísticas" desktop_notifications: + label: "Notificações de Área de Trabalho" not_supported: "Notificações não são suportadas nesse browser. Desculpe-nos." + perm_default: "Habilitar Notificações" perm_denied_btn: "Permissão Negada" + perm_denied_expl: "Você negou a permissão para notificações. Configure as permissões para notificações no seu navegador." disable: "Desativar Notificações" - currently_enabled: "(atualmente ativado)" enable: "Ativar Notificações" - currently_disabled: "(atualmente desativado)" each_browser_note: "Nota: Você deve modificar essa configuração em todos navegadores que você usa." dismiss_notifications: "Marcar todas como lidas" dismiss_notifications_tooltip: "Marcar todas as notificações não lidas como lidos" @@ -380,7 +452,7 @@ pt_BR: tracked_categories: "Monitorado" tracked_categories_instructions: "Automaticamente monitora todos novos tópicos nestas categorias. Uma contagem de posts não lidos e novos aparecerá próximo ao tópico." muted_categories: "Silenciado" - muted_categories_instructions: "Você não será notificado sobre novos tópicos dessas categorias e eles não vão aparecer na guia de mensagens não lidas." + muted_categories_instructions: "Você não será notificado sobre novos tópicos nessas categorias, e não aparecerão no Recentes" delete_account: "Excluir Minha Conta" delete_account_confirm: "Tem certeza de que deseja excluir permanentemente a sua conta? Essa ação não pode ser desfeita!" deleted_yourself: "Sua conta foi excluída com sucesso." @@ -390,6 +462,7 @@ pt_BR: users: "Usuários" muted_users: "Silenciado" muted_users_instructions: "Suprimir todas as notificações destes usuários." + muted_topics_link: "Mostrar tópicos silenciados" staff_counters: flags_given: "sinalizadas úteis" flagged_posts: "posts marcados" @@ -398,8 +471,12 @@ pt_BR: warnings_received: "avisos" messages: all: "Todas" - mine: "Minha" - unread: "Não lidas" + sent: "Enviado" + groups: "Meus Grupos" + bulk_select: "Selecionar mensagens" + move_to_inbox: "Mover para Caixa de Entrada" + failed_to_move: "Falha ao mover as mensagens selecionadas (talvez você esteja sem conexão com a rede)" + select_all: "Selecionar Tudo" change_password: success: "(email enviado)" in_progress: "(enviando email)" @@ -431,6 +508,7 @@ pt_BR: upload_title: "Enviar sua foto" upload_picture: "Enviar imagem" image_is_not_a_square: "Aviso: nós cortamos sua imagem; largura e altura não eram iguais." + cache_notice: "Você alterou sua foto de perfil com sucesso, porém pode levar algum tempo para que a mesma apareça devido ao cachê do navegador." change_profile_background: title: "Fundo do perfil" instructions: "Fundos do perfil será centralizado e tera uma largura padrão de 850px." @@ -443,10 +521,6 @@ pt_BR: ok: "Nós vamos pedir confirmação por email" invalid: "Insira um endereço de email" authenticated: "Seu email foi autenticado por {{provider}}" - frequency: - zero: "Não se preocupe, caso você não leia uma mensagem, enviaremos um email para você." - one: "Nós apenas te enviaremos email se não o tivermos visto no último minuto." - other: "Nós apenas te enviaremos email se não o tivermos visto nos últimos {{count}} minutos." name: title: "Nome" instructions: "Seu nome completo (opcional)" @@ -482,32 +556,56 @@ pt_BR: title: "Cartão de emblemas do usuário" website: "Web Site" email_settings: "Email" + email_previous_replies: + always: "sempre" + never: "nunca" email_digests: title: "Quando eu não visitar aqui, envie um resumo via email do que há de novo:" + every_30_minutes: "a cada 30 minutos" daily: "diariamente" every_three_days: "a cada três dias" weekly: "semanalmente" every_two_weeks: "a cada duas semanas" email_direct: "Me envie um email quando alguém me citar, responder minhas mensagens, mencionar meu @usuário, ou me convidar para um tópico" email_private_messages: "Me envie um email quando alguém me enviar mensagem particular" + email_always: "Envie-me notificações mesmo quando eu estiver ativo no site." other_settings: "Outros" categories_settings: "Categorias" new_topic_duration: label: "Considerar tópicos como novos quando" not_viewed: "Eu ainda não os vi" last_here: "criado desde de que eu estava aqui pela última vez" + after_1_day: "criado(s) no último(s) dia" + after_2_days: "criado(s) nos último(s) 2 dias" + after_1_week: "criado na última semana" + after_2_weeks: "criado nas últimas 2 semanas" auto_track_topics: "Seguir automaticamente tópicos que eu entro" auto_track_options: never: "nunca" immediately: "imediatamente" + after_30_seconds: "depois de 30 segundos" + after_1_minute: "depois de 1 minuto" + after_2_minutes: "depois de 2 minutos" + after_3_minutes: "depois de 3 minutos" + after_4_minutes: "depois de 4 minutos" + after_5_minutes: "depois de 5 minutos" + after_10_minutes: "depois de 10 minutos" invited: search: "digite para pesquisar convites..." title: "Convites" user: "Usuários convidados" - truncated: "Exibindo os primeiros {{count}} convites." + sent: "Enviado" + none: "Não existem convites pendentes para exibir." + truncated: + one: "Mostrando os primeiro convite." + other: "Mostrando os primeiros {{count}} convites." redeemed: "Convites usados" + redeemed_tab: "Resgatado" + redeemed_tab_with_count: "Resgatado ({{count}})" redeemed_at: "Usado" pending: "Convites pendentes" + pending_tab: "Pendente" + pending_tab_with_count: "Pendente ({{count}})" topics_entered: "Tópicos vistos" posts_read_count: "Mensagens vistas" expired: "Este convite expirou." @@ -519,6 +617,8 @@ pt_BR: days_visited: "Dias visitados" account_age_days: "Idade da conta em dias" create: "Enviar um convite" + generate_link: "Copiar Link do Convite" + generated_link_message: '
Link do convite gerado com sucesso!
Link do convite válido apenas para este endereço de email: %{invitedEmail}
' bulk_invite: none: "Você ainda não convidou ninguém. Você pode enviar convites individuais, ou enviar vários de uma vez através da ferramenta de enviar em massa." text: "Convidar em massa a partir de arquivo" @@ -533,6 +633,10 @@ pt_BR: same_as_email: "Sua senha é a mesma que o seu email." ok: "A sua senha parece boa." instructions: "Deve ter pelo menos %{count} caracteres." + summary: + stats: "Estatísticas" + top_replies: "Mais Respondidos" + more_topics: "Mais Tópicos" associated_accounts: "Logins" ip_address: title: "Último endereço IP" @@ -558,11 +662,13 @@ pt_BR: server: "Erro de Servidor" forbidden: "Acesso Negado" unknown: "Erro" + not_found: "Página não encontrada" desc: network: "Por favor verifique sua conexão." network_fixed: "Parece que voltou." server: "Código de erro: {{status}}" forbidden: "Você não tem permissão para ver isso." + not_found: "Oops, a aplicação tentou carregar uma URL que não existe." unknown: "Algo deu errado." buttons: back: "Voltar" @@ -573,8 +679,11 @@ pt_BR: logout: "Você foi desconectado." refresh: "Atualizar" read_only_mode: - enabled: "O modo somente-leitura está habilitado. Você pode navegador mas as interações podem não funcionar." + enabled: "Este site está em modo de leitura apenas. Por favor continue a navegar, no entanto, respostas, curtidas e outras ações estão desativadas por enquanto." login_disabled: "Login é desativado enquanto o site está em modo de somente leitura." + too_few_topics_and_posts_notice: "Vamos começar essa discussão! Existem atualmente %{currentTopics} / %{requiredTopics} tópicos e %{currentPosts} / %{requiredPosts} mensagens. Novos visitantes precisam de algumas conversas para ler e responder." + too_few_topics_notice: "Vamos começar essa discussão! Existem atualmente %{currentTopics} / %{requiredTopics} tópicos. Novos visitantes precisam de algumas conversas para ler e responder." + too_few_posts_notice: "Vamos começar essa discussão! Existem atualmente %{currentPosts} / %{requiredPosts} mensagens. Novos visitantes precisam de algumas conversas para ler e responder." learn_more: "aprenda mais..." year: 'ano' year_desc: 'tópicos criados nos últimos 365 dias' @@ -591,10 +700,17 @@ pt_BR: replies_lowercase: one: resposta other: respostas + signup_cta: + sign_up: "Registrar-se" + hide_session: "Lembre-me amanhã" + hide_forever: "não obrigado" + hidden_for_session: "OK, Eu vou perguntar amanhã. Você pode também sempre usar o 'Registre-se' para criar uma conta." + intro: "Ei você! :heart_eyes: Para que você está gostando da discussão, mas ainda não criou uma conta." + value_prop: "Quando você cria uma conta, nós lembramos exatamente o que você leu, assim você sempre volta exatamente aonde estava. Você também recebe notificações, aqui e por e-mail, quando novas mensagens são feitas. E você pode curtir tópicos para compartilhar o amor. :heartbeat:" summary: enabled_description: "Você está vendo um sumário deste tópico: os posts mais interessantes conforme determinados pela comunidade." - description: "Há {{count}} respostas." - description_time: "Há {{count}} respostas com um tempo de leitura estimado de {{readingTime}} minutos." + description: "Existem {{replyCount}} respostas." + description_time: "Existem {{replyCount}} respostas com tempo de leitura estimado em {{readingTime}} minutos." enable: 'Resumir Este Tópico' disable: 'Exibir Todas as Mensagens' deleted_filter: @@ -648,6 +764,9 @@ pt_BR: admin_not_allowed_from_ip_address: "Você não pode entrar como administrador a partir deste endereço IP." resend_activation_email: "Clique aqui para enviar o email de ativação novamente." sent_activation_email_again: "Nós enviamos mais um email de ativação para você no endereço {{currentEmail}}. Pode ser que demore alguns minutos para chegar; verifique sempre sua caixa de spams." + to_continue: "Por favor efetue o login" + preferences: "Você precisa estar logado para mudar suas preferências de usuário." + forgot: "Não me recordo dos detalhes da minha conta." google: title: "Entrar com Google" message: "Autenticando com Google (certifique-se de que os bloqueadores de popup estejam desativados)" @@ -670,15 +789,23 @@ pt_BR: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + more_emoji: "mais..." + options: "Opções" + whisper: "sussuro" add_warning: "Este é um aviso oficial." + toggle_whisper: "Habilitar Sussuro" posting_not_on_topic: "Qual tópico você gostaria de responder?" saving_draft_tip: "gravando..." saved_draft_tip: "salvo" saved_local_draft_tip: "salvo localmente" similar_topics: "Seu tópico é parecido com..." drafts_offline: "rascunhos offline" + group_mentioned: "Ao usar {{group}}, você irá notificar {{count}} pessoas.." error: title_missing: "Título é obrigatório" title_too_short: "O título tem que ter no mínimo {{min}} caracteres" @@ -699,8 +826,9 @@ pt_BR: title_placeholder: "Sobre o que é esta discussão em uma pequena frase?" edit_reason_placeholder: "por que você está editando?" show_edit_reason: "(adicione motivo da edição)" + reply_placeholder: "Escreva aqui. Use Markdown, BBCode ou HTML para formatar. Arraste ou cole uma imagens." view_new_post: "Ver sua nova resposta." - saving: "Salvando..." + saving: "Salvando" saved: "Salvo!" saved_draft: "Rascunho salvo, clique em selecionar para continuar editando." uploading: "Enviando..." @@ -715,6 +843,7 @@ pt_BR: link_description: "digite a descrição do link aqui" link_dialog_title: "Inserir link" link_optional_text: "título opcional" + link_placeholder: "http://example.com \"texto opcional\"" quote_title: "Bloco de citação" quote_text: "Bloco de citação" code_title: "Texto pré-formatado" @@ -727,10 +856,11 @@ pt_BR: heading_title: "Título" heading_text: "Título" hr_title: "Barra horizontal" - undo_title: "Desfazer" - redo_title: "Refazer" help: "Ajuda da edição Markdown" toggler: "esconder ou exibir o painel de composição" + modal_ok: "OK" + modal_cancel: "Cancelar" + cant_send_pm: "Desculpe, você não pode enviar uma mensagem para %{username}." admin_options_title: "Configurações opcionais da equipe para este tópico" auto_close: label: "Tempo para fechamento automático do tópico:" @@ -749,7 +879,6 @@ pt_BR: mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -759,6 +888,20 @@ pt_BR: moved_post: "
{{username}} moved {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
Adquirido '{{description}}'
" + alt: + mentioned: "Mencionado por" + quoted: "Citado por" + replied: "Respondido" + posted: "Mensagem por" + edited: "Edição na sua mensagem por" + liked: "Curtiu sua mensagem" + private_message: "Mensagem privada de" + invited_to_private_message: "Convidou para uma mensagem privada" + invited_to_topic: "Convite para um tópico de" + invitee_accepted: "Convite aceito por" + moved_post: "Seu tópico foi movido por" + linked: "Link para sua mensagem" + granted_badge: "Emblema recebido" popup: mentioned: '{{username}} mencionou você em "{{topic}}" - {{site_title}}' quoted: '{{username}} citou você em "{{topic}}" - {{site_title}}' @@ -772,15 +915,29 @@ pt_BR: from_my_computer: "Do meu dispositivo" from_the_web: "Da internet" remote_tip: "link da imagem" - remote_tip_with_attachments: "link da imagem ou arquivo ({{authorized_extensions}})" + remote_tip_with_attachments: "link para imagem ou arquivo {{authorized_extensions}}" local_tip: "selecione imagens a partir do seu dispositivo" + local_tip_with_attachments: "selecione imagens ou arquivos do seu dispositivo {{authorized_extensions}}" hint: "(Você também pode arrastar e soltar para o editor para carregá-las)" + hint_for_supported_browsers: "Você pode também arrastar e soltar ou copiar imagens no editor" uploading: "Enviando" select_file: "Selecionar Arquivo" image_link: "link da sua imagem" search: + sort_by: "Ordenar por" + relevance: "Relevância" + latest_post: "Última Mensagem" + most_viewed: "Mais Visto" + most_liked: "Mais Curtido" + select_all: "Selecionar Todos" + clear_all: "Limpar Todos" + result_count: + one: "1 resultado para \"{{term}}\"" + other: "{{count}} resultados para \"{{term}}\"" title: "procurar em tópicos, respostas, usuários ou categorias" no_results: "Nenhum resultado encontrado." + no_more_results: "Sem mais resultados encontrados." + search_help: Ajuda na busca searching: "Procurando..." post_format: "#{{post_number}} por {{username}}" context: @@ -788,17 +945,19 @@ pt_BR: category: "Procurar a categoria \"{{category}}\"" topic: "Procurar nesse tópico" private_messages: "Procurar mensagens" + hamburger_menu: "ir para outra listagem de tópicos ou categoria" + new_item: "novo" go_back: 'voltar' not_logged_in_user: 'página do usuário com resumo de atividades correntes e preferencias' current_user: 'ir para a sua página de usuário' topics: bulk: + unlist_topics: "Tópicos Não Listados" reset_read: "Redefinir Lido" delete: "Apagar Tópicos" - dismiss_posts: "Ignorar Posts" - dismiss_posts_tooltip: "Zerar contagem de não lidos nestes tópicos, mas continuar a mostrar eles em minha lista de não lidos quando novos posts forem feitos." - dismiss_topics: "Ignorar Tópicos" - dismiss_topics_tooltip: "Para de mostrar estes tópicos em minha lista de não lidos quando novos posts forem feitos." + dismiss: "Marcar como lida" + dismiss_read: "Marcar todas como lida" + dismiss_button: "Descartar..." dismiss_new: "Dispensar Nova" toggle: "alternar a seleção em massa de tópicos" actions: "Ações em Massa" @@ -821,9 +980,6 @@ pt_BR: category: "Não há tópicos na categoria {{category}}." top: "Não há tópicos em alta." search: "Não foram encontrados resultados." - educate: - new: '
Seus novos tópicos aparecerão aqui.
Por padrão, tópicos são considerados novos e irão mostrar um indicador novo se eles foram criados nos últimos 2 dias.
Você pode mudar isto nas suas preferências.
' - unread: '
Seus tópicos não lidos aparecerão aqui.
Por padrão, tópicos são considerados não lidos e irão mostrar contadores 1 se você:
Ou se você explicitamente marcou o tópico para Acompanhar ou Assistir via o controle de notificação na parte de baixo de cada tópico.
Você pode mudar isto nas suas preferências.
'
bottom:
latest: "Não há mais tópicos recentes."
hot: "Não mais tópicos quentes."
@@ -836,10 +992,18 @@ pt_BR:
bookmarks: "Não há mais tópicos nos favoritos."
search: "Não existem mais resultados."
topic:
+ unsubscribe:
+ stop_notifications: "Você agora vai receber menos notificações de {{title}}"
+ change_notification_state: "Seu estado de notificação atual é"
filter_to: "{{post_count}} mensagens no tópico"
create: 'Novo tópico'
create_long: 'Criar um novo tópico'
private_message: 'Iniciar uma mensagem'
+ archive_message:
+ help: 'Mover mensagens para o seu arquivo'
+ move_to_inbox:
+ title: 'Mover para caixa de entrada'
+ help: 'Mover mensagem para Caixa de Entrada'
list: 'Tópicos'
new: 'novo tópico'
unread: 'não lido'
@@ -890,6 +1054,7 @@ pt_BR:
auto_close_title: 'Configurações para fechar automaticamente'
auto_close_save: "Salvar"
auto_close_remove: "Não fechar automaticamente este tópico"
+ auto_close_immediate: "O último tópico postado foi há %{hours} horas, então o tópico será fechado imadiatamente.."
progress:
title: progresso do tópico
go_top: "topo"
@@ -929,15 +1094,16 @@ pt_BR:
title: "Monitorar"
description: "Um contador de novas respostas será mostrado para este tópico. Você será notificado se alguém mencionar seu @nome ou responder à sua mensagem."
regular:
+ title: "Normal"
description: "Você será notificado se alguém mencionar o seu @nome ou responder à sua mensagem."
regular_pm:
+ title: "Normal"
description: "Você será notificado se alguém mencionar o seu @nome ou responder à sua mensagem."
muted_pm:
title: "Silenciado"
description: "Você nunca será notificado de qualquer coisa sobre essa mensagem privada."
muted:
title: "Silenciar"
- description: "Você nunca será notificado em nada sobre esse tópico e não aparecerá na guia de não lidas."
actions:
recover: "Recuperar Tópico"
delete: "Apagar tópico"
@@ -973,26 +1139,22 @@ pt_BR:
success_message: 'Você sinalizou com sucesso este tópico.'
feature_topic:
title: "Destacar este tópico"
+ pin: "Fazer que este tópico apareça no topo da categoria {{categoryLink}} até"
confirm_pin: "Você já tem {{count}} tópicos fixos. Muitos tópicos fixados podem atrapalhar usuários novos e anônimos. Tem certeza que quer fixar outro tópico nesta categoria?"
unpin: "Remover este tópico do inicio da {{categoryLink}} categoria."
+ unpin_until: "Remover este tópico do topo da categoria {{categoryLink}} ou esperar até %{until}."
pin_note: "Usuários podem desafixar o tópico individualmente para si."
- already_pinned:
- zero: "Não existem tópicos fixados em {{categoryLink}}."
- one: "Tópicos atualmente fixados em {{categoryLink}}: 1."
- other: "Tópicos atualmente fixados {{categoryLink}}: {{count}}."
+ pin_validation: "Uma data é necessária para fixar este tópico."
+ not_pinned: "Não existem tópicos fixados em {{categoryLink}}."
+ pin_globally: "Fazer com que este tópico apareça no topo de todas listas de tópicos até"
confirm_pin_globally: "Você já tem {{count}} tópicos fixados globalmente. Muitos tópicos fixados podem prejudicar usuários novos e anônimos. Tem certeza que quer fixar outro tópico globalmente?"
unpin_globally: "Remover este tópico do inicio de todas as listas de tópicos."
+ unpin_globally_until: "Remover este tópico do topo de todas listagens de tópicos ou esperar até %{until}."
global_pin_note: "Usuários podem desafixar o tópico individualmente para si."
- already_pinned_globally:
- zero: "Não existem tópicos fixados globalmente."
- one: "Tópicos atualmente fixados globalmente: 1."
- other: "Tópicos atualmente fixados globalmente: {{count}}."
+ not_pinned_globally: "Não existem tópicos fixados globalmente."
make_banner: "Tornar este tópico em um banner que apareça no inicio de todas as páginas."
remove_banner: "Remover o banner que aparece no inicio de todas as páginas."
banner_note: "Usuários podem dispensar o banner fechando-o. Apenas um tópico pode ser colocado como banner a cada momento."
- already_banner:
- zero: "Não existe tópico banner."
- one: "Existe atualmente um tópico banner."
inviting: "Convidando..."
automatically_add_to_groups_optional: "Esse convite também inclui o acesso a esses grupos: (Opacional, admins apenas)"
automatically_add_to_groups_required: "Esse convite também inclui o acesso a esses grupos: (Necessário, admins apenas)"
@@ -1050,6 +1212,12 @@ pt_BR:
one: "Por favor, escolha o novo dono do post por {{old_user}}."
other: "Por favor, escolha o novo autor dessas {{count}} mensagens que eram de {{old_user}}."
instructions_warn: "Note que qualquer notificação sobre esta mensagem não irá ser transferida para o novo usuário retroativamente.
Alerta: Atualmente, nenhum dado dependente da mensagem será transferido para o novo usuário. Use com cuidado."
+ change_timestamp:
+ title: "Alterar Horário"
+ action: "alterar horário"
+ invalid_timestamp: "Horário não pode ser no futuro."
+ error: "Ocorreu um erro alterando o horário do tópico."
+ instructions: "Por favor selecione um novo horário para o tópico. Mensagens no tópico serão atualizadas para manter a mesma diferença de tempo."
multi_select:
select: 'selecionar'
selected: '({{count}}) selecionados'
@@ -1062,6 +1230,8 @@ pt_BR:
one: 1 resposta selecionada.
other: {{count}} respostas selecionadas.
post:
+ reply: " {{replyAvatar}} {{usernameLink}}"
+ reply_topic: " {{link}}"
quote_reply: "citar resposta"
edit: "Em resposta a {{link}} por {{replyAvatar}} {{username}}"
edit_reason: "Motivo:"
@@ -1090,10 +1260,7 @@ pt_BR:
has_likes_title:
one: "{{count}} pessoa curtiu esta mensagem"
other: "{{count}} pessoas curtiram esta mensagem"
- has_likes_title_you:
- zero: "você curtiu esta mensagem"
- one: "você e 1 outra pessoa curtiu esta mensagem"
- other: "Você e mais {{count}} pessoas curtiram esta mensagem"
+ has_likes_title_only_you: "você curtiu esta postagem"
errors:
create: "Desculpe, houve um erro ao criar sua resposta. Por favor, tente outra vez."
edit: "Desculpe, houve um erro ao editar sua resposta. Por favor, tente outra vez."
@@ -1111,8 +1278,9 @@ pt_BR:
no_value: "Não, manter"
yes_value: "Sim, abandone"
via_email: "post recebido via email"
+ whisper: "esta mensagem é um sussuro privado para moderadores"
wiki:
- about: "essa resposta é uma wiki; usuários básicos podem editá-lo"
+ about: "esta postagem é uma wiki"
archetypes:
save: 'Salvar as opções'
controls:
@@ -1140,6 +1308,7 @@ pt_BR:
revert_to_regular: "Remover da Moderação"
rebake: "Reconstruir HTML"
unhide: "Revelar"
+ change_owner: "Trocar autor"
actions:
flag: 'Sinalização'
defer_flags:
@@ -1161,17 +1330,9 @@ pt_BR:
like: "Descurtir"
vote: "Desfazer voto"
people:
- off_topic: "{{icons}} marcado como off-topic"
- spam: "{{icons}} marcado como spam"
- spam_with_url: "{{icons}} marcou isto como spam"
- inappropriate: "{{icons}} marcado como inapropriado"
- notify_moderators: "{{icons}} notificaram os moderadores"
- notify_moderators_with_url: "{{icons}} notificaram os moderadores"
- notify_user: "{{icons}} enviou uma mensagem particular"
- notify_user_with_url: "{{icons}} enviou uma mensagem particular"
- bookmark: "{{icons}} favoritaram isto"
- like: "{{icons}} curtiram isto"
- vote: "{{icons}} votaram nisto"
+ off_topic: "marcado como off-topic"
+ spam: "marcado como spam"
+ inappropriate: "marcado como inapropriado"
by_you:
off_topic: "Você sinalizou isto como off-topic"
spam: "Você sinalizou isto como spam"
@@ -1231,10 +1392,6 @@ pt_BR:
vote:
one: "1 pessoa votou nesta resposta"
other: "{{count}} pessoas votaram nesta resposta"
- edits:
- one: 1 edição
- other: "{{count}} edições"
- zero: sem edições
delete:
confirm:
one: "Tem certeza que quer apagar esta resposta?"
@@ -1271,6 +1428,7 @@ pt_BR:
topic_template: "Modelo de Tópico"
delete: 'Apagar categoria'
create: 'Nova categoria'
+ create_long: 'Criar uma nova categoria'
save: 'Salvar categoria'
slug: 'Slug da Categoria'
slug_placeholder: '(Opcional) palavras hifenizadas para url'
@@ -1293,6 +1451,7 @@ pt_BR:
change_in_category_topic: "Editar Descrição"
already_used: 'Esta cor já foi usada para outra categoria'
security: "Segurança"
+ special_warning: "Atenção: Esta categoria é uma categoria padrão e as configurações de segurança e não podem ser editadas. Se você não quer usar esta categoria, apague-a ao invés de reaproveitá-la."
images: "Imagens"
auto_close_label: "Fechar automaticamente tópicos depois de:"
auto_close_units: "horas"
@@ -1300,6 +1459,7 @@ pt_BR:
email_in_allow_strangers: "Aceitar emails de usuários anônimos sem cont"
email_in_disabled: "Postar novos tópicos via email está desabilitado nas Configurações do Site. Para habilitar respostas em novos tópicos via email,"
email_in_disabled_click: 'habilitar a configuração de "email em".'
+ suppress_from_homepage: "Suprimir esta categoria da página inicial."
allow_badges_label: "Permitir emblemas serem concedidos nessa categoria"
edit_permissions: "Editar Permissões"
add_permission: "Adicionar Permissões"
@@ -1312,19 +1472,18 @@ pt_BR:
notifications:
watching:
title: "Observar"
- description: "Você vai acompanhar automaticamente todos os novos tópicos dessas categorias. Você será notificado de todas as novas mensagens e tópicos. Além disso, a contagem de mensagens não lidas e novas também aparecerá ao lado do tópico."
+ description: "Você vai acompanhar automaticamente todos os novos tópicos dessas categorias. Você será notificado de todas as novas mensagens em todos tópicos, e uma contagem de novas respostas será mostrada."
tracking:
title: "Monitorar"
- description: "Automaticamente monitora todos novos tópicos nestas categorias. Uma contagem de posts não lidos e novos aparecerá próximo ao tópico."
+ description: "Você vai monitorar automaticamente todos os novos tópicos dessas categorias. Você será notificado se alguém mencionar seu @nome ou te responder, e uma contagem de novas respostas será mostrada."
regular:
title: "Normal"
description: "Você será notificado se alguém mencionar o seu @nome ou responder à sua mensagem."
muted:
title: "Silenciar"
- description: "Você não será notificado sobre novos tópicos dessas categorias e eles não vão aparecer na guia de mensagens não lidas."
+ description: "Você nunca será notificado sobre novos tópicos nessas categorias, e não aparecerão no Recentes."
flagging:
title: 'Obrigado por ajudar a manter a civilidade da nossa comunidade!'
- private_reminder: 'sinalizações são privadas, apenas ficam visíveis a moderação'
action: 'Sinalizar resposta'
take_action: "Tomar Atitude"
notify_action: 'Mensagem'
@@ -1367,12 +1526,14 @@ pt_BR:
help: "Este tópico está fechado; não serão aceitas mais respostas"
archived:
help: "Este tópico está arquivado; está congelado e não pode ser alterado"
+ locked_and_archived:
+ help: "Este tópico está fechado e arquivado; ele não aceita novas respostas e não pode ser alterado."
unpinned:
title: "Não fixo"
help: "Este tópico está desfixado para você; ele será mostrado em ordem normal"
pinned_globally:
title: "Fixo Globalmente"
- help: "Esse tópico está fixo; ele será mostrado no topo de todas as listas"
+ help: "Este tópico está fixado globalmente; ele será exibido no topo da aba Recentes e no topo da sua categoria"
pinned:
title: "Fixo"
help: "Este tópico está fixado para você; ele será mostrado no topo de sua categoria"
@@ -1415,9 +1576,9 @@ pt_BR:
with_topics: "%{filter} tópicos"
with_category: "%{filter} %{category} tópicos"
latest:
- title:
- zero: "Recentes"
- one: "Recentes (1)"
+ title: "Recente"
+ title_with_count:
+ one: "Recente (1)"
other: "Recentes ({{count}})"
help: "tópicos com mensagens recentes"
hot:
@@ -1434,8 +1595,8 @@ pt_BR:
title_in: "Categoria - {{categoryName}}"
help: "todos os tópicos agrupados por categoria"
unread:
- title:
- zero: "Não lido"
+ title: "Não lidas"
+ title_with_count:
one: "Não lido (1)"
other: "Não lidos ({{count}})"
help: "tópicos que você está acompanhando ou monitorando com mensagens não lidas"
@@ -1447,11 +1608,11 @@ pt_BR:
one: "1 nova"
other: "{{count}} novas"
lower_title: "nova"
- title:
- zero: "Novo"
+ title: "Novo"
+ title_with_count:
one: "Novo (1)"
other: "Novos ({{count}})"
- help: "tópicos criatods nos últimos dias"
+ help: "tópicos criados nos últimos dias"
posted:
title: "Minhas mensagens"
help: "tópicos nos quais você postou"
@@ -1459,8 +1620,8 @@ pt_BR:
title: "Favoritos"
help: "tópicos que você adicionou aos favoritos"
category:
- title:
- zero: "{{categoryName}}"
+ title: "{{categoryName}}"
+ title_with_count:
one: "{{categoryName}} (1)"
other: "{{categoryName}} ({{count}})"
help: "tópicos recentes na categoria {{categoryName}}"
@@ -1471,6 +1632,8 @@ pt_BR:
title: "Tempo Todo"
yearly:
title: "Anualmente"
+ quarterly:
+ title: "Trimestralmente"
monthly:
title: "Mensalmente"
weekly:
@@ -1479,6 +1642,7 @@ pt_BR:
title: "Diariamente"
all_time: "Tempo Todo"
this_year: "Ano"
+ this_quarter: "Trimestre"
this_month: "Mês"
this_week: "Semana"
today: "Hoje"
@@ -1619,15 +1783,21 @@ pt_BR:
delete_confirm: "Apagar este grupos?"
delete_failed: "Unable to delete group. If this is an automatic group, it cannot be destroyed."
delete_member_confirm: "Remover '%{username}' do grupo '%{group}'?"
+ delete_owner_confirm: "Remover privilégio de proprietário de '%{username}'?"
name: "Nome"
add: "Adicionar"
add_members: "Adicionar membros"
custom: "Definidos"
+ bulk_complete: "Os usuários foram adicionados ao grupo."
+ bulk_paste: "Cole uma lista de usernames ou emails, um por linha:"
+ bulk_select: "(selecione um grupo)"
automatic: "Automático"
automatic_membership_email_domains: "Usuários que se registram com um domínio de email que confere precisamente com algum desta lista serão automaticamente adicionados a este grupo:"
automatic_membership_retroactive: "Aplicar a mesma regra de domínio de email para adicionar usuários registrados"
default_title: "Título padrão para todos usuários nesse grupo"
primary_group: "Configurar automaticamente como grupo primário"
+ group_owners: Prorietários
+ add_owners: Adicionar proprietários
api:
generate_master: "Gerar chave Mestra de API"
none: "Não existem chaves API ativas no momento."
@@ -1701,11 +1871,9 @@ pt_BR:
is_disabled: "Restaurar está desativado nas configurações do site."
label: "Restaurar"
title: "Restaurar o backup"
- confirm: "Tem certeza de que quer restaurar este backup?"
rollback:
label: "Reverter"
title: "Reverter o banco de dados para seu estado anterior"
- confirm: "Tem certeza de que quer reverter o banco de dados para o estado anterior?"
export_csv:
user_archive_confirm: "Tem certeza que você quer baixar os seus tópicos?"
success: "Exportação iniciada, você será notificado por mensagem particular quando o processo estiver completo."
@@ -1730,6 +1898,7 @@ pt_BR:
header: "Cabeçalho"
top: "Superior"
footer: "Rodapé"
+ embedded_css: "CSS Incorporada"
head_tag:
text: ""
title: "HTML que será inserido antes da tag "
@@ -1755,6 +1924,13 @@ pt_BR:
color: "Cor"
opacity: "Opacidade"
copy: "Copiar"
+ email_templates:
+ title: "Modelos de E-mail"
+ subject: "Assunto"
+ body: "Corpo"
+ none_selected: "Selecione um modelo de e-mail para iniciar a edição."
+ revert: "Reverter Alterações"
+ revert_confirm: "Tem certeza de que deseja reverter as alterações?"
css_html:
title: "CSS/HTML"
long_title: "Customizações CSS e HTML"
@@ -1799,13 +1975,9 @@ pt_BR:
love:
name: 'curtir'
description: "A cor do botão curtir."
- wiki:
- name: 'wiki'
- description: "Cor base usada para o fundo em postagens do wiki."
email:
- title: "Email"
settings: "Settings"
- all: "Todas"
+ preview_digest: "Preview Digest"
sending_test: "Enviando e-mail de teste..."
error: "ERRO - %{server_error}"
test_error: "Houve um problema ao enviar o email de teste. Por favor, verifique as configurações de email, se o seu provedor não está bloqueando conexões de email e tente novamente."
@@ -1820,7 +1992,7 @@ pt_BR:
send_test: "Enviar email de teste"
sent_test: "enviado!"
delivery_method: "Delivery Method"
- preview_digest: "Preview Digest"
+ preview_digest_desc: "Pré-visualizar o conteúdo do e-mail de resumo enviado para usuários inativos."
refresh: "Atualizar"
format: "Formato"
html: "html"
@@ -1846,6 +2018,7 @@ pt_BR:
ip_address: "IP"
topic_id: "ID do Tópico"
post_id: "ID Mensagem"
+ category_id: "ID da Categoria"
delete: 'Excluir'
edit: 'Editar'
save: 'Salvar'
@@ -1886,6 +2059,9 @@ pt_BR:
impersonate: "personificar"
anonymize_user: "tornar usuário anônimo"
roll_up: "Agrupar bloco de IP"
+ change_category_settings: "mudas configurações da categoria"
+ delete_category: "apagar a categoria"
+ create_category: "criar uma categoria"
screened_emails:
title: "Emails Filtrados"
description: "Quando alguém tenta cria uma nova conta, os seguintes endereços de email serão verificados e o registro será bloqueado, ou outra ação será executada."
@@ -1952,9 +2128,9 @@ pt_BR:
pending: 'Usuários com Confirmação Pendente'
newuser: 'Usuários no Nível de Confiança 0 (Usuário Novo)'
basic: 'Usuários no Nível de Confiança 1 (Usuário Básico)'
- regular: 'Usuário no Nível de Confiança 2 (Regular)'
- leader: 'Usuário no Nível de Confiança 3 (Líder)'
- elder: 'Usuário no Nível de Confiança 4 (Ancião)'
+ member: 'Usuário em Nível de Confiança 2 (Membro)'
+ regular: 'Usuário em Nível de Confiança 3 (Regular)'
+ leader: 'Usuário em Nível de Confiança 4 (Líder)'
staff: "Equipe de apoio"
admins: 'Usuários Administradores'
moderators: 'Moderadores'
@@ -2064,7 +2240,6 @@ pt_BR:
unlock_trust_level: "Destravar Nível de Confiança"
tl3_requirements:
title: "Requisitos para o Nível de Confiança 3"
- table_title: "Nos últimos 100 dias:"
value_heading: "Valor"
requirement_heading: "Requisito"
visits: "Visitas"
@@ -2123,9 +2298,15 @@ pt_BR:
field_types:
text: 'Campo Texto'
confirm: 'Confirmação'
+ dropdown: "Caixa de seleção"
site_text:
- none: "Escolha um tipo de conteúdo para começar a editar."
+ description: "Você pode personalizar qualquer parte do texto em seu fórum. Por favor, comece pesquisando abaixo:"
+ search: "Procure peloo texto que você gostaria de editar"
title: 'Conteúdo do Texto'
+ edit: 'editar'
+ revert: "Reverter alterações"
+ revert_confirm: "Tem certeza que deseja reverter as alterações?"
+ show_overriden: 'Apenas mostrar valores alterados'
site_settings:
show_overriden: 'Exibir apenas valores alterados'
title: 'Configurações'
@@ -2156,6 +2337,7 @@ pt_BR:
backups: "Backups"
login: "Entrar"
plugins: "Plugins"
+ user_preferences: "Preferências de Usuário"
badges:
title: Emblemas
new_badge: Novo Emblema
@@ -2212,8 +2394,8 @@ pt_BR:
bad_count_warning:
header: "CUIDADO!"
text: "Faltam amostras de concessão. Isso acontece quando a consulta de emblemas retorna IDs de usuários ou IDs de postagens que não existem. Isso pode causar resultados inesperados futuramente - por favor verifique novamente a sua consulta."
+ no_grant_count: "Sem emblemas para serem atribuídos."
grant_count:
- zero: "Sem emblemas para serem atribuídos."
one: "1 emblema para ser atribuído."
other: "%{count} emblemas para serem atribuídos."
sample: "Exemplo:"
@@ -2229,15 +2411,44 @@ pt_BR:
name: "Nome"
image: "Imagem"
delete_confirm: "Tem certeza que deseja excluir o emoji :%{name}: ?"
+ embedding:
+ get_started: "Se você deseja incorporar Discourse em outro site, começe adicionando seu host."
+ confirm_delete: "Você tem certeza que deseja apagar este host?"
+ sample: "Use o seguinte código HTML no seu site para criar e incorporar tópicos do Discourse. Troque REPLACE_ME com a URL canônica da página na qual você está incorporando."
+ title: "Incorporar"
+ host: "Hosts Permitidos"
+ edit: "editar"
+ category: "Postar na Categoria"
+ add_host: "Adicionar Host"
+ settings: "Configurações de Incorporação"
+ feed_settings: "Configurações de Feed"
+ feed_description: "Prover um feed de RSS/ATOM de seu site pode melhorar a habilidade do Discourse para importar seu conteúdo."
+ crawling_settings: "Configurações de Crawler"
+ crawling_description: "Quando Discourse cria tópicos para suas postagens, se nenhum feed RSS/ATOM estiver presente ele tentar recuperar o conteúdo do seu HTML. Algumas vezes isso pode sem um desafio, então provemos a habilidade de prover as regras específicas de CSS para fazer a extração mais fácil."
+ embed_by_username: "Nome de usuário para criação do tópico"
+ embed_post_limit: "Número máximo de postagens para incorporar"
+ embed_username_key_from_feed: "Chave para obter o nome de usuário no discourse do feed"
+ embed_truncate: "Truncar as postagens incorporadas"
+ embed_whitelist_selector: "Seletor de CSS para elementos que são permitidos na incorporação"
+ embed_blacklist_selector: "Seletor de CSS para elementos que são removidos da incorporação"
+ feed_polling_enabled: "Importar postagens via RSS/ATOM"
+ feed_polling_url: "URL do feed RSS/ATOM para pesquisar"
+ save: "Salvar Configurações de Incorporação"
permalink:
+ title: "Links permanentes"
url: "URL"
+ topic_id: "ID do Tópico"
topic_title: "Tópico"
+ post_id: "ID da Mensagem"
post_title: "Mensagem"
+ category_id: "ID da Categoria"
category_title: "Categoria"
external_url: "URL externa"
+ delete_confirm: Você tem certeza que quer apagar esse link permanente?
form:
label: "Novo:"
add: "Adicionar"
+ filter: "Busca (URL ou URL Externa)"
lightbox:
download: "download"
search_help:
@@ -2253,6 +2464,8 @@ pt_BR:
categories: 'g, c Categorias'
top: 'g, t Topo'
bookmarks: 'g, b Favoritos'
+ profile: 'g, p Perfil'
+ messages: 'g, m Mensagens'
navigation:
title: 'Navegação'
jump: '# Ir para a resposta #'
@@ -2264,12 +2477,14 @@ pt_BR:
title: 'Aplicação'
create: 'c Criar um tópico novo'
notifications: 'n Abre notificações'
+ hamburger_menu: '= Abrir menu hamburger'
user_profile_menu: 'p Abrir menu do usuário'
show_incoming_updated_topics: '. Exibir tópicos atualizados'
search: '/ Pesquisa'
help: '? Abrir ajuda de teclado'
dismiss_new_posts: 'x, r Descartar Novas Postagens'
dismiss_topics: 'x, t Descartar Tópicos'
+ log_out: 'shift+z shift+z Deslogar'
actions:
title: 'Ações'
bookmark_topic: 'f Adicionar tópico aos favoritos'
@@ -2291,8 +2506,6 @@ pt_BR:
mark_watching: 'm, w Acompanhar tópico'
badges:
title: Emblemas
- allow_title: "pode ser usado como um título"
- multiple_grant: "pode ser recebido várias vezes"
badge_count:
one: "1 Emblema"
other: "%{count} Emblemas"
@@ -2315,85 +2528,12 @@ pt_BR:
name: Outro
posting:
name: Postando
- badge:
- editor:
- name: Editor
- description: Primeira edição da resposta
- basic_user:
- name: Básico
- description: Concedido todas as funções essenciais da comunidade
- member:
- name: Membro
- description: Concedido envio de convites
- regular:
- name: Regular
- description: Concedido recategorizar, renomear, seguir links e sala de lazer
- leader:
- name: Líder
- description: Concedido edição global, fixar, fechar, arquivar, dividir e mesclar
- welcome:
- name: Bem-Vindo
- description: Recebeu uma curtida
- autobiographer:
- name: Autobiógrafo
- description: Preencher informações do perfil
- anniversary:
- name: Aniversário
- description: Membro ativo por um ano, postou ao menos uma vez
- nice_post:
- name: Post Legal
- description: Recebeu 10 curtidas em uma resposta. Esse emblema pode ser concedido várias vezes.
- good_post:
- name: Bom Post
- description: Recebeu 25 curtidas em uma resposta. Esse emblema pode ser concedido várias vezes.
- great_post:
- name: Ótimo Post
- description: Recebeu 50 curtidas em uma resposta. Esse emblema pode ser concedido várias vezes.
- nice_topic:
- name: Tópico Interessante
- description: Recebeu 10 curtidas em um tópico. Esse emblema pode ser concedido várias vezes.
- good_topic:
- name: Tópico Bom
- description: Recebeu 25 curtidas em um tópico. Esse emblema pode ser concedido várias vezes.
- great_topic:
- name: Tópico Excelente
- description: Recebeu 50 curtidas em um tópico. Esse emblema pode ser concedido várias vezes.
- nice_share:
- name: Compartilhamento Interessante
- description: Compartilhou uma postagem com 25 visitas únicas
- good_share:
- name: Compartilhamento Bom
- description: Compartilhou uma postagem com 300 visitas únicas
- great_share:
- name: Compartilhamento Excelente
- description: Compartilhou uma postagem com 1000 visitas únicas
- first_like:
- name: Primeiro Like
- description: Curtiu uma resposta
- first_flag:
- name: Primeira Marcação
- description: Sinalizar uma resposta
- promoter:
- name: Promotor
- description: Convidou um usuário
- campaigner:
- name: Veterano
- description: Convidou 3 usuários básicos (nível de confiança 1)
- champion:
- name: Campeão
- description: Convidou 5 usuários básicos (nível de confiança 2)
- first_share:
- name: Primeiro Compartilhamento
- description: Compartilhar uma resposta
- first_link:
- name: Primeiro Link
- description: Adicionar um link interno em outro tópico
- first_quote:
- name: Primeira citação
- description: Citado um usuário
- read_guidelines:
- name: Ler as regras
- description: Leia as regras da comunidade
- reader:
- name: Leitor
- description: Leia cada resposta em um tópico com mais de 100 respostas
+ google_search: |
+
+
+
+
diff --git a/config/locales/client.ro.yml b/config/locales/client.ro.yml index 7e3e9f054ac..27eac3046cc 100644 --- a/config/locales/client.ro.yml +++ b/config/locales/client.ro.yml @@ -8,24 +8,32 @@ ro: js: number: + format: + separator: "." + delimiter: "," human: storage_units: format: '%n %u' units: byte: - one: Bit - few: Biți - other: Biți + one: Byte + few: Bytes + other: Bytes gb: GB kb: KB mb: MB tb: TB + short: + thousands: "{{number}}k" + millions: "{{number}}M" dates: time: "HH:mm" long_no_year: "DD MMM HH:mm" long_no_year_no_time: "DD MMM" + full_no_year_no_time: "Do MMMM " long_with_year: "DD MMM YYYY HH:mm" long_with_year_no_time: "DD MMM YYYY" + full_with_year_no_time: "Do MMMM YYYY" long_date_with_year: "DD MMM 'YY HH:mm" long_date_without_year: "DD MMM HH:mm" long_date_with_year_without_time: "DD MMM 'YY" @@ -69,8 +77,8 @@ ro: one: "1a" few: "%{count}a" other: "%{count}a" - date_month: "Z LLL" - date_year: "LLL 'AA" + date_month: "DD MMMM" + date_year: "MMM 'YY" medium: x_minutes: one: "1 min" @@ -84,10 +92,10 @@ ro: one: "1 zi" few: "%{count} zile" other: "%{count} zile" - date_year: "Z LL AAAA" + date_year: "D MM YYYY" medium_with_ago: x_minutes: - one: "acum 1 min" + one: "acum un min" few: "acum %{count} min" other: "acum %{count} min" x_hours: @@ -98,16 +106,64 @@ ro: one: "acum o zi" few: "acum %{count} zile" other: "acum %{count} zile" + later: + x_days: + one: "După o zi" + few: "După %{count} zile" + other: "După %{count} zile" + x_months: + one: "o lună mai târziu" + few: "%{count} luni mai târziu" + other: "%{count} de luni mai târziu" + x_years: + one: "După un an" + few: "După %{count} ani" + other: "După %{count} ani" + previous_month: 'Luna anterioară' + next_month: 'Luna următoare' share: - topic: 'distribuie adresă către această discuție' - post: 'distribuie o adresă către postarea #%{postNumber}' + topic: 'distribuie această discuție' + post: 'distribuie postarea #%{postNumber}' close: 'închide' - twitter: 'distribuie această adresă pe Twitter' - facebook: 'distribuie această adresă pe Facebook' - google+: 'distribuie această adresă pe Google+' - email: 'trimite această adresă în email' + twitter: 'distribuie pe Twitter' + facebook: 'distribuie pe Facebook' + google+: 'distribuie pe Google+' + email: 'trimite această adresă peemail' + action_codes: + split_topic: "desparte acest topic %{when}" + autoclosed: + enabled: 'închis %{when}' + disabled: 'deschis %{when}' + closed: + enabled: 'închis %{when}' + disabled: 'deschis %{when}' + archived: + enabled: 'arhivat %{when}' + disabled: 'dezarhivat %{when}' + pinned: + enabled: 'Prins %{when}' + disabled: 'desprinse %{when}' + pinned_globally: + enabled: 'promovat global %{when}' + disabled: 'desprins %{when}' + visible: + enabled: 'listat %{when}' + disabled: 'retras %{when}' topic_admin_menu: "acțiuni subiect administrator" emails_are_disabled: "Trimiterea de emailuri a fost dezactivată global de către un administrator. Nu vor fi trimise notificări email de nici un fel." + s3: + regions: + us_east_1: "US East (N. Virginia)" + us_west_1: "US West (N. California)" + us_west_2: "US West (Oregon)" + us_gov_west_1: "AWS GovCloud (US)" + eu_west_1: "EU (Irlanda)" + eu_central_1: "EU (Frankfurt)" + ap_southeast_1: "Asia Pacific (Singapore)" + ap_southeast_2: "Asia Pacific (Sydney)" + ap_northeast_1: "Asia Pacific (Tokyo)" + ap_northeast_2: "Asia Pacific (Seoul)" + sa_east_1: "South America (Sao Paulo)" edit: 'editează titlul și categoria acestui subiect' not_implemented: "Această caracteristică nu a fost implementată încă, ne pare rău!" no_value: "Nu" @@ -117,10 +173,11 @@ ro: sign_up: "Înregistrare" log_in: "Autentificare" age: "Vârsta" - joined: "Adăugat" + joined: "Înregistrat" admin_title: "Admin" flags_title: "Semnalare" show_more: "Detaliază" + show_help: "Opțiuni" links: "Adrese" links_lowercase: one: "adresă" @@ -133,41 +190,45 @@ ro: terms_of_service: "Termenii serviciului" mobile_view: "Ecran pentru mobil" desktop_view: "Ecran pentru desktop" - you: "Dumneavoastră" + you: "Tu" or: "sau" now: "Adineauri" read_more: 'citește mai mult' more: "Mai mult" less: "Mai puțin" never: "Niciodată" + every_30_minutes: "La fiecare 30 de minute" + every_hour: "La fiecare oră" daily: "Zilnic" weekly: "Săptămânal" every_two_weeks: "Odată la două săptamâni" every_three_days: "la fiecare trei zile" max_of_count: "max din {{count}}" + alternation: "sau" character_count: - one: "{{count}} caracter" - few: "2 caractere" + one: "Un caracter" + few: "{{count}} caractere" other: "{{count}} caractere" suggested_topics: - title: "Subiecte Propuse" + title: "Subiecte sugerate" + pm_title: "Mesaje sugerate" about: simple_title: "Despre" title: "Despre %{title}" - stats: "Statistica site-ului" - our_admins: "Doar administratorii" - our_moderators: "Doar moderatorii" + stats: "Statisticile site-ului" + our_admins: "Administratorii" + our_moderators: "Moderatorii" stat: all_time: "Tot timpul" last_7_days: "Ultimele 7 zile" last_30_days: "Ultimele 30 de zile" - like_count: "Like-uri" + like_count: "Aprecieri" topic_count: "Subiecte" post_count: "Postări" user_count: "Utilizatori noi" active_user_count: "Utilizatori activi" - contact: "Contactați-ne" - contact_info: "În cazul în care o problemă critică sau alt aspect urgent afectează site-ul, va rugăm să ne contactaţi la %{contact_info}." + contact: "Contactează-ne" + contact_info: "În cazul în care o problemă critică sau alt aspect urgent afectează site-ul, contactează-ne la %{contact_info}." bookmarked: title: "Semn de carte" clear_bookmarks: "Șterge semnele de carte" @@ -180,36 +241,39 @@ ro: not_bookmarked: "Ai citit deja aceast mesaj; fă clic să adaugi semn de carte" last_read: "Acesta este ultimul mesaj citit de tine; fă click să adaugi semn de carte" remove: "Semn de carte înlăturat" - confirm_clear: "Sunteţi sigur că doriţi să ştergeţi toate bookmark-urile din acest subiect?" + confirm_clear: "Ești sigur că dorești să ştergi toate bookmark-urile din acest subiect?" topic_count_latest: one: "{{count}} subiect nou sau actualizat." few: "{{count}} subiecte noi sau actualizate." other: "{{count}} subiecte noi sau actualizate." topic_count_unread: - one: "{{count}} subiect necitit." + one: "Un subiect necitit." few: "{{count}} subiecte necitite." - other: "{{count}} subiecte necitite." + other: "{{count}} de subiecte necitite." topic_count_new: - one: "{{count}} subiect nou." + one: "Un subiect nou." few: "{{count}} subiecte noi." - other: "{{count}} subiecte noi." + other: "{{count}} de subiecte noi." click_to_show: "Click pentru vizualizare." preview: "vizualizează" cancel: "anulează" save: "Salvează Schimbările" - saving: "Salvează..." + saving: "Se Salvează..." saved: "Salvat!" upload: "Încarcă" uploading: "Încărcare..." + uploading_filename: "Se încarcă {{filename}}..." uploaded: "Încărcat!" enable: "Activează" disable: "Dezactivează" undo: "Anulează acțiunea precedentă" - revert: "Rescrie acțiunea precedentă" + revert: "Refacere" failed: "Eșuat" switch_to_anon: "Mod anonim" + switch_from_anon: "Ieșire din mod anonim" banner: close: "Ignoră acest banner." + edit: "Editează acest banner >>" choose_topic: none_found: "Nu au fost găsite discuții." title: @@ -225,15 +289,19 @@ ro: edit: "Editează" cancel: "Anulează" view_pending: "vezi postările în aşteptare" + has_pending_posts: + one: "Această discuție are 1 postare în așteptare" + few: "Această discuţie are {{count}} postări în aşteptare." + other: "Această discuţie are {{count}} de postări în aşteptare." confirm: "Salvează Schimbările" - delete_prompt: "Sunteţi sigur că vreţi să ştergeţi %{username}? Această operaţiune va şterge toate postările, va bloca adresa de email şi adresa de IP." + delete_prompt: "Ești sigur că vrei să ștergi utilizatorul %{username}? Vor fi șterse toate postările iar email-ul și IP-ul vor fi blocate." approval: title: "Necesită aprobare" description: "Am primit nouă postare dar trebuie să fie aprobată de un moderator înainte că ea să apară pe site. Va rugăm să aveţi răbdare." pending_posts: one: "Aveţi 1 postare în aşteptare." few: "Aveţi {{count}} postări în aşteptare." - other: "Aveţi {{count}} postări în aşteptare." + other: "Aveţi {{count}} de postări în aşteptare." ok: "OK" user_action: user_posted_topic: "{{user}} a postat discuția" @@ -271,20 +339,38 @@ ro: few: "%{count} utilizatori" other: "%{count} utilizatori" groups: + empty: + mentions: "Nu sunt mențiuni ale acestui grup." + messages: "Nu este nici un mesaj pentru acest grup." + add: "Adaugă" + selector_placeholder: "Adaugă membri" + owner: "proprietar" visible: "Grupul este vizibil tuturor utilizatorilor" title: one: "grup" few: "grupuri" other: "grupuri" members: "Membri" + topics: "Discuții" posts: "Postări" + mentions: "Mențiuni" + messages: "Mesaje" alias_levels: - title: "Cine poate folosii acest grup ca pseudonim?" nobody: "Nimeni" only_admins: "Doar Adminii" mods_and_admins: "Doar moderatorii și adminii" members_mods_and_admins: "Doar membri grupului, moderatorii și adminii" everyone: "Toată lumea" + notifications: + watching: + title: "Urmărit" + tracking: + title: "Urmărit" + regular: + title: "Normal" + description: "Vei fi notificat dacă cineva îți menționează @numele sau îți va scrie un reply." + muted: + title: "Mut" user_action_groups: '1': "Aprecieri Date" '2': "Aprecieri Primite" @@ -294,7 +380,6 @@ ro: '6': "Răspunsuri" '7': "Mențiuni" '9': "Citate" - '10': "Participări" '11': "Editări" '12': "Obiecte Trimise" '13': "Primite" @@ -304,6 +389,14 @@ ro: all_subcategories: "toate" no_subcategory: "niciuna" category: "Categorie" + reorder: + title: "Rearanjeaza Categoriile" + title_long: "Rearanjeaza lista de categorii" + fix_order: "Pozitii fixe" + fix_order_tooltip: "Nu toate categoriile au un numar de pozitie unic, asta poate cauze rezultate neasteptate." + save: "Salveaza ordinea" + apply_all: "Aplica" + position: "Pozitie" posts: "Postări" topics: "Discuții" latest: "Ultimele" @@ -334,7 +427,9 @@ ro: read_time: "Timp de citire" topics_entered: "Discuții la care particip" post_count: "# postari" - confirm_delete_other_accounts: "Sunteți sigur că vreți să ștergeți aceste conturi?" + confirm_delete_other_accounts: "Ești sigur că vrei să ștergi aceste conturi?" + user_fields: + none: "(selecteaza o optiune)" user: said: "{{username}} a spus:" profile: "Profil" @@ -346,11 +441,21 @@ ro: private_messages: "Mesaje" activity_stream: "Activitate" preferences: "Preferințe" + expand_profile: "Extinde" bookmarks: "Semne de carte" bio: "Despre mine" invited_by: "Invitat de" trust_level: "Nivel de Încredere" notifications: "Notificări" + statistics: "Statistici" + desktop_notifications: + label: "Notificari desktop" + not_supported: "Notificarile nu sunt suportate in acest browser." + perm_default: "Activeaza notificarile" + perm_denied_btn: "Nu se permite accesul" + disable: "Dezactiveaza notificarile" + enable: "Activeaza Notificarile" + each_browser_note: "Notati: Setarile vor fi modificate pe orice alt browser." dismiss_notifications: "Marchează toate ca citite" dismiss_notifications_tooltip: "Marchează cu citit toate notificările necitite" disable_jump_reply: "Nu sări la postarea mea după ce răspund" @@ -361,8 +466,9 @@ ro: change: "schimbă" moderator: "{{user}} este moderator" admin: "{{user}} este admin" - moderator_tooltip: "Acest user este moderator" - admin_tooltip: "Acest user este admin" + moderator_tooltip: "Acest utilizator este moderator" + admin_tooltip: "Acest utilizator este admin" + blocked_tooltip: "Acest utilizator este blocat." suspended_notice: "Acest user este suspendat păna la {{date}}." suspended_reason: "Motiv: " github_profile: "Github" @@ -370,9 +476,8 @@ ro: watched_categories: "Văzut" tracked_categories: "Tracked" muted_categories: "Muted" - muted_categories_instructions: "Nu vei fii notificat de dicuțiile apărute în aceste categorii și ele nu vor apărea în tabul necitite." delete_account: "Șterge-mi contul" - delete_account_confirm: "Ești sigur că vrei sa ștergi contul? Această acțiune poate fi anulată!" + delete_account_confirm: "Ești sigur că vrei sa ștergi contul? Această acțiune nu este reversibilă!" deleted_yourself: "Contul tău a fost șters cu succes." delete_yourself_not_allowed: "Nu iți poți sterge contul deocamdată. Contactează administratorul pentru ștergerea contului." unread_message_count: "Mesaje" @@ -380,6 +485,7 @@ ro: users: "Utilizatori" muted_users: "Silențios" muted_users_instructions: "Suprimă toate notificările de la aceşti utilizatori" + muted_topics_link: "Arata topicurile dezactivate." staff_counters: flags_given: "Semnale ajutătoare" flagged_posts: "postări semnalate" @@ -388,8 +494,14 @@ ro: warnings_received: "avertizări" messages: all: "Toate" - mine: "Ale mele" - unread: "Necitite" + inbox: "Inbox" + sent: "Trimise" + archive: "Arhivează" + groups: "Grupurile Mele" + bulk_select: "Selectează mesaje" + move_to_inbox: "Mută în Inbox" + move_to_archive: "Arhivează" + select_all: "Selectează tot" change_password: success: "(email trimis)" in_progress: "(se trimite email)" @@ -401,26 +513,27 @@ ro: error: "A apărut o eroare la schimbarea acestei valori" change_username: title: "Schimbă numele utilizatorului" - confirm: "Dacă schimbați numele utilizatorului, toate citatele din posturile precedente inclusiv mențiunile de nume vor fi anulate. Ești absolut sigur?" - taken: "Ne pare rău, acest nume de utilizator este deja folosit." + confirm: "Dacă schimbi numele utilizatorului, toate citatele din posturile precedente inclusiv @mențiunile nu vor mai funcționa. Ești absolut sigur?" + taken: "Acest nume de utilizator este deja folosit." error: "S-a intâmpinat o eroare pe parcursul schimbării numelui de utilizator." invalid: "Acest nume de utilizator este invalid. Trebuie să includă doar cifre și litere." change_email: title: "Schimbă Email" - taken: "Ne pare rău, acest email nu este disponibil." - error: "S-a întâmpinat o eroare la schimbarea de email. Poate această adresă este deja in folosința?" - success: "Am trimis un email către adresa respectivă. Urmați, vă rugăm, instrucțiunile de confirmare." + taken: "Acest email nu este disponibil." + error: "A apărut o eroare la schimbarea de email. Poate această adresă este deja in folosința?" + success: "Am trimis un email către adresa respectivă. Urmează instrucțiunile de confirmare." change_avatar: title: "Schimbă poză profilului personal" gravatar: "Gravatar, bazat pe" gravatar_title: "Schimbă avatarul de pe site-ul Gravatar." - refresh_gravatar_title: "Reîmprospatați Gravatarul" - letter_based: "Poză profilul atribuită de sistem." + refresh_gravatar_title: "Reactualizează Gravatarul" + letter_based: "Poză de profil atribuită de sistem." uploaded_avatar: "Poză preferată" uploaded_avatar_empty: "Adaugă poza preferată" upload_title: "Încarcă poza personală" upload_picture: "Încarcă poza" image_is_not_a_square: "Atenţie: poză este decupată, dar înălţimea şi lăţimea nu sunt egale." + cache_notice: "Fotografia de profil a fost schimbata, dar poate dura ceva timp pana sa apara datorita caching-ului din browser." change_profile_background: title: "Datele Profilului" instructions: "Fundalul profilului va fi centrat şi va avea o dimensiune standard de 850px." @@ -429,14 +542,10 @@ ro: instructions: "Fundalul va fi centrat şi va avea o dimensiune standard de 590px." email: title: "Email" - instructions: "Emailul dumneavoastră nu va fi făcut public." - ok: "Arată bine. Vă trimitem un email pentru confirmare." + instructions: "Emailul nu va fi făcut public." + ok: "Îți vom trimite un email pentru confirmare." invalid: "introduceți o adresă validă pentru confirmare." - authenticated: "Emailul dumneavoastră a fost autentificat de către {{provider}}." - frequency: - zero: "Vă vom trimite un email imediat dacă nu aţi citit încă ce v-am trimis." - one: "Va vom trimite un email dacă nu v-am văzut în ultimul minut." - other: "Va vom trimite un email doar dacă nu v-am văzut în ultimele {{count}} minute." + authenticated: "Emailul a fost autentificat de către {{provider}}." name: title: "Nume" instructions: "Versiunea lungă a numelui." @@ -461,7 +570,7 @@ ro: instructions: "Limba este folosită de interfața forumului. Schimbarea se va produce odată ce reîmprospatați pagina." default: "(din oficiu)" password_confirmation: - title: "Incă odată parola" + title: "Confirmă parola" last_posted: "Ultima postare" last_emailed: "Ultimul email dat" last_seen: "Văzut" @@ -472,32 +581,58 @@ ro: title: "Insignă utilizator" website: "Website" email_settings: "Email" + like_notification_frequency: + always: "Întotdeauna" + never: "Niciodată" + email_previous_replies: + always: "întotdeauna" + never: "niciodată" email_digests: title: "Cand nu vizitez site-ul, trimite-mi un email cu rezumatul noutăților:" + every_30_minutes: "La fiecare 30 de minute " daily: "zilnic" every_three_days: "la fiecare trei zile" weekly: "săptămânal" every_two_weeks: "la fiecare două săptămâni" email_direct: "Trimite un email când cineva mă citează, îmi răspunde la un post, menţionează @username meu, sau mă invită la o discuţie." email_private_messages: "Trimite-mi un mesaj când cineva îmi răspunde." + email_always: "Trimite-mi notificarile de email atunci cand sunt activ pe site." other_settings: "Altele" categories_settings: "Categorii" new_topic_duration: label: "Consideră discuțiile ca fiind noi" not_viewed: "Nu le-am văzut încă " last_here: "Create de la ultima vizită " + after_1_day: "creat azi" + after_2_days: "creat in ultimele 2 zile" + after_1_week: "creat in ultima saptamana" + after_2_weeks: "creat in ultimele 2 saptamni" auto_track_topics: "Urmăreşte automat discuţiile pe care le vizitez " auto_track_options: never: "niciodată" immediately: "imediat" + after_30_seconds: "dupa 30 de secunde" + after_1_minute: "dupa 1 minut" + after_2_minutes: "dupa 2 minute" + after_3_minutes: "dupa 3 minute" + after_4_minutes: "dupa 4 minute" + after_5_minutes: "dupa 5 minute" + after_10_minutes: "dupa 10 minute" invited: search: "Scrie pentru a căuta invitații..." title: "Invitații" user: "Utilizatori invitați" - truncated: "Afișeaza primele {{count}} invitații." + sent: "Trimis" + none: "Nu sunt invitații în așteptare." + truncated: + one: "Se arată prima invitație." + few: "Se arată primele {{count}} invitații." + other: "Se arată primele {{count}} de invitații." redeemed: "Invitații rascumpărate" redeemed_at: "Răscumpărate" pending: "Invitații in așteptare" + pending_tab: "In asteptare" + pending_tab_with_count: "In asteptare ({{count}})" topics_entered: "Subiecte văzute" posts_read_count: "Posturi citite" expired: "Această invitație a expirat." @@ -510,11 +645,11 @@ ro: account_age_days: "Vârsta contului în zile" create: "Trimite o invitație" bulk_invite: - none: "Nu ai invitat încă pe nimeni. Poți trimite invitații individuale, sau mai multor oameni deodată prin incărcarea fișierului de invitație multiplă." + none: "Nu ai invitat încă pe nimeni. Poți trimite invitații individuale sau mai multor oameni deodată prin incărcarea fișierului de invitație multiplă." text: "Invitație multiplă din fișierul" uploading: "Incarcă" success: "Fişier încărcat cu succes, veţi fi înştiinţat printr-un mesaj când procesarea va fi completă." - error: "S-a întâmpinat o eroare la încărcarea fișierului '{{filename}}': {{message}}" + error: "A apărut o eroare la încărcarea fișierului '{{filename}}': {{message}}" password: title: "Parolă" too_short: "Parola este prea scurtă." @@ -523,6 +658,9 @@ ro: same_as_email: "Parolă este identică cu adresa de email" ok: "Parola dumneavoastră arată bine." instructions: "Trebuiesc minim %{count} de caractere." + summary: + title: "Sumar" + stats: "Statistici" associated_accounts: "Conectări" ip_address: title: "Ultima adresă de IP" @@ -548,22 +686,23 @@ ro: server: "Eroare de server: {{code}}" forbidden: "Acces nepermis" unknown: "Eroare" + not_found: "Pagina nu a fost găsită" desc: - network: "Verificați conexiunea." + network: "Te rugăm să verifici conexiunea." network_fixed: "Se pare ca și-a revenit." server: "Ceva nu a funcționat." - forbidden: "Nu sunteţi autorizat să vedeţi aceasta." + forbidden: "Nu ești autorizat să vezi această pagină." + not_found: "Oops, aplicația încearcă să încarce un URL care nu există." unknown: "Ceva nu a funcționat." buttons: back: "Înapoi" again: "Încearcă din nou" fixed: "Încarcare pagină" close: "Închide" - assets_changed_confirm: "Acest site tocmai a fost updatat. Reîmprospătați pentru cea mai nouă versiune?" + assets_changed_confirm: "Acest site tocmai a fost actualizat. Reîmprospătați pentru cea mai nouă versiune?" logout: "Aţi fost deconectat." refresh: "Reîmprospătează" read_only_mode: - enabled: "Modul doar citire a fost activat. Puteţi continuă să vizitaţi acest site dar anumite acţiuni vor fi limitate." login_disabled: "Autentificarea este dezactivată când siteul este în modul doar pentru citit." learn_more: "află mai multe..." year: 'an' @@ -582,10 +721,14 @@ ro: one: răspuns few: răspunsuri other: răspunsuri + signup_cta: + sign_up: "Înregistrare" + hide_session: "Aminteste-mi maine." + hide_forever: "Nu, Multumesc" + hidden_for_session: "Ok, te vom intreba maine. Poti oricand folosi 'Autentificare' pentru a crea un cont." + value_prop: "Cand creati un cont nou, vom retine exact ce ati citit, astfel continuati intotdeauna de unde ati ramas. Deasemenea primiti notificari, aici sau prin email atunci se posteaza ceva nou. Puteti \"aprecia\" postari pentru a impartasi iubire :heartbeat:" summary: enabled_description: "Vizualizați sumarul discuției: cea mai interesantă postare, așa cum a fost determinată de comunitate. Pentru toate postările, faceți click dedesubt." - description: "Există {{count}} de răspunsuri." - description_time: "Există {{count}} de răspunsuri cu timp de citit estimat la {{readingTime}} de minute." enable: 'Fă sumarul discuției' disable: 'Arată toate postările' deleted_filter: @@ -605,15 +748,15 @@ ro: trust_level: 'Nivel de încredere' search_hint: 'Numele de utilizator sau email' create_account: - title: "Crează cont" + title: "Creează cont" failed: "Ceva a decurs greșit, poate că acest email e deja înregistrat, încearcă linkul parolă uitată " forgot_password: title: "Resetare parolă" action: "Mi-am uitat parola" invite: "Introduce-ți numele de utilizator sau adresa de email și vă vom trimite un email pentru resetarea parolei." reset: "Resetare Parolă" - complete_username: "Dacă contul se potrivește numelui de utilizator %{username}, ar trebuii să primiți un email cu instrucțiunile de resetare a parolei, în scurt timp." - complete_email: "dacă un cont se potrivește %{email}, ar trebuii să primiți un email cu instrucțiunile de resetare a parolei, în scurt timp." + complete_username: "Dacă contul se potrivește numelui de utilizator %{username}, ar trebui să primiți în scurt timp un email cu instrucțiunile de resetare a parolei." + complete_email: "Dacă un cont se potrivește cu %{email}, ar trebui să primiți un email în cel mai scurt timp cu instrucțiunile de resetare a parolei." complete_username_found: "Am găsit un cont care se potriveşte cu utilizatorul %{username}, veţi primi un email cu instrucţiunile cum să resetati parolă în cel mai scurt timp." complete_email_found: "Am găsit un cont care se potriveşte cu adresa %{email}, veţi primi un email cu instrucţiunile cum să resetati parolă în cel mai scurt timp." complete_username_not_found: "Nici un cont nu se potriveşte cu utilizatorul %{username}" @@ -625,6 +768,7 @@ ro: email_placeholder: "email sau nume de utilizator" caps_lock_warning: "Caps Lock este apăsat" error: "Eroare necunoscută" + rate_limit: "Te rog asteapta inainte de a te reconecta." blank_username_or_password: "Introduceți emailul sau numele de utilizator și parola." reset_password: 'Resetare parolă' logging_in: "În curs de autentificare..." @@ -638,6 +782,9 @@ ro: admin_not_allowed_from_ip_address: "Nu va puteţi conecta ca administrator de la această adresa de IP." resend_activation_email: "Click aici pentru a trimite emailul de activare încă odată." sent_activation_email_again: "Am trimis un alt email de activare pentru dvs la {{currentEmail}}. Poate dura câteva minute până ajunge; Vizitați și secțiunea de spam a mailului." + to_continue: "Te rog sa te autentifici." + preferences: "Trebuie sa fi autentificat pentru a schimba preferintele." + forgot: "Nu imi amintesc detaliile contului meu." google: title: "cu Google" message: "Autentificare cu Google (Asigurați-vă că barierele de pop up nu sunt active)" @@ -660,8 +807,14 @@ ro: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + emoji: "Emoji :)" + more_emoji: "mai multe..." + options: "Optiuni" add_warning: "Această este o avertizare oficială." posting_not_on_topic: "Cărei discuții vrei să-i răspunzi?" saving_draft_tip: "salvează..." @@ -675,22 +828,23 @@ ro: title_too_long: "Titlul nu poate avea {{max}} de caractere" post_missing: "Postarea nu poate fi gol" post_length: "Postarea trebuie sa aibă minim {{min}} de caractere" - try_like: 'Aţi încercat butonul ?' + try_like: 'Ai încercat butonul ?' category_missing: "Trebuie să alegi o categorie" save_edit: "Salvează Editarea" reply_original: "Răspunde discuției originale" reply_here: "Răspunde aici" reply: "Răspunde" cancel: "Anulează" - create_topic: "Crează o Discuţie" + create_topic: "Creează o Discuţie" create_pm: "Mesaj" - title: "sau apasă Ctrl+Enter" - users_placeholder: "adaugă un utilizator" + title: "Sau apasă Ctrl+Enter" + users_placeholder: "Adaugă un utilizator" title_placeholder: "Care este tema discuției într-o singură propoziție?" edit_reason_placeholder: "de ce editați?" show_edit_reason: "(adaugă motivul editării)" + reply_placeholder: "Scrie aici. Utilizeaza Markdown, BBCode or HTML la format. Trage sau lipeste imagini." view_new_post: "Vizualizează noua postare." - saving: "Salvează..." + saving: "Salvare" saved: "Salvat!" saved_draft: "Ai o postare în stadiul neterminat. Fă click oriunde pentru a continua editarea." uploading: "Încarcă..." @@ -705,6 +859,7 @@ ro: link_description: "adaugă aici descrierea adresei hyper" link_dialog_title: "Introdu adresă hyper" link_optional_text: "titlu opțional" + link_placeholder: "http://example.com \"text optional\"" quote_title: "Citat-bloc" quote_text: "Citat-bloc" code_title: "Text preformatat" @@ -716,11 +871,12 @@ ro: list_item: "conținut de listă" heading_title: "Titlu" heading_text: "Titlu" - hr_title: "Regulă de ordonare orizontală" - undo_title: "Anulează schimbările" - redo_title: "Refă schimbările" + hr_title: "Linie orizontală" help: "Ajutor de editare" - toggler: "ascunde sau arată panelul de compus" + toggler: "ascunde sau arată editorul" + modal_ok: "Ok" + modal_cancel: "Anuleaza" + cant_send_pm: "Nu poți trimite mesaje către %{username}" admin_options_title: "Setări opționale ale discuției pentru moderatori" auto_close: label: "Închide automat discuţia după:" @@ -732,16 +888,21 @@ ro: units: "(# de ore)" examples: 'Introdu numărul de ore (24).' notifications: - title: "notifică menționarea @nume, răspunsuri la postări, discuții, mesaje private, etc" + title: "notifică menționarea @numelui, răspunsuri la postările mele, discuții, mesaje private, etc" none: "Nu pot încarcă notificările în acest moment." more: "vezi notificările mai vechi" total_flagged: "toate postările semnalate" mentioned: "@
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" + posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" + liked_2: "
{{username}}, {{username2}} {{description}}
" + liked_many: + one: "
{{username}}, {{username2}} și încă cineva {{description}}
" + few: "
{{username}}, {{username2}} și alți {{count}} {{description}}
" + other: "
{{username}}, {{username2}} și alți {{count}} {{description}}
" private_message: "
{{username}} {{description}}
" invited_to_private_message: "
{{username}} {{description}}
" invited_to_topic: "
{{username}} {{description}}
" @@ -749,26 +910,43 @@ ro: moved_post: "
{{username}} mutată {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
Ţi s-a acordat {{description}}
" + alt: + mentioned: "Mentionat de" + quoted: "Citat de" + replied: "Raspuns" + posted: "Postat de" popup: - mentioned: '{{username}} va menţionat în "{{topic}}" - {{site_title}}' - quoted: '{{username}} va citat în"{{topic}}" - {{site_title}}' - replied: '{{username}} va răspuns la "{{topic}}" - {{site_title}}' + mentioned: '{{username}} te-a menţionat în "{{topic}}" - {{site_title}}' + group_mentioned: '{{username}} te-a menţionat în "{{topic}}" - {{site_title}}' + quoted: '{{username}} te-a citat în "{{topic}}" - {{site_title}}' + replied: '{{username}} ți-a răspuns la "{{topic}}" - {{site_title}}' posted: '{{username}} a postal în "{{topic}}" - {{site_title}}' - private_message: '{{username}} va trimis un mesaj privat în "{{topic}}" - {{site_title}}' - linked: '{{username}} a făcut o legătură la post-ul dvs. din "{{topic}}" - {{site_title}}' + private_message: '{{username}} ți-a trimis un mesaj privat în "{{topic}}" - {{site_title}}' + linked: '{{username}} a făcut o legătură la post-ul tău din "{{topic}}" - {{site_title}}' upload_selector: title: "Adaugă o imagine" title_with_attachments: "adaugă o imagine sau un fișier" from_my_computer: "din dispozitivul meu" from_the_web: "De pe web" remote_tip: "adresă către imagine http://example.com/image.jpg" - remote_tip_with_attachments: "adresă către imagine sau fișier http://example.com/file.ext (extensii permise: {{authorized_extensions}})." hint: "(puteți să trageți și să aruncați în editor pentru a le încărca)" uploading: "Încarcă" + select_file: "Slectează fișier" image_link: "Adresa din imagine va duce la" search: + sort_by: "Sortează după" + relevance: "Relevanță" + latest_post: "Ultimele postări" + most_viewed: "Cele mai văzute" + most_liked: "Cele mai apreciate" + select_all: "Selectează tot" + result_count: + one: "Un rezultat pentru \"{{term}}\"" + few: "{{count}} rezultate pentru \"{{term}}\"" + other: "{{count}} de rezultate pentru \"{{term}}\"" title: "caută discuții ,postări sau categorii" no_results: "Fără rezultat." + search_help: Ajutor căutare searching: "Caută..." post_format: "#{{post_number}} de {{username}}" context: @@ -776,6 +954,7 @@ ro: category: "Caută în categoria\"{{category}}\" " topic: "Caută în această discuție" private_messages: "Caută mesaje" + new_item: "nou" go_back: 'înapoi' not_logged_in_user: 'pagina utilizatorului cu sumarul activităților și preferințelor' current_user: 'mergi la pagina proprie de utilizator' @@ -783,10 +962,6 @@ ro: bulk: reset_read: "resetează citirea" delete: "Șterge subiectele" - dismiss_posts: "Șterge postarea" - dismiss_posts_tooltip: "Șterge părțile necitite din această discuție dar continuă afișarea lor în lista de necitite când au loc postări noi" - dismiss_topics: "Sterge discuția" - dismiss_topics_tooltip: "Nu arăta aceste discuții în lista de necitite când au loc postări noi" dismiss_new: "Anulează cele noi" toggle: "activează selecția în masă pentru discuții" actions: "Acțiuni în masă" @@ -798,20 +973,18 @@ ro: selected: one: "Ai selectat un subiect." few: "Ai selectat {{count}} subiecte." - other: "Ai selectat {{count}} subiecte." + other: "Ai selectat {{count}} de subiecte." none: - unread: "Nu aveți discuții necitite." - new: "Nu aveți discuții noi." - read: "Nu ați citit nicio discuție încă." - posted: "Nu ați postat în nicio discuție încă." - latest: "Nu există nicio discuție nouă. Trist." + unread: "Nu sunt discuții necitite." + new: "Nu sunt discuții noi." + read: "Nu ai citit nicio discuție încă." + posted: "Nu ai postat în nicio discuție încă." + latest: "Nu există nicio discuție nouă." hot: "Nu există nicio discuție importantă." bookmarks: "Nu aveţi nici un semn de carte încă." category: "Nu există nicio discuție din categoria {{category}}." top: "Nu exită nicio discuție de top." search: "Nu sunt rezulate la căutare." - educate: - new: '
Discuţiile noi vor apărea aici.
Implicit, discuţiile sunt considerate noi şi vor afişa indicatorul new dacă au fost create în ultimele 2 zile.
Puteţi schimba aceasta în preferinţele dvs.
'
bottom:
latest: "Nu există nicio ultimă discuție."
hot: "Nu mai există discuții importante."
@@ -824,59 +997,67 @@ ro:
bookmarks: "Nu mai sunt semne de carte."
search: "Nu mai sunt rezultate."
topic:
- filter_to: "{{post_count}} de postări în discuție"
- create: 'Crează discuție'
- create_long: 'Crează discuție nouă'
+ unsubscribe:
+ stop_notifications: "Vei primi mai puține notificări pentru {{title}}"
+ filter_to: "{{post_count}} postări în discuție"
+ create: 'Discuție Nouă'
+ create_long: 'Creează discuție nouă'
private_message: 'Scrie un mesaj.'
+ archive_message:
+ help: 'Mută mesajul în arhivă'
+ title: 'Arhivează'
+ move_to_inbox:
+ title: 'Mută în Inbox'
+ help: 'Mută mesajul în Inbox'
list: 'Discuții'
new: 'discuție nouă'
unread: 'necitită'
new_topics:
- one: '1 subiect nou'
+ one: 'Un subiect nou'
few: '{{count}} subiecte noi'
- other: '{{count}} subiecte noi'
+ other: '{{count}} de subiecte noi'
unread_topics:
- one: '1 subiect necitit'
+ one: 'Un subiect necitit'
few: '{{count}} subiecte necitite'
- other: '{{count}} subiecte necitite'
+ other: '{{count}} de subiecte necitite'
title: 'Discuție'
invalid_access:
- title: "Discuție pirvată"
+ title: "Discuția este privată"
description: "Ne pare rău nu ai acces la acea discuție!"
login_required: "Trebuie să fii autentificat să poți vedea discuția."
server_error:
title: "Discuția nu s-a putut încărca"
- description: "Ne pare rău, nu am putut încărca discuția, posibil din cauza unei probleme de conexiune. Încercați din nou. Dacă problema persistă, anunțați-ne."
+ description: "Ne pare rău, nu am putut încărca discuția, posibil din cauza unei probleme de conexiune. Încercați din nou. Dacă problema persistă, anunță-ne."
not_found:
title: "Discuție negăsită"
description: "Ne pare rău, Nu am putut găsii discuția. Poate a fost ștearsă de un moderator?"
total_unread_posts:
- one: "aveţi 1 mesaj necitit în această discuţie."
- few: "aveţi {{count}} mesaje necitite în această discuţie."
- other: "aveţi {{count}} mesaje necitite în această discuţie."
+ one: "ai un mesaj necitit în această discuţie."
+ few: "ai {{count}} mesaje necitite în această discuţie."
+ other: "ai {{count}} de mesaje necitite în această discuţie."
unread_posts:
- one: "aveţi 1 mesaj vechi necitit în această discuţie."
- few: "aveţi {{count}} mesaje vechi necitite în această discuţie."
- other: "aveţi {{count}} mesaje vechi necitite în această discuţie."
+ one: "ai un mesaj vechi necitit în această discuţie."
+ few: "ai {{count}} mesaje vechi necitite în această discuţie."
+ other: "ai {{count}} de mesaje vechi necitite în această discuţie."
new_posts:
- one: "este 1 mesaj nou în această discuţie de la ultima citire"
+ one: "este un mesaj nou în această discuţie de la ultima citire"
few: "sunt {{count}} mesaje noi în această discuţie de la ultima citire"
- other: "sunt {{count}} mesaje noi în această discuţie de la ultima citire"
+ other: "sunt {{count}} de mesaje noi în această discuţie de la ultima citire"
likes:
- one: "este 1 apreciere pentru această discuţie"
+ one: "există o apreciere pentru această discuţie"
few: "sunt {{count}} aprecieri pentru această discuţie"
- other: "sunt {{count}} aprecieri pentru această discuţie"
+ other: "sunt {{count}} de aprecieri pentru această discuţie"
back_to_list: "Înapoi la lista de discuții"
options: "Opțiunile discuției"
- show_links: "arată adresele din această discuție"
+ show_links: "arată link-urile din această discuție"
toggle_information: "activează detaliile discuției"
read_more_in_category: "Vreți să citiți mai mult? Priviți alte discuții din {{catLink}} sau {{latestLink}}."
read_more: "Vreți să citiți mai mult? {{catLink}} sau {{latestLink}}."
browse_all_categories: Priviți toate categoriile
- view_latest_topics: priviți ultimele discuții
+ view_latest_topics: arată ultimele discuții
suggest_create_topic: De ce să nu creați o discuție?
- jump_reply_up: răspundeți imediat
- jump_reply_down: răspundeți mai târziu
+ jump_reply_up: sări la un răspuns mai vechi
+ jump_reply_down: sări la un răspuns mai nou
deleted: "Discuția a fost ștearsă"
auto_close_notice: "Această discuție va fi inchisă în %{timeLeft}."
auto_close_notice_based_on_last_post: "Această discuţie se va închide %{duration} după ultimul răspuns."
@@ -885,7 +1066,7 @@ ro:
auto_close_remove: "nu închide automat această discuție"
progress:
title: Progresul Discuției
- go_top: "capăt"
+ go_top: "început"
go_bottom: "sfârșit"
go: "mergi"
jump_bottom: "sări la ultimul mesaj"
@@ -895,58 +1076,70 @@ ro:
position: "postarea %{current} din %{total}"
notifications:
reasons:
- '3_6': 'Veți primii notificări fiindcă priviți această categorie.'
- '3_5': 'Veți primii notificări fiindcă ați început să citiți această discuție automat.'
- '3_2': 'Veți primii notificări fiindcă citiți această discuție.'
- '3_1': 'Veți primii notificări fiindcă ați creat această discuție.'
- '3': 'Veți primii notificări fiindcă priviți această discuție.'
- '2_8': 'Veți primii notificări fiindcă urmariți această categorie.'
- '2_4': 'Veți primii notificări fiindcă ați postat un răspuns în această discuție.'
- '2_2': 'Veți primii notificări fiindcă urmariți această discuție.'
- '2': 'Veți primii notificări fiindcă citiți această discuție.'
- '0_7': 'Ignorați toate notificările din această categorie.'
- '0_2': 'Ignorați toate notificările din această discuție.'
- '0': 'Ignorați toate notificările din această discuție.'
+ '3_6': 'Vei primi notificări deoarece urmărești activ această categorie.'
+ '3_5': 'Vei primi notificări deoarece ai început să urmărești activ această discuție automat.'
+ '3_2': 'Vei primi notificări deoarece urmărești activ această discuție.'
+ '3_1': 'Vei primi notificări deoarece ați creat această discuție.'
+ '3': 'Vei primi notificări deoarece urmărești activ această discuție.'
+ '2_8': 'Vei primi notificări deoarece urmărești această categorie.'
+ '2_4': 'Vei primi notificări deoarece ai postat un răspuns în această discuție.'
+ '2_2': 'Vei primi notificări fiindcă urmărești această discuție.'
+ '2': 'Vei primi notificări fiindcă citești această discuție.'
+ '1_2': 'Vei fi notificat dacă cineva îți menționează @numele sau îți scrie un răspuns.'
+ '1': 'Vei fi notificat dacă cineva îți menționează @numele sau îți scrie un răspuns.'
+ '0_7': 'Ignori toate notificările din această categorie.'
+ '0_2': 'Ignori toate notificările din această discuție.'
+ '0': 'Ignori toate notificările din această discuție.'
watching_pm:
- title: "Privind"
+ title: "Urmărit Activ"
+ description: "Numărul postărilor noi va fi arătat pentru acest mesaj și vei fi notificat pentru orice răspuns scris."
watching:
- title: "Privind"
+ title: "Urmărit Activ"
+ description: "Numărul postărilor noi va fi arătat pentru această discuție și vei fi notificat pentru orice răspuns scris."
tracking_pm:
- title: "Urmărind"
+ title: "Urmărit"
+ description: "Numărul postărilor noi va fi arătat pentru acest mesaj. Vei fi notificat dacă cineva îți menționează @numele sau îți scrie un răspuns."
tracking:
- title: "Urmărind"
+ title: "Urmărit"
+ description: "Numărul postărilor noi va fi arătat pentru acest topic. Vei fi notificat dacă cineva îți menționează @numele sau îți scrie un răspuns."
+ regular:
+ title: "Normal"
+ description: "Vei fi notificat dacă cineva îți menționează @numele sau îți scrie un răspuns."
+ regular_pm:
+ title: "Normal"
+ description: "Vei fi notificat dacă cineva îți menționează @numele sau îți scrie un răspuns."
muted_pm:
title: "Silențios"
- description: "Nu veţi fi niciodată notificat despre acest mesaj."
+ description: "Nu vei fi niciodată notificat despre acest mesaj."
muted:
title: "Silențios"
- description: "Nu veți fi notificat de nimic în legătură cu această dicuție, nu va apărea în tabul necitite."
+ description: "Nu vei fi notificat de răspunsurile noi din această discuție și nu vor apărea în tabul necitite."
actions:
- recover: "Rescrie discuție"
+ recover: "Restaurează discuția"
delete: "Șterge Discuție"
- open: "Deschide discuție"
- close: "Închide discuție"
+ open: "Redeschide discuția"
+ close: "Închide discuția"
multi_select: "Selectează discuţiile ..."
auto_close: "Închide automat"
- pin: "Fixează discuţia pe pagină..."
- unpin: "Anulează fixarea discuției"
+ pin: "Promovează discuţia pe pagină..."
+ unpin: "Anulează promovarea discuției"
unarchive: "Dezarhivează discuția"
archive: "Arhivează discuția"
invisible: "Fă invizibil"
visible: "Fă vizibil"
reset_read: "Resetează informația citită"
feature:
- pin: "Fixează discuţia pe pagină..."
- unpin: "Anulează fixarea discuției"
- pin_globally: "Fixează discuţia pe site..."
+ pin: "Promovează discuţia pe pagină..."
+ unpin: "Anulează promovarea discuției"
+ pin_globally: "Promovează discuţia pe site..."
make_banner: "Marchează discuție"
remove_banner: "Demarchează discuție"
reply:
title: 'Răspunde'
help: 'începe să compui un răspuns pentru această discuție'
clear_pin:
- title: "Înlătură fixarea"
- help: "Înlătură statutul de fix al acestei discuții pentru a nu mai apărea în vârful listei de discuții"
+ title: "Înlătură promovarea"
+ help: "Înlătură promovarea acestei discuții pentru a nu mai apărea la începutul listei de discuții"
share:
title: 'Distribuie'
help: 'distribuie o adresă acestei discuții'
@@ -955,26 +1148,19 @@ ro:
help: 'marchează privat această discuție pentru atenție sau trimite o notificare privată despre ea'
success_message: 'Ai marcat cu succes această discuție.'
feature_topic:
- title: "Promovează această discuţia"
- confirm_pin: "Aveţi deja {{count}} discuţii promovate. Prea multe discuţii promovate pot fi deveni o problemă pentru utilizatorii noi sau anonimi. Sunteţi sigur că vrei să promovaţi o altă discuţie în această categorie?"
+ title: "Promovează această discuţie"
+ confirm_pin: "Ai deja {{count}} discuţii promovate. Prea multe discuţii promovate pot fi deveni o problemă pentru utilizatorii noi sau anonimi. Ești sigur că vrei să promovezi o altă discuţie în această categorie?"
unpin: "Îndepărtează aceast mesaje din top-ul categoriei {{categoryLink}}"
- pin_note: "Utilizatorii pot anula fixarea unui subiect individual pentru ei înșiși."
- already_pinned:
- zero: "Nu există subiecte fixate în {{categoryLink}}."
- one: "Subiecte fixate în acest moment în {{categoryLink}}: 1."
- other: "Subiecte fixate în acest moment în {{categoryLink}}: {{count}}."
- confirm_pin_globally: "Aveţi deja {{count}} discuţii promovate la nivel global. Prea multe discuţii promovate pot fi deveni o problemă pentru utilizatorii noi sau anonimi. Sunteţi sigur că vrei să promovaţi o altă discuţie la nivel global?"
+ pin_note: "Utilizatorii pot anula promovarea unui subiect individual pentru ei înșiși."
+ pin_validation: "Este nevoie de o dată pentru a putea promova această discuție."
+ not_pinned: "Nu sunt discuții promovate în {{categoryLink}}."
+ confirm_pin_globally: "Sunt {{count}} discuţii promovate la nivel global. Prea multe discuţii promovate pot fi deveni o problemă pentru utilizatorii noi sau anonimi. Ești sigur că vrei să promovezi o altă discuţie la nivel global?"
unpin_globally: "Eliminați acest subiect din partea de sus a tuturor listelor de discuţii."
- global_pin_note: "Utilizatorii pot anula fixarea unui subiect individual pentru ei înșiși."
- already_pinned_globally:
- zero: "Nu există subiecte fixate global."
- one: "Subiecte fixate în acest moment la nivel global: 1."
- other: "Subiecte fixate în acest moment la nivel global: {{count}}."
+ global_pin_note: "Utilizatorii pot anula promovarea unui subiect individual pentru ei înșiși."
+ not_pinned_globally: "Nu există subiecte promovate global."
make_banner: "Transformă acest subiect într-un banner care apare în partea de sus a tuturor paginilor."
remove_banner: "Îndepărtaţi mesajul banner care apare în partea de sus a fiecărei pagini."
- banner_note: "Utilizatorii pot îndepărta baner-ul închizându-l. Doar un singur mesaj poate fi folosit că bane într-un moment dat."
- already_banner:
- zero: "Nu există nici un subiect banner."
+ banner_note: "Utilizatorii pot îndepărta baner-ul închizându-l. Doar un singur mesaj poate fi folosit că baner într-un moment dat."
inviting: "Invită..."
automatically_add_to_groups_optional: "Aceasta invitație include și accesul la grupurile: (opțional, doar admin)"
automatically_add_to_groups_required: "Aceasta invitație include și accesul la grupurile: (Neapărat, doar admin)"
@@ -984,27 +1170,27 @@ ro:
email_or_username_placeholder: "adresa de email sau numele utilizatorului"
action: "Invită"
success: "Am invitat acest utilizator să participe la acest mesaj."
- error: "Ne pare rău, s-a întâmpinat o eroare la trimiterea invitației către acel utilizator."
+ error: "Ne pare rău, a apărut o eroare la trimiterea invitației către acel utilizator."
group_name: "numele grupului"
invite_reply:
title: 'Invitație'
username_placeholder: "nume utilizator"
action: 'Trimite o invitație'
help: 'invită alţi utilizatori la această discuţie via email sau notificare'
- to_forum: "Vom trimite un email scurt permițând prietenilor dumneavoastră să participe făcând click pe o adesă, nu necesită autentificare."
- sso_enabled: "Introduceţi numele de utilizator al persoanei pe care doriţi să o invitaţi la acesta discuţie."
- to_topic_blank: "Introduceţi numele de utilizator sau adresa de email a persoanei pe care doriţi să o invitaţi la acesta discuţie."
- to_topic_email: "Aţi introdus o adresa de e-mail. Vom trimite via email o invitaţie, care permite prietenul dvs. să răspundă imediat la această discuţie."
+ to_forum: "Vom trimite un email scurt permițând prietenilor tăisă participe făcând click pe o adesă fără a necesita autentificare."
+ sso_enabled: "Introdu numele de utilizator al persoanei pe care dorești să o inviți la acesta discuţie."
+ to_topic_blank: "Introdu numele de utilizator sau adresa de email a persoanei pe care dorești să o inviți la acesta discuţie."
+ to_topic_email: "Ai introdus o adresa de e-mail. Vom trimite un email cu o invitaţie ce va permite prietenului tău să răspundă imediat la această discuţie."
email_placeholder: 'exemplu@nume.com'
- success_email: "Am trimis o invitaţie către {{emailOrUsername}}.. Va vom anunţă când invitaţia este folosită. Verificaţi fila invitaţii pe pagină dvs. de utilizator pentru a monitoriza invitaţiile. "
+ success_email: "Am trimis o invitaţie către {{emailOrUsername}}.. Te vom anunţă când invitaţia este folosită. Verifică tab-ul invitaţii pe pagină ta de utilizator pentru a monitoriza invitaţiile. "
success_username: "Am invitat acest utilizator să participe la această discuţie."
error: "Ne pare rău, nu am putut invită persoană indicată. Poate că a fost deja invitată? (Invitaţiile sunt limitate)"
login_reply: 'Autentifică-te pentru a răspunde.'
filters:
n_posts:
- one: "1 mesaj"
+ one: "O Postare"
few: "{{count}} postări"
- other: "{{count}} postări"
+ other: "{{count}} de postări"
cancel: "Arată din nou toate postările din această discuție."
split_topic:
title: "Mutare în discuție nouă "
@@ -1012,9 +1198,9 @@ ro:
topic_name: "Numele noii discuții"
error: "S-a semnalat o eroare la mutarea postărilor către discuția nouă."
instructions:
- one: "Veţi crea o nouă discuţie care va fi populată cu postarea selectată."
- few: "Veţi crea o nouă discuţie care va fi populată cu cele {{count}} postări selectate."
- other: "Veţi crea o nouă discuţie care va fi populată cu cele {{count}} postări selectate."
+ one: "Vei crea o nouă discuţie care va fi populată cu postarea selectată."
+ few: "Vei crea o nouă discuţie care va fi populată cu cele {{count}} postări selectate."
+ other: "Vei crea o nouă discuţie care va fi populată cu cele {{count}} de postări selectate."
merge_topic:
title: "Mută în discuție existentă"
action: "mută în discuție existentă"
@@ -1022,7 +1208,7 @@ ro:
instructions:
one: "Vă rugăm să alegeţi discuţia unde doriţi să mutaţi acest mesaj."
few: "Vă rugăm să alegeţi discuţia unde doriţi să mutaţi aceste {{count}} mesaje."
- other: "Vă rugăm să alegeţi discuţia unde doriţi să mutaţi aceste {{count}} mesaje."
+ other: "Vă rugăm să alegeţi discuţia unde doriţi să mutaţi aceste {{count}} de mesaje."
change_owner:
title: "Schimbă deținătorul postărilor"
action: "Schimbă apartenența"
@@ -1032,8 +1218,11 @@ ro:
instructions:
one: "Va rugăm să alegeţi noul propietar pentru mesajul postat de {{old_user}}."
few: "Va rugăm să alegeţi noul propietar pentru cele {{count}} mesajele postate de {{old_user}}."
- other: "Va rugăm să alegeţi noul propietar pentru cele {{count}} mesajele postate de {{old_user}}."
- instructions_warn: " aveți în vedere că nicio notificare ce privește această postare nu va fi transferabilă retroactiv către noul utilizator.
+
Avertisment: Acum, nicio informație ce depinde de postare nu va fi transferată noului utilizator. Folosiți cu grijă."
+ other: "Va rugăm să alegeţi noul propietar pentru cele {{count}} de mesajele postate de {{old_user}}."
+ instructions_warn: "NB: nicio notificare ce privește această postare nu va fi transferabilă retroactiv către noul utilizator.
Avertisment: Acum, nicio informație ce depinde de postare nu va fi transferată noului utilizator. Folosește cu atenție."
+ change_timestamp:
+ title: "Schimbă data publicării"
+ action: "schimbă data publicării"
multi_select:
select: 'selectează'
selected: 'selectate ({{count}})'
@@ -1043,10 +1232,12 @@ ro:
select_all: selectează tot
deselect_all: deselectează tot
description:
- one: Aţi selectat 1 mesaj.
- few: Aţi selectat {{count}} mesaje.
- other: Aţi selectat {{count}} mesaje.
+ one: Ai selectat un mesaj.
+ few: Ai selectat {{count}} mesaje.
+ other: Ai selectat {{count}} de mesaje.
post:
+ reply: " {{replyAvatar}} {{usernameLink}}"
+ reply_topic: " {{link}}"
quote_reply: "răspunde prin citat"
edit: "Editează {{link}} {{replyAvatar}} {{username}}"
edit_reason: "Motivul: "
@@ -1063,39 +1254,54 @@ ro:
other: "(postări retrase de autor, vor fi şterse automat în %{count} ore, cu excepţia cazului în care mesajele sunt marcate)"
expand_collapse: "expandează/restrânge"
gap:
- one: "vedeţi 1 răspuns ascuns"
- few: "vedeţi {{count}} răspunsuri ascunse"
- other: "vedeţi {{count}} răspunsuri ascunse"
+ one: "vezi un răspuns ascuns"
+ few: "vezi {{count}} răspunsuri ascunse"
+ other: "vezi {{count}} de răspunsuri ascunse"
more_links: "{{count}} mai multe..."
unread: "postarea nu a fost citită"
+ has_replies:
+ one: "Un răspuns"
+ few: "{{count}} răspunsuri"
+ other: "{{count}} de răspunsuri"
+ has_likes:
+ one: "O Apreciere"
+ few: "{{count}} Aprecieri"
+ other: "{{count}} de Aprecieri"
+ has_likes_title:
+ one: "O persoană a apreciat acest post."
+ few: "{{count}} persoane au apreciat acest post."
+ other: "{{count}} de persoane au apreciat acest post."
+ has_likes_title_only_you: "Ai apreciat acest post"
+ has_likes_title_you:
+ one: "Ai apreciat acest post împreună cu un alt utilizator."
+ few: "Ai apreciat acest post împreună cu alți {{count}} utilizatori."
+ other: "Ai apreciat acest post împreună cu alți {{count}} de utilizatori."
errors:
- create: "Ne pare rău , s-a semnalat o eroare în creerea postării dumneavoastră.Vă rugăm încercati iar."
- edit: "Ne pare rău , s-a semnalat o eroare în editarea postării dumneavoastră . Vă rugăm încercati iar."
- upload: "Ne pare rău ,s-a semnalat o eroare în încarcarea acelui fișier. Vă rugăm încercati iar."
+ create: "Ne pare rău, a apărut o eroare în creerea postării. Te rugăm să încerci iar."
+ edit: "Ne pare rău, a apărut o eroare în editarea postării. Te rugăm să încerci iar."
+ upload: "Ne pare rău, a apărut o eroare în încărcarea acelui fișier. Te rugăm să încerci iar."
attachment_too_large: "Ne pare rău, fișierul pe care-l încarcați este prea mare (marimea maximă este de {{max_size_kb}}kb)."
file_too_large: "Ne pare rău, fişierul pe care încercaţi să îl încărcaţi este prea mare (mărimea maximă este de {{max_size_kb}}kb)"
- too_many_uploads: "Ne pare rău, puteți încarca doar cate un fișier."
- too_many_dragged_and_dropped_files: "Ne pare rău, dar nu puteţi trage mai mult de 10 fişiere în acelaşi timp."
- upload_not_authorized: "Ne pare rău, fișierul pe care-l încarcați nu este autorizat (extensia pentru autorizare: {{authorized_extensions}})."
- image_upload_not_allowed_for_new_user: "Ne pare rău, noul utilizator nu poate încarca imagini."
- attachment_upload_not_allowed_for_new_user: "Ne pare rău, noul utilizator nu poate încarca atașamnete."
- attachment_download_requires_login: "Ne pare rău, dar trebuie să fiţi autentificat pentru a descarcă ataşamentele."
+ too_many_uploads: "Ne pare rău, poți încarca doar câte un fișier."
+ too_many_dragged_and_dropped_files: "Ne pare rău, dar nu poți trage mai mult de 10 fişiere în acelaşi timp."
+ upload_not_authorized: "Ne pare rău, fișierul pe care-l încarci nu este autorizat (extensia pentru autorizare: {{authorized_extensions}})."
+ image_upload_not_allowed_for_new_user: "Ne pare rău, un utilizator nou nu poate încarca imagini."
+ attachment_upload_not_allowed_for_new_user: "Ne pare rău, un utilizator nou nu poate încarca atașamnete."
+ attachment_download_requires_login: "Ne pare rău, dar trebuie să fii autentificat pentru a descarca ataşamente."
abandon:
- confirm: "Sunteți sigur că doriți să abandonați postarea?"
+ confirm: "Ești sigur că dorești să abandonezi postarea?"
no_value: "Nu, pastrează"
yes_value: "Da, abandonează"
via_email: "acest post a sosit via email"
- wiki:
- about: "Acest post este un wiki; oricine poate edita"
archetypes:
save: 'Opțiuni de salvare'
controls:
reply: "începe compunerea unui răspuns pentru această postare"
like: "apreciează acestă postăre"
- has_liked: "ai retras aprecierea acestei postări "
+ has_liked: "ai apreciat acest răspuns"
undo_like: "anuleazaă aprecierea"
edit: "editează această postare"
- edit_anonymous: "Ne pare rău, dar trebuie să fiţi autentificat pentru a edita."
+ edit_anonymous: "Ne pare rău, dar trebuie să fii autentificat pentru a edita acest post."
flag: "marchează privat această postare pentru atenție sau trimite o notificare privată despre aceasta"
delete: "șterge această postare"
undelete: "rescrie această postare"
@@ -1103,9 +1309,9 @@ ro:
more: "Mai mult"
delete_replies:
confirm:
- one: "Doriţi să ştergeţi răspunsul direct la acest mesaj?"
- few: "Doriţi să ştergeţi cele {{count}} răspunsuri directe la acest mesaj?"
- other: "Doriţi să ştergeţi cele {{count}} răspunsuri directe la acest mesaj?"
+ one: "Dorești să ștergi răspunsul direct la acest mesaj?"
+ few: "Dorești să ștergi cele {{count}} răspunsuri directe la acest mesaj?"
+ other: "Dorești să ștergi cele {{count}} de răspunsuri directe la acest mesaj?"
yes_value: "Da, șterge și răspunsurile"
no_value: "Nu, doar postarea"
admin: "acțiuni administrative de postare"
@@ -1122,13 +1328,13 @@ ro:
few: "Marcate pentru amânare."
other: "Marcate pentru amânare."
it_too:
- off_topic: "Și semnalează"
- spam: "Și semnalează"
- inappropriate: "Și semnalează"
- custom_flag: "Și semnalează"
- bookmark: "și marchează"
- like: "Și acordă-i apreciere "
- vote: "Și votează pentru"
+ off_topic: "Semnalează și tu"
+ spam: "Semnalează și tu"
+ inappropriate: "Semnalează și tu"
+ custom_flag: "Semnalează și tu"
+ bookmark: "Adaugă-l și tu la favorite"
+ like: "Apreciază și tu"
+ vote: "Votează și tu"
undo:
off_topic: "Retrage semnalare"
spam: "Retrage semnalare"
@@ -1137,21 +1343,13 @@ ro:
like: "Retrage apreciere"
vote: "Retrage vot"
people:
- off_topic: "{{icons}} Semnalază asta ca în afara discuției"
- spam: "{{icons}} Semnalează asta ca spam"
- spam_with_url: "{{icons}} semnalează ca spam"
- inappropriate: "{{icons}} Semnalează asta ca necorespunzator"
- notify_moderators: "{{icons}} moderatorii notificați"
- notify_moderators_with_url: "{{icons}} moderatori notificați"
- notify_user: "{{icons}} a trimis un mesaj"
- notify_user_with_url: "{{icons}} a trimis un mesaj"
- bookmark: "{{icons}} marchează asta"
- like: "{{icons}} apreciat"
- vote: "{{icons}} votat"
+ off_topic: "semnalat ca offtopic"
+ spam: "somnalat ca spam"
+ inappropriate: "semnalat ca nepotrivit"
by_you:
- off_topic: "Ați marcat ca fiind în afara discutiei"
+ off_topic: "Ați marcat ca fiind în afara discuției"
spam: "Ați marcat ca fiind spam"
- inappropriate: "Ați marcat ca necorespunzator"
+ inappropriate: "Ați marcat ca nepotrivit"
notify_moderators: "Ați marcat pentru a fi moderată"
notify_user: "Aţi trimis un mesaj către acest utilizator"
bookmark: "Ați marcat ca semn de carte această postare"
@@ -1161,72 +1359,68 @@ ro:
off_topic:
one: "Dvs. şi încă o persoană aţi marcat acest mesaj ca fiind în afară discuţiei."
few: "Dvs. şi alte {{count}} persoane aţi marcat acest mesaj ca fiind în afară discuţiei."
- other: "Dvs. şi alte {{count}} persoane aţi marcat acest mesaj ca fiind în afară discuţiei."
+ other: "Dvs. şi alte {{count}} de persoane aţi marcat acest mesaj ca fiind în afară discuţiei."
spam:
one: "Dvs. şi încă o persoană aţi marcat acest mesaj ca spam. "
few: "Dvs. şi alte {{count}} persoane aţi marcat acest mesaj ca spam. "
- other: "Dvs. şi alte {{count}} persoane aţi marcat acest mesaj ca spam. "
+ other: "Dvs. şi alte {{count}} de persoane aţi marcat acest mesaj ca spam. "
inappropriate:
one: "Dvs. şi încă o persoană aţi marcat acest mesaj ca inadecvat. "
few: "Dvs. şi alte {{count}} persoane aţi marcat acest mesaj ca inadecvat. "
- other: "Dvs. şi alte {{count}} persoane aţi marcat acest mesaj ca inadecvat. "
+ other: "Dvs. şi alte {{count}} de persoane aţi marcat acest mesaj ca inadecvat. "
notify_moderators:
one: "Dvs. şi încă o persoană aţi marcat acest mesaj pentru moderare."
few: "Dvs. şi alte {{count}} persoane aţi marcat acest mesaj pentru moderare."
- other: "Dvs. şi alte {{count}} persoane aţi marcat acest mesaj pentru moderare."
+ other: "Dvs. şi alte {{count}} de persoane aţi marcat acest mesaj pentru moderare."
notify_user:
one: "Dvs. şi încă o persoană aţi trimis un mesaj către acest utilizator."
few: "Dvs. şi alte {{count}} persoane aţi trimis un mesaj către acest utilizator."
- other: "Dvs. şi alte {{count}} persoane aţi trimis un mesaj către acest utilizator."
+ other: "Dvs. şi alte {{count}} de persoane aţi trimis un mesaj către acest utilizator."
bookmark:
one: "Dvs. şi încă o persoană aţi pus un semn de carte pentru această postare."
few: "Dvs. şi alte {{count}} persoane aţi pus un semn de carte pentru această postare."
- other: "Dvs. şi alte {{count}} persoane aţi pus un semn de carte pentru această postare."
+ other: "Dvs. şi alte {{count}} de persoane aţi pus un semn de carte pentru această postare."
like:
one: "Dvs. şi încă o persoană aţi apreciat aceasta."
few: "Dvs. şi alte {{count}} persoane aţi apreciat aceasta."
- other: "Dvs. şi alte {{count}} persoane aţi apreciat aceasta."
+ other: "Dvs. şi alte {{count}} de persoane aţi apreciat aceasta."
vote:
one: "Dvs. şi încă o persoană aţi votat pentru această postare."
few: "Dvs. şi alte {{count}} persoane aţi votat pentru această postare."
- other: "Dvs. şi alte {{count}} persoane aţi votat pentru această postare."
+ other: "Dvs. şi alte {{count}} de persoane aţi votat pentru această postare."
by_others:
off_topic:
- one: "1 persoană a marcat acesta ca fiind în afară discuţiei"
+ one: "O persoană a marcat acesta ca fiind în afară discuţiei"
few: "{{count}} persoane au marcat acesta ca fiind în afară discuţiei"
- other: "{{count}} persoane au marcat acesta ca fiind în afară discuţiei"
+ other: "{{count}} de persoane au marcat acesta ca fiind în afară discuţiei"
spam:
- one: "1 persoană a marcat acesta ca spam"
+ one: "O persoană a marcat acesta ca spam"
few: "{{count}} persoane au marcat acesta ca spam"
- other: "{{count}} persoane au marcat acesta ca spam"
+ other: "{{count}} de persoane au marcat acesta ca spam"
inappropriate:
one: "o persoană a marcat acesta ca inadecvat"
few: "{{count}} persoane au marcat acesta ca inadecvat"
- other: "{{count}} persoane au marcat acesta ca inadecvat"
+ other: "{{count}} de persoane au marcat acesta ca inadecvat"
notify_moderators:
- one: "o persoană a marcat acest mesaj pentru moderare"
+ one: "O persoană a marcat acest mesaj pentru moderare"
few: "{{count}} persoane au marcat acest mesaj pentru moderare"
other: "{{count}} persoane au marcat acest mesaj pentru moderare"
notify_user:
one: "o persoană a trimis un mesaj către acest utilizator"
- few: "{{count}} au trimis un mesaj către acest utilizator"
- other: "{{count}} au trimis un mesaj către acest utilizator"
+ few: "{{count}} persoane au trimis un mesaj către acest utilizator"
+ other: "{{count}} de persoane au trimis un mesaj către acest utilizator"
bookmark:
- one: "o persoană a pus un semn de carte la acest mesaj"
+ one: "O persoană a pus un semn de carte la acest mesaj"
few: "{{count}} persoane au pus un semn de carte la acest mesaj"
- other: "{{count}} persoane au pus un semn de carte la acest mesaj"
+ other: "{{count}} de persoane au pus un semn de carte la acest mesaj"
like:
one: "o persoană a apreciat aceasta"
few: "{{count}} persoane au apreciat aceasta"
- other: "{{count}} persoane au apreciat aceasta"
+ other: "{{count}} de persoane au apreciat aceasta"
vote:
- one: "o persoană a votat pentru acest mesaj"
+ one: "O persoană a votat pentru acest mesaj"
few: "{{count}} persoane au votat pentru acest mesaj"
- other: "{{count}} persoane au votat pentru acest mesaj"
- edits:
- one: o editare
- other: "{{count}} editari"
- zero: nicio editare
+ other: "{{count}} de persoane au votat pentru acest mesaj"
delete:
confirm:
one: "Sunteți sigur că vreți să ștergeți acest mesaj?"
@@ -1254,6 +1448,7 @@ ro:
category:
can: 'can… '
none: '(nicio categorie)'
+ all: 'Toate categoriile'
choose: 'Selectează o categorie…'
edit: 'editează'
edit_long: "Editează"
@@ -1261,7 +1456,7 @@ ro:
general: 'General'
settings: 'Setări'
delete: 'Șterge categorie'
- create: 'Crează categorie'
+ create: 'Creează categorie'
save: 'Salvează categorie'
slug: 'Slug Categorie'
slug_placeholder: '(Opțional) cuvinte-punctate pentru url'
@@ -1307,12 +1502,11 @@ ro:
title: "Urmărire"
regular:
title: "Normal"
+ description: "Veți fi notificat dacă cineva vă menționează @numele sau vă scrie un reply."
muted:
title: "Silențios"
- description: "Nu veți fi niotificat de discuțiile noi din aceste categorii, ele nu vor apărea în tabul necitite."
flagging:
title: 'De ce marcați această postare ca fiind privată?'
- private_reminder: 'steagurile sunt private, vizibile numai b> personalului'
action: 'Marcare'
take_action: "Actionează"
notify_action: 'Mesaj'
@@ -1360,10 +1554,9 @@ ro:
title: "Desprinde"
help: "Această discuţie va fi afişată în ordinea iniţială, nici un mesaj nu este promovat la inceputul listei."
pinned_globally:
- title: "Fixată Global"
- help: "Această discuție a fost fixată global; va fi afișată în capătul tuturor listelor"
+ title: "Promovat Global"
pinned:
- title: "Fixată"
+ title: "Promovat"
help: "Aceast mesaj va fi promovat. Va fi afişat la începutul discuţiei."
invisible:
help: "Această discuție este invizibilă; nu va fi afișată în listele de discuții și va fi accesată numai prin adresa directă"
@@ -1384,7 +1577,7 @@ ro:
one: "apreciere"
few: "aprecieri"
other: "aprecieri"
- likes_long: "sunt {{number}} de aprecieri în această discuție"
+ likes_long: "sunt {{number}} aprecieri în această discuție"
users: "Utilizatori"
users_lowercase:
one: "utilizator"
@@ -1401,6 +1594,7 @@ ro:
with_topics: "%{filter} Discuții"
with_category: "%{filter} %{category} discuții"
latest:
+ title: "Ultimele"
help: "Discuții cu postări recente"
hot:
title: "Interesant"
@@ -1416,23 +1610,19 @@ ro:
title_in: "Categoria - {{categoryName}}"
help: "toate discuțiile grupate pe categorii"
unread:
- title:
- zero: "Necitite"
- one: "(1) necitită"
- other: "({{count}}) necitite"
+ title: "Necitite"
+ title_with_count:
+ one: "Necitit (1)"
+ few: "Necitite ({{count}})"
+ other: "Necitite ({{count}})"
help: "discuțiile pe care le vizualizați sau urmariți momentan ce includ postări necitite"
- lower_title_with_count:
- one: "1 necitită"
- other: "{{count}} necitite"
new:
- lower_title_with_count:
- one: "o nouă"
- other: "{{count}} noi"
- lower_title: "noi"
- title:
- zero: "Noi"
- one: "o nouă"
- other: "({{count}}) noi"
+ lower_title: "nou"
+ title: "Noi"
+ title_with_count:
+ one: "Nou (1)"
+ few: "Noi ({{count}})"
+ other: "Noi ({{count}})"
help: "discuții create în ultimele zile"
posted:
title: "Postările mele"
@@ -1441,10 +1631,6 @@ ro:
title: "Semne de carte"
help: "discuții cu semne de carte"
category:
- title:
- zero: "{{categoryName}}"
- one: "{{categoryName}} (1)"
- other: "{{categoryName}} ({{count}})"
help: "discuțiile recente din categoria {{categoryName}}"
top:
title: "Top"
@@ -1453,6 +1639,8 @@ ro:
title: "Dintotdeauna"
yearly:
title: "Anual"
+ quarterly:
+ title: "Trimestrial"
monthly:
title: "Lunar"
weekly:
@@ -1460,10 +1648,15 @@ ro:
daily:
title: "Zilnic"
all_time: "Dintotdeauna"
+ this_year: "An"
+ this_quarter: "Trimestru"
+ this_month: "Lună"
+ this_week: "Săptămană"
today: "Astăzi"
+ other_periods: "vezi topul"
browser_update: 'Din nefericire, browserul dumneavoastră este prea vechi pentru a funcționa pe acest forum . Va rugăm reânoiți browserul.'
permission_types:
- full: "Crează / Răspunde / Vizualizează"
+ full: "Creează / Răspunde / Vizualizează"
create_post: "Răspunde / Vizualizaează"
readonly: "Vizualizaează"
admin_js:
@@ -1494,9 +1687,10 @@ ro:
suspended: 'Suspendați:'
private_messages_short: "Msgs"
private_messages_title: "Mesaje"
+ mobile_title: "Mobil"
space_free: "{{size}} liber"
uploads: "încărcări"
- backups: "salvări"
+ backups: "backups"
traffic_short: "trafic"
traffic: "Cereri web"
page_views: "Cereri API"
@@ -1516,6 +1710,7 @@ ro:
refresh_report: "Reactualizează Raportul"
start_date: "Data de început "
end_date: "Data de sfârşit"
+ groups: "Toate grupurile"
commits:
latest_changes: "Ultimele schimbări: Vă rugăm reactualizați des!"
by: "de către"
@@ -1601,15 +1796,23 @@ ro:
delete_confirm: "Șterg acest grup?"
delete_failed: "Imposibil de șters grupul. Dacă este unul automat, nu se poate șterge."
delete_member_confirm: "Şterge '%{username}' din grupul '%{group}'?"
+ delete_owner_confirm: "Revocă dreptul de proprietar pentru '%{username}'?"
name: "Nume"
add: "Adaugă"
add_members: "Adaugă membri"
custom: "Personalizat"
+ bulk_complete: "Utilizatorii au fost adăugați în grup."
+ bulk: "Adaugă în grup la grămadă"
+ bulk_paste: "Lipiți o listă de utilizatori sau email-uri, unul pe linie:"
+ bulk_select: "(selectați un grup)"
automatic: "Automat"
automatic_membership_email_domains: "Utilizatorii care se înregistrează cu un domeniu de email care se potriveşte cu unul din lista va fi adăugat automat în aces grup:"
automatic_membership_retroactive: "Aplicaţi aceeaşi regulă pentru domeniul de email pentru a adaugă utilizatorii existenţi"
default_title: "Titlu automat pentru toţi utilizatorii din acest grup"
primary_group: "Setează automat că grup primar"
+ group_owners: Proprietari
+ add_owners: Adaugă proprietari
+ incoming_email_placeholder: "introduceți adresa de email"
api:
generate_master: "Generează cheie API principală"
none: "Nu sunt chei API principale active deocamdată."
@@ -1630,12 +1833,16 @@ ro:
name: "Nume"
none_installed: "Nu aveţi nici un plugin instalat."
version: "Versiune"
+ enabled: "Activat?"
+ is_enabled: "D"
+ not_enabled: "N"
change_settings: "Schimbă Setările"
+ change_settings_short: "Setări"
howto: "Cum instalez un plugin?"
backups:
- title: "Rezervare"
+ title: "Backups"
menu:
- backups: "Rezerve"
+ backups: "Backups"
logs: "Rapoarte"
none: "Nicio rezervare valabilă."
read_only:
@@ -1647,7 +1854,7 @@ ro:
title: "Dezactivearea modului doar-citire"
label: "Dezactivează modul doar-citire"
logs:
- none: "Nu exista rapoarte..."
+ none: "Nu există rapoarte..."
columns:
filename: "Numele fișierului"
size: "Mărime"
@@ -1663,7 +1870,7 @@ ro:
cancel:
label: "Anulează"
title: "Anulează operația curentă"
- confirm: "Sunteți sigur că doriți să anulati operația curentă?"
+ confirm: "Sunteți sigur că doriți să anulați operația curentă?"
backup:
label: "Salvare de siguranţă"
title: "Creați o rezervă"
@@ -1679,11 +1886,9 @@ ro:
is_disabled: "Restabilirea este dezactivată din setările siteului."
label: "Restaurează"
title: "Restabilește rezervă"
- confirm: "Sunteți sigur că doriți restabilirea acestei rezerve?"
rollback:
label: "Revenire la situaţia anterioară"
title: "Restabilește baza de date în stadiul anterior"
- confirm: "Sunteți sigur că doriți restabilirea bazei de date în stadul precedent?"
export_csv:
user_archive_confirm: "Sunteţi sigur că doriţi să descărcaţi mesajele dvs.?"
success: "Exportul a fost iniţiat. Veţi primi un mesaj de notificare când procesul se va termina."
@@ -1696,6 +1901,8 @@ ro:
screened_email: "Exportă lista totală a adreselor de email verificate în format CSV."
screened_ip: "Exportă lista totală a adreselor de IP verificate în format CSV."
screened_url: "Exportă lista totală a adreselor URL verificate în format CSV."
+ export_json:
+ button_text: "Exportă"
invite:
button_text: "Trimite o invitație"
button_title: "Trimite o invitație"
@@ -1706,6 +1913,7 @@ ro:
header: "Titlu"
top: "Top"
footer: "Subsol"
+ embedded_css: "Embedded CSS"
head_tag:
text: ""
title: "HTML care va fi inserat înaintea de tag-ul "
@@ -1723,12 +1931,22 @@ ro:
save: "Salvează"
new: "Nou"
new_style: "Stil nou"
+ import: "Importă"
+ import_title: "Selectați un fișier sau lipiți un text"
delete: "Șterge"
delete_confirm: "Șterge aceste preferințe?"
about: "Modifică foaia de stil CSS și capetele HTML Modify CSS din site. Adaugă o preferința pentru a începe."
color: "Culoare"
opacity: "Opacitate"
copy: "Copiază"
+ email_templates:
+ title: "Sabloane"
+ subject: "Subiect"
+ multiple_subjects: "Acest șablon are mai multe subiecte"
+ body: "Body"
+ none_selected: "Selectați un șablon pentru a începe editarea"
+ revert: "Revocați schimbările"
+ revert_confirm: "Ești sigur că vreți să revocați schimbările?"
css_html:
title: "CSS/HTML"
long_title: "Customizarile CSS and HTML"
@@ -1773,18 +1991,18 @@ ro:
love:
name: 'Iubire'
description: "Culoarea butonului de apreciere."
- wiki:
- name: 'wiki'
- description: "Culoarea de bază folosită pentru fundalul postărilor pe wiki."
email:
- title: "Email"
+ title: "Emails"
settings: "Opțiuni"
- all: "Toate"
+ templates: "Șabloane"
+ preview_digest: "Previzualizează rezumat"
sending_test: "Trimite email de test..."
error: "EROARE - %{server_error}"
test_error: "S-a semnalat o problemă la trimtirerea email-ului. Vă rugăm verificați setările mailului, Verificați ca gazda sa nu bocheze conexiunile de email și reâncercați."
sent: "Trimise"
skipped: "Omise"
+ received: "Primite"
+ rejected: "Respinse"
sent_at: "Trimise la"
time: "Timp"
user: "Utilizator"
@@ -1794,7 +2012,6 @@ ro:
send_test: "Trimite Email de test"
sent_test: "trimis!"
delivery_method: "Metoda de livrare"
- preview_digest: "Previzualizează rezumat"
refresh: "Reîmprospătează"
format: "Format"
html: "html"
@@ -1802,6 +2019,18 @@ ro:
last_seen_user: "Ultimul utilizator văzut:"
reply_key: "Cheie de răspuns"
skipped_reason: "Motiv omiterii"
+ incoming_emails:
+ from_address: "De la"
+ to_addresses: "Către"
+ cc_addresses: "Cc"
+ subject: "Subiect"
+ error: "Eroare"
+ filters:
+ from_placeholder: "from@example.com"
+ to_placeholder: "to@example.com"
+ cc_placeholder: "cc@example.com"
+ subject_placeholder: "Subiect..."
+ error_placeholder: "Eroare"
logs:
none: "Nu s-au găsit rapoarte."
filters:
@@ -1820,6 +2049,7 @@ ro:
ip_address: "Adresa IP"
topic_id: "ID Discuție"
post_id: "ID Mesaj"
+ category_id: "ID categorie"
delete: 'Șterge'
edit: 'Editează'
save: 'Salvează'
@@ -1850,6 +2080,7 @@ ro:
change_site_setting: "schimbă setările site-ului"
change_site_customization: "schimbă preferințele site-ului"
delete_site_customization: "șterge preferințele site-ului"
+ change_site_text: "schimbă textul site-ului"
suspend_user: "suspendă utilizator"
unsuspend_user: "reactivează utilizator"
grant_badge: "acordă insignă"
@@ -1859,6 +2090,15 @@ ro:
delete_post: "şterge mesajul"
impersonate: "joacă rolul"
anonymize_user: "fă userul anonim"
+ change_category_settings: "schimbă setările categoriei"
+ delete_category: "șterge categorie"
+ create_category: "creează categorie"
+ block_user: "blochează utilizator"
+ unblock_user: "deblochează utilizator"
+ grant_admin: "Acordă titlul de Admin"
+ revoke_admin: "Revocă titlul de Admin"
+ grant_moderation: "Acordă titlul de Moderator"
+ revoke_moderation: "Revocă titlul de Moderator"
screened_emails:
title: "Email-uri filtrate"
description: "Când cineva încearcă să creeze un nou cont, următorul email va fi verificat iar înregistrarea va fi blocată, sau o altă acțiune va fi inițiată."
@@ -1923,9 +2163,9 @@ ro:
pending: 'Utilizatori în așteptare de previzualizare'
newuser: 'Utilizatori la nielul de încredere 0 (utilizator nou)'
basic: 'Utilizatori la nivel de încredere 1 (utilizator de baza)'
- regular: 'Utilizatori la nivel de încredere 2 (Utilizator normal)'
- leader: 'Utilizatori la nivel de încredere 3 (Lider)'
- elder: 'Utilizatori la nivel de încredere 4 (Batran)'
+ member: 'Utilizatori la nivel de încredere 2 (Membri)'
+ regular: 'Utilizatori la nivel de încredere 3 (Utilizator activ)'
+ leader: 'Utilizatori la nivel de încredere 4 (Lider)'
staff: "Personalul"
admins: 'Utilizatori admin'
moderators: 'Moderatori'
@@ -2027,9 +2267,10 @@ ro:
deactivate_failed: "S-a semnalat o problemă la dezactivarea utilizatoprului."
unblock_failed: 'S-a semnalat o problemă la deblocarea utlizatorului.'
block_failed: 'S-a semnalat o problemă la blocarea utilizatorului.'
- deactivate_explanation: "Un utilizator dezactivat va trebuii sa-și reactvieze emailul."
+ block_accept: 'Blochează utilizatorul'
+ deactivate_explanation: "Un utilizator dezactivat va trebui să-și revalideze email-ul."
suspended_explanation: "Un utilizator suspendat nu se poate autentifica"
- block_explanation: "Un utilizator blocat nu poate posta sau pornii o discuție."
+ block_explanation: "Un utilizator blocat nu poate posta sau porni o discuție."
trust_level_change_failed: "S-a semnalat o problemă la schimbarea nivelului de încredere al utilizatorului."
suspend_modal_title: "Suspendă utilizator"
trust_level_2_users: "utilizatori de nivel de încredere 2 "
@@ -2040,7 +2281,6 @@ ro:
unlock_trust_level: "Deblochează Nivelul de Încredere"
tl3_requirements:
title: "Cerințe pentru nivelul 3 de încredere"
- table_title: "În ultimele 100 de zile:"
value_heading: "Valoarea"
requirement_heading: "Cerințe"
visits: "Vizite"
@@ -2073,7 +2313,7 @@ ro:
user_fields:
title: "Câmpuri utilizator"
help: "Adăugaţi câmpuri pe care utilizatorii le pot completa."
- create: "Crează un câmp utilizator"
+ create: "Creează un câmp utilizator"
untitled: "Fără titlu"
name: "Nume câmp"
type: "Tip câmp"
@@ -2083,6 +2323,7 @@ ro:
delete: "Șterge"
cancel: "Anulează"
delete_confirm: "Sunteți sigur că stergeți acest câmp utilizator?"
+ options: "Optiuni"
required:
title: "Necesar la înscriere?"
enabled: "necesar"
@@ -2098,9 +2339,14 @@ ro:
field_types:
text: 'Câmp Text'
confirm: 'Confirmare'
+ dropdown: "Select"
site_text:
- none: "Alege un tip de conținut pentru editare."
title: 'Conținut'
+ edit: 'editează'
+ revert: "Revocați schimbările"
+ revert_confirm: "Ești sigur că vreți să revocați schimbările?"
+ go_back: "Înapoi la căutare"
+ show_overriden: 'Arată doar rescrierile'
site_settings:
show_overriden: 'Arată doar rescrierile'
title: 'Setări'
@@ -2130,6 +2376,7 @@ ro:
backups: "Rezervări"
login: "Autentificare"
plugins: "Plugin-uri"
+ user_preferences: "Preferințe"
badges:
title: Insigne
new_badge: Insignă nouă
@@ -2174,7 +2421,7 @@ ro:
trigger_type:
none: "reinprospatează zilnic"
post_action: "Când un utilizator reacționează la un mesaj"
- post_revision: "Când un utlizator crează sau editează un mesaj"
+ post_revision: "Când un utlizator creează sau editează un mesaj"
trust_level_change: "Când un utilizator schimbă nivelul de încredere"
user_change: "Când un utilizator este editat sau creat"
preview:
@@ -2185,10 +2432,6 @@ ro:
error_help: "Vezi legăturile următoare pentru ajutor referitor la interogări pentru insigne."
bad_count_warning:
header: "ATENȚIE!"
- grant_count:
- zero: "Nu sunt insigne care pot fi asignate."
- one: "1 insignă de alocat."
- other: "%{count} insigne de alocat."
sample: "Specimen:"
grant:
with: %{username}
@@ -2202,6 +2445,33 @@ ro:
name: "Nume"
image: "Imagine"
delete_confirm: "Sunteţi sigur că doriţi să ștergeți :%{name}: emoji?"
+ embedding:
+ confirm_delete: "Sunteți sigur că vreți să ștergeți acest host?"
+ sample: "Folosiți următorul cod HTML în site-ul dvs. pentru a crea și pentru a embed-ui topic-uri discourse. Înlocuiți REPLACE_ME cu URL-ul canonic al paginii pe care doriți să o embed-uiți."
+ title: "Embedding"
+ host: "Host-uri permise"
+ edit: "editează"
+ category: "Postează în categoria"
+ add_host: "Adaugă host"
+ settings: "Setări pentru embeding"
+ feed_settings: "Setări Feed"
+ embed_post_limit: "Numărul maxim de postări de încorporat."
+ save: "Salvați setările pentru embeding"
+ permalink:
+ title: "Link-uri"
+ url: "URL"
+ topic_id: "ID discuție"
+ topic_title: "Discuție"
+ post_id: "ID postare"
+ post_title: "Postare"
+ category_id: "ID categorie"
+ category_title: "Categorie"
+ external_url: "URL extern"
+ delete_confirm: Sigur doriți să ștergeți acest link ?
+ form:
+ label: "Nou:"
+ add: "Adăugați"
+ filter: "Căutare (URL sau URL extern)"
lightbox:
download: "descarcă"
search_help:
@@ -2217,6 +2487,7 @@ ro:
categories: 'g apoi c Categorii'
top: 'g, t Top'
bookmarks: 'g, b Semne de carte'
+ messages: 'g, m Mesaje'
navigation:
title: 'Navigare'
jump: '# Mergi la mesajul #'
@@ -2226,37 +2497,37 @@ ro:
next_prev: '`/~ selecția Urmatoare/Precedentă'
application:
title: 'Applicația'
- create: 'c Crează discuție nouă'
+ create: 'c Creează discuție nouă'
notifications: 'n Deschide notificare'
+ hamburger_menu: '= Deschide meniul hamburger'
user_profile_menu: 'p Deschide meniu utilizator'
show_incoming_updated_topics: '. Arată discuţiile actualizate'
search: '/ Caută'
- help: '? Deschide ajutorul de scurtături de tastatură'
- dismiss_new_posts: 'x, r Respinge Nou/Mesaj'
- dismiss_topics: 'x, t Respinge Discuţia'
+ help: '? Vezi comenzi rapide disponibile'
+ dismiss_new_posts: 'x, r Respinge Nou/Mesaje'
+ dismiss_topics: 'x, t Respinge discuţiile'
+ log_out: 'shift+z shift+z Ieșire din cont'
actions:
title: 'Acțiuni'
bookmark_topic: 'f Comută semnul de carte pentru discuţie'
- pin_unpin_topic: 'shift+p Pin/Unpin topic'
+ pin_unpin_topic: 'shift+p Promovează discuția'
share_topic: 'shift s distribuie discuție'
share_post: 's Distribuie mesajul'
- reply_as_new_topic: 't Răspunde că discuţie legată'
+ reply_as_new_topic: 't Răspunde că discuţie conexă'
reply_topic: 'shift r Raspunde la discuție'
reply_post: 'r Răspunde la postare'
quote_post: 'q Citează mesajul'
like: 'l Apreciează mesajul'
- flag: '! Marchează mesajul'
- bookmark: 'b Marchează cu semn de carte postarea'
+ flag: '! Reclamă mesajul'
+ bookmark: 'b Salvează postarea'
edit: 'e Editează mesaj'
delete: 'd Șterge mesaj'
- mark_muted: 'm apoi m Marchează discuția ca silențios'
- mark_regular: 'm apoi r Marchează discuția ca normală'
- mark_tracking: 'm apoi t Marchează discuția ca urmărită'
- mark_watching: 'm apoi w Marchează discuția ca privită'
+ mark_muted: 'm apoi m Treceți discuția în mod silențios'
+ mark_regular: 'm, r Discuție normală (implicită)'
+ mark_tracking: 'm, t Urmăriți discuția'
+ mark_watching: 'm, w Urmăriți discuția îndeaproape'
badges:
title: Insigne
- allow_title: "poate fi folosit ca titlu"
- multiple_grant: "pot fi acordate de mai multe ori"
badge_count:
one: "1 Insignă"
few: "%{count} Insigne"
@@ -2273,7 +2544,7 @@ ro:
none: "Căutați cu Google
+
diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index 902f5de2b23..eca8a712e58 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -25,8 +25,8 @@ ru: mb: МБ tb: ТБ short: - thousands: "{{number}} тыс." - millions: "{{number}} млн" + thousands: "{{number}} тыс." + millions: "{{number}} млн." dates: time: "HH:mm" long_no_year: "D MMM HH:mm" @@ -138,6 +138,8 @@ ru: few: "%{count} года спустя" many: "%{count} лет спустя" other: "%{count} лет спустя" + previous_month: 'Предыдущий Месяц' + next_month: 'Следующий Месяц' share: topic: 'Поделиться ссылкой на эту тему' post: 'Ссылка на сообщение №%{postNumber}' @@ -146,8 +148,43 @@ ru: facebook: 'Поделиться ссылкой через Facebook' google+: 'Поделиться ссылкой через Google+' email: 'Поделиться ссылкой по электронной почте' + action_codes: + split_topic: "Разделил эту тему %{when}" + invited_user: "Пригласил %{who} %{when}" + removed_user: "Исключил %{who} %{when}" + autoclosed: + enabled: 'Закрыл тему %{when}' + disabled: 'Открыл тему %{when}' + closed: + enabled: 'Закрыл тему %{when}' + disabled: 'Открыл тему %{when}' + archived: + enabled: 'Заархивировал тему %{when}' + disabled: 'Разархивировал тему %{when}' + pinned: + enabled: 'Закрепил тему %{when}' + disabled: 'Открепил тему %{when}' + pinned_globally: + enabled: 'Закрепил тему глобально %{when}' + disabled: 'Открепил тему глобально %{when}' + visible: + enabled: 'Включил в списки %{when}' + disabled: 'Исключил из списков %{when}' topic_admin_menu: "действия администратора над темой" emails_are_disabled: "Все исходящие письма были глобально отключены администратором. Уведомления любого вида не будут отправляться на почту." + s3: + regions: + us_east_1: "US East (N. Virginia)" + us_west_1: "US West (N. California)" + us_west_2: "US West (Oregon)" + us_gov_west_1: "AWS GovCloud (US)" + eu_west_1: "EU (Ireland)" + eu_central_1: "EU (Frankfurt)" + ap_southeast_1: "Asia Pacific (Singapore)" + ap_southeast_2: "Asia Pacific (Sydney)" + ap_northeast_1: "Asia Pacific (Tokyo)" + ap_northeast_2: "Asia Pacific (Seoul)" + sa_east_1: "South America (Sao Paulo)" edit: 'отредактировать название и раздел темы' not_implemented: "Извините, эта функция еще не реализована!" no_value: "Нет" @@ -161,6 +198,7 @@ ru: admin_title: "Админка" flags_title: "Жалобы" show_more: "показать дальше" + show_help: "Cправка" links: "Ссылки" links_lowercase: one: "ссылка" @@ -180,6 +218,8 @@ ru: more: "Больше" less: "Меньше" never: "никогда" + every_30_minutes: "каждые 30 минут" + every_hour: "каждый час" daily: "ежедневно" weekly: "еженедельно" every_two_weeks: "каждые две недели" @@ -193,6 +233,7 @@ ru: other: "{{count}} букв" suggested_topics: title: "Похожие темы" + pm_title: "Похожие Сообщения" about: simple_title: "Информация" title: "Информация про %{title}" @@ -246,6 +287,7 @@ ru: saved: "Сохранено!" upload: "Загрузить" uploading: "Загрузка..." + uploading_filename: "Загрузка файла {{filename}}..." uploaded: "Загружено!" enable: "Включить" disable: "Отключить" @@ -253,6 +295,7 @@ ru: revert: "Вернуть" failed: "Проблема" switch_to_anon: "Анонимный режим" + switch_from_anon: "Выйти из анонимного режима" banner: close: "Больше не показывать это объявление." edit: "Редактировать это объявление >>" @@ -277,7 +320,7 @@ ru: many: "В этой теме {{count}} сообщений, ожидающих проверки" other: "В этой теме {{count}} сообщений, ожидающих проверки" confirm: "Сохранить" - delete_prompt: "Вы уверены, что хотите удалить пользователя %{username}? Это приведет к удалению всех его сообщений, а также заблокирует email и ip адрес." + delete_prompt: "Вы уверены, что хотите удалить %{username}? Это также удалит все его сообщения и заблокирует его email и IP-адрес." approval: title: "Сообщения для проверки" description: "Ваше сообщение отправлено, но требует проверки и утверждения модератором. Пожалуйста, будьте терпеливы." @@ -324,6 +367,9 @@ ru: many: "%{count} пользователей" other: "%{count} пользователей" groups: + add: "Добавить" + selector_placeholder: "Добавить участников" + owner: "владелец" visible: "Группа видима всем пользователям" title: one: "группа" @@ -331,14 +377,23 @@ ru: many: "групп" other: "групп" members: "Участники" + topics: "Темы" posts: "Сообщения" + messages: "Сообщения" alias_levels: - title: "Кто может использовать данную группу как псевдоним?" nobody: "Никто" only_admins: "Только администраторы" mods_and_admins: "Только модераторы и администраторы" members_mods_and_admins: "Только члены группы, модераторы и администраторы" everyone: "Все" + trust_levels: + title: "Уровень доверия участника при создании:" + none: "(Нет)" + notifications: + watching: + title: "Отслеживание" + tracking: + title: "Следить" user_action_groups: '1': "Выразил симпатий" '2': "Получил симпатий" @@ -348,7 +403,6 @@ ru: '6': "Ответы" '7': "Упоминания" '9': "Цитаты" - '10': "Избранное" '11': "Изменения" '12': "Отправленные" '13': "Входящие" @@ -358,6 +412,15 @@ ru: all_subcategories: "Все подкатегории" no_subcategory: "Вне подкатегорий" category: "Раздел" + category_list: "Показать список разделов" + reorder: + title: "Упорядочивание разделов" + title_long: "Реорганизация списка разделов" + fix_order: "Зафиксировать порядковые номера" + fix_order_tooltip: "Не всем разделам назначен уникальный порядковый номер. Это может привести к непредсказуемому порядку разделов." + save: "Сохранить порядок" + apply_all: "Применить" + position: "Порядковый номер" posts: "Сообщения" topics: "Темы" latest: "Последние" @@ -391,6 +454,8 @@ ru: topics_entered: "посещено тем" post_count: "сообщений" confirm_delete_other_accounts: "Вы уверены, что хотите удалить эти учетные записи?" + user_fields: + none: "(выберите)" user: said: "{{username}}:" profile: "Профиль" @@ -402,11 +467,21 @@ ru: private_messages: "Личные сообщения" activity_stream: "Активность" preferences: "Настройки" + expand_profile: "Развернуть" bookmarks: "Закладки" bio: "Обо мне" - invited_by: "Приглашен пользователем" - trust_level: "Уровень доверия" + invited_by: "Пригласил" + trust_level: "Уровень" notifications: "Уведомления" + statistics: "Статистика" + desktop_notifications: + label: "Оповещения" + not_supported: "К сожалению, оповещения не поддерживаются этим браузером." + perm_default: "Включить оповещения" + perm_denied_btn: "Отказано в разрешении" + disable: "Отключить оповещения" + enable: "Включить оповещения" + each_browser_note: "Примечание: эта настройка устанавливается в каждом браузере индивидуально." dismiss_notifications: "Пометить все прочитанными" dismiss_notifications_tooltip: "Пометить все непрочитанные уведомления прочитанными" disable_jump_reply: "Не переходить к вашему новому сообщению после ответа" @@ -419,6 +494,7 @@ ru: admin: "{{user}} - админ" moderator_tooltip: "{{user}} - модератор" admin_tooltip: "{{user}} - админ" + blocked_tooltip: "Этот пользователь заблокирован" suspended_notice: "Пользователь заморожен до {{date}}." suspended_reason: "Причина:" github_profile: "Github" @@ -428,7 +504,7 @@ ru: tracked_categories: "Отслеживаемые разделы" tracked_categories_instructions: "Автоматически следить за всеми новыми темами из следующих разделов. Счетчик новых и непрочитанных сообщений будет появляться рядом с названием темы." muted_categories: "Выключенные разделы" - muted_categories_instructions: "Вы не будете получать уведомления о новых темах в этих разделах. Также, они не будут показываться во вкладке Непрочитанное." + muted_categories_instructions: "Не уведомлять меня о новых темах в этих разделах и не показывать новые темы на странице «Непрочитанные»." delete_account: "Удалить мою учётную запись" delete_account_confirm: "Вы уверены, что хотите удалить свою учётную запись? Отменить удаление будет невозможно!" deleted_yourself: "Ваша учётная запись была успешно удалена." @@ -438,6 +514,7 @@ ru: users: "Пользователи" muted_users: "Выключено" muted_users_instructions: "Не отображать уведомления от этих пользователей." + muted_topics_link: "Показать темы \"Без уведомлений\"" staff_counters: flags_given: "полезные жалобы" flagged_posts: "сообщения с жалобами" @@ -446,8 +523,15 @@ ru: warnings_received: "предупреждения" messages: all: "Все" - mine: "Мои" - unread: "Непрочитанные" + inbox: "Входящие" + sent: "Отправленные" + archive: "Архив" + groups: "Мои группы" + bulk_select: "Выберите сообщения" + move_to_inbox: "Переместить во входящие" + move_to_archive: "Архив" + failed_to_move: "Невозможно переместить выделенные сообщения (возможно, у вас проблемы с Интернетом)" + select_all: "Выбрать все" change_password: success: "(письмо отправлено)" in_progress: "(отправка письма)" @@ -479,6 +563,7 @@ ru: upload_title: "Загрузка собственного аватара" upload_picture: "Загрузить изображение" image_is_not_a_square: "Внимание: мы обрезали ваше изображение; ширина и высота не равны друг другу." + cache_notice: "Вы изменили аватар. Аватар поменяется через некоторое время из-за кеширования браузера." change_profile_background: title: "Фон профиля" instructions: "Картинки фона профилей будут отцентрированы и по-умолчанию имеют ширину 850 пикселей." @@ -492,9 +577,10 @@ ru: invalid: "Введите действующий адрес электронной почты" authenticated: "Ваш адрес электронной почты подтвержден {{provider}}" frequency: - zero: "Получать уведомления о новых непрочитанных сообщениях незамедлительно." - one: "Мы отправим вам письмо только если не видели вас онлайн в последние несколько минут." - other: "Мы отправим вам письмо только если вы не были в онлайне последние {{count}} мин." + one: "Мы отправим вам письмо только в том случае, если вы более минуты находитесь оффлайн." + few: "Мы отправим вам письмо только в том случае, если вы не были онлайн последние {{count}} минуты." + many: "Мы отправим вам письмо только в том случае, если вы не были онлайн последние {{count}} минут." + other: "Мы отправим вам письмо только в том случае, если вы не были онлайн последние {{count}} минyт." name: title: "Имя" instructions: "Ваше полное имя (опционально)" @@ -530,48 +616,78 @@ ru: title: "Иконка карточки пользователя" website: "Веб-сайт" email_settings: "E-mail" + like_notification_frequency: + always: "Всегда" + never: "Никогда" + email_previous_replies: + always: "всегда" + never: "никогда" email_digests: - title: "В случае моего отсутствия на форуме присылайте мне сводку новостей по почте:" + title: "В случае моего отсутствия на сайте присылайте мне сводку новостей по почте:" + every_30_minutes: "каждые 30 минут" + every_hour: "каждый час" daily: "ежедневно" every_three_days: "каждые 3 дня" weekly: "еженедельно" every_two_weeks: "каждые 2 недели" email_direct: "Присылать почтовое уведомление, когда кто-то цитирует меня, отвечает на мой пост, упоминает мой @псевдоним или приглашает меня в тему" email_private_messages: "Присылать почтовое уведомление, когда кто-то оставляет мне сообщение" + email_always: "Присылать почтовое уведомление, даже если я присутствую на сайте" other_settings: "Прочее" categories_settings: "Разделы" new_topic_duration: label: "Считать темы новыми, если" - not_viewed: "Еще не просмотрены" - last_here: "создано после вашего последнего визита" + not_viewed: "ещё не просмотрены" + last_here: "созданы после вашего последнего визита" + after_1_day: "созданы за прошедший день" + after_2_days: "созданы за последние 2 дня" + after_1_week: "созданы за последнюю неделю" + after_2_weeks: "созданы за последние 2 недели" auto_track_topics: "Автоматически отслеживать темы, которые я просматриваю" auto_track_options: never: "никогда" immediately: "немедленно" + after_30_seconds: "более 30 секунд" + after_1_minute: "более 1ой минуты" + after_2_minutes: "более 2х минут" + after_3_minutes: "более 3х минут" + after_4_minutes: "более 4х минут" + after_5_minutes: "более 5 минут" + after_10_minutes: "более 10 минут" invited: - search: "введите текст для поиска приглашений..." + search: "Введите текст для поиска по приглашениям..." title: "Приглашения" - user: "Приглашенный пользователь" - truncated: "Отображаются первые {{count}} приглашений." + user: "Кто приглашен" + sent: "Когда" + none: "Приглашения, ожидающие одобрения, отсутствуют." + truncated: + one: "Первое приглашение" + few: "Первые {{count}} приглашений" + many: "Первые {{count}} приглашений" + other: "Первые {{count}} приглашений" redeemed: "Принятые приглашения" - redeemed_tab: "Принято" + redeemed_tab: "Принятые" + redeemed_tab_with_count: "Принятые ({{count}})" redeemed_at: "Принято" pending: "Еще не принятые приглашения" - pending_tab: "Ожидает одобрения" - topics_entered: "Просмотрено тем" - posts_read_count: "Прочитано сообщений" - expired: "Это истёкшее приглашение." - rescind: "Отменить приглашение" + pending_tab: "Ожидающие" + pending_tab_with_count: "Ожидающие ({{count}})" + topics_entered: "Просмотрел тем" + posts_read_count: "Прочитал сообщений" + expired: "Это приглашение истекло." + rescind: "Отозвать" rescinded: "Приглашение отозвано" reinvite: "Повторить приглашение" reinvited: "Приглашение выслано повторно" - time_read: "Время чтения" - days_visited: "Дней посещения" + time_read: "Времени читал" + days_visited: "Дней посещал" account_age_days: "Дней с момента регистрации" create: "Отправить приглашение" + generate_link: "Скопировать ссылку для приглашений" + generated_link_message: '
Пригласительная ссылка сгенерирована!
Эта ссылка действует только для следующего e-mail:%{invitedEmail}
' bulk_invite: - none: "Вы еще никого не приглашали сюда. Вы можете отправить индивидуальные приглашения или пригласить группу людей сразу загрузив групповой файл приглашений." - text: "Групповое приглашение из файла" + none: "Вы еще никого не приглашали на этот форум. Можно отправить индивидуальные приглашения по одному, или же пригласить сразу несколько людей из файла." + text: "Пригласить всех из файла" uploading: "Загрузка..." success: "Файл успешно загружен, вы получите сообщение, когда процесс будет завершен." error: "В процессе загрузки файла '{{filename}}' произошла ошибка: {{message}}" @@ -583,6 +699,15 @@ ru: same_as_email: "Ваш пароль такой же, как и ваш email." ok: "Допустимый пароль." instructions: "Не менее %{count} символов." + summary: + title: "Сводка" + stats: "Статистика" + top_replies: "Лучшие сообщения" + more_replies: "... другие сообщения" + top_topics: "Лучшие темы" + more_topics: "... другие темы" + top_badges: "Самые престижные награды" + more_badges: "... другие награды" associated_accounts: "Связанные аккаунты" ip_address: title: "Последний IP адрес" @@ -608,11 +733,13 @@ ru: server: "Ошибка сервера" forbidden: "Доступ закрыт" unknown: "Ошибка" + not_found: "Страница не найдена" desc: network: "Пожалуйста, проверьте ваше соединение." network_fixed: "Похоже, сеть появилась." server: "Ошибка: {{status}}" forbidden: "У вас нет доступа для просмотра этого." + not_found: "Упс, произошла попытка загрузить несуществующую ссылку" unknown: "Что-то пошло не так." buttons: back: "Вернуться" @@ -623,7 +750,6 @@ ru: logout: "Вы вышли." refresh: "Обновить" read_only_mode: - enabled: "Администратор включил режим сайта ТОЛЬКО ДЛЯ ЧТЕНИЯ. Вы можете продолжать просматривать сайт. В данном режиме Ваши посты не будут сохранятся и публиковаться на сайте." login_disabled: "Вход отключён, пока сайт в режиме «только для чтения»" learn_more: "подробнее..." year: 'год' @@ -642,10 +768,17 @@ ru: one: ответ few: ответа other: ответов + signup_cta: + sign_up: "Зарегистрироваться" + hide_session: "Напомнить мне завтра" + hide_forever: "Нет, спасибо" + hidden_for_session: "Хорошо, напомню завтра. Кстати, зарегистрироваться можно также и с помощью кнопки \"Войти\"." + intro: "Привет! :heart_eyes: Кажется, форум пришелся вам по душе, но вы все еще не зарегистрировались." + value_prop: "После регистрации мы сможем запоминать, где вы закончили чтение, а когда вы заглянете в ту или иную тему снова, мы откроем ее там, где вы остановились в прошлый раз. Мы также сможем уведомлять вас о новых ответах в любимых темах в вашем личном кабинете или по электронной почте. А самое приятное - после регистрации можно ставить сердечки, тем самым выражая свою симпатию автору. :heartbeat:" summary: enabled_description: "Вы просматриваете выдержку из темы - только самые интересные сообщения по мнению сообщества." - description: "Есть {{count}} ответ(ов)." - description_time: "В теме {{count}} сообщений с ожидаемым временем чтения {{readingTime}} минут." + description: "Есть {{replyCount}} ответов." + description_time: "{{replyCount}} ответов с предполагаемым временем прочтения около {{readingTime}} минут." enable: 'Сводка по теме' disable: 'Показать все сообщения' deleted_filter: @@ -663,7 +796,7 @@ ru: created: 'Создан' created_lowercase: 'создано' trust_level: 'Уровень доверия' - search_hint: 'псевдоним, e-mail или IP адрес' + search_hint: 'Псевдоним, e-mail или IP адрес' create_account: title: "Зарегистрироваться" failed: "Произошла ошибка. Возможно, этот Email уже используется. Попробуйте восстановить пароль" @@ -699,6 +832,9 @@ ru: admin_not_allowed_from_ip_address: "Вы не можете войти в качестве админа с этого IP адреса." resend_activation_email: "Щелкните здесь, чтобы мы повторно выслали вам письмо для активации учетной записи." sent_activation_email_again: "По адресу {{currentEmail}} повторно отправлено письмо с инструкциями по активации вашей учетной записи. Доставка сообщения может занять несколько минут. Имейте в виду, что иногда по ошибке письмо может попасть в папку Спам." + to_continue: "Войдите пожалуйста" + preferences: "Вам необходимо войти на сайт для редактирования настроек пользователя" + forgot: "Я не помню данные моего аккаунта" google: title: "С помощью Google" message: "Вход с помощью учетной записи Google (убедитесь, что блокировщик всплывающих окон отключен)" @@ -708,6 +844,8 @@ ru: twitter: title: "С помощью Twitter" message: "Вход с помощью учетной записи Twitter (убедитесь, что блокировщик всплывающих окон отключен)" + instagram: + message: "Вход с помощью учетной записи Instagram (убедитесь, что блокировщик всплывающих окон отключен)" facebook: title: "С помощью Facebook" message: "Вход с помощью учетной записи Facebook (всплывающие окна должны быть разрешены)" @@ -721,74 +859,86 @@ ru: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + emoji: "Смайлики :)" + more_emoji: "еще..." + options: "Дополнительные опции" + whisper: "внутреннее сообщение" add_warning: "Это официальное предупреждение." + toggle_whisper: "Внутреннее сообщение" posting_not_on_topic: "В какой теме вы хотите ответить?" saving_draft_tip: "Сохранение..." - saved_draft_tip: "сохранено" - saved_local_draft_tip: "сохранено локально" + saved_draft_tip: "Сохранено" + saved_local_draft_tip: "Сохранено локально" similar_topics: "Ваша тема похожа на..." - drafts_offline: "Сохраненные черновики" + drafts_offline: "Черновики, сохраненные в офлайн" + group_mentioned: "При использовании {{group}}, {{count}} людям будут отправлены уведомления." error: - title_missing: "Требуется заголовок" - title_too_short: "Заголовок должен быть не менее {{min}} символов" - title_too_long: "Заголовок не может быть длиннее {{max}} символов" + title_missing: "Требуется название темы" + title_too_short: "Название темы должно быть не короче {{min}} символов" + title_too_long: "Название темы не может быть длиннее {{max}} символов" post_missing: "Сообщение не может быть пустым" - post_length: "Сообщение должно содержать минимум {{min}} символов" - try_like: 'А вы пробовали лайкнуть сообщение с помощью кнопки ?' + post_length: "Сообщение должно быть не короче {{min}} символов" + try_like: 'Пробовали ли вы выразить симпатию с помощью кнопки ?' category_missing: "Нужно выбрать раздел" save_edit: "Сохранить" reply_original: "Ответ в первоначальной теме" reply_here: "Ответить в текущей теме" reply: "Ответить" - cancel: "Отменить" + cancel: "Отмена" create_topic: "Создать тему" - create_pm: "Сообщение" + create_pm: "Личное сообщение" title: "Или нажмите Ctrl+Enter" users_placeholder: "Добавить пользователя" - title_placeholder: "Название: суть обсуждения коротким предложением" - edit_reason_placeholder: "почему вы хотите изменить?" + title_placeholder: "Название: суть темы коротким предложением" + edit_reason_placeholder: "Причина редактирования..." show_edit_reason: "(добавить причину редактирования)" + reply_placeholder: "Поддерживаемые форматы: Markdown, BBCode и HTML. Чтобы вставить картинку, перетащите ее сюда или вставьте с помощью Ctrl+V, Command-V, или нажмите правой кнопкой мыши и выберите меню \"вставить\"." view_new_post: "Посмотреть созданное вами сообщение." saving: "Сохранение..." saved: "Сохранено!" - saved_draft: "Черновик сообщения. Нажмите, чтобы продолжить редактирование." + saved_draft: "Черновик сохранен; нажмите сюда, чтобы его открыть." uploading: "Загрузка..." - show_preview: 'предпросмотр »' + show_preview: 'показать предпросмотр »' hide_preview: '« скрыть предпросмотр' - quote_post_title: "Процитировать всё сообщение" - bold_title: "Выделение жирным" + quote_post_title: "Процитировать сообщение целиком" + bold_title: "Жирный" bold_text: "текст, выделенный жирным" - italic_title: "Выделение курсивом" + italic_title: "Курсив" italic_text: "текст, выделенный курсивом" link_title: "Ссылка" link_description: "введите описание ссылки" link_dialog_title: "Вставить ссылку" - link_optional_text: "необязательное название" + link_optional_text: "текст ссылки" + link_placeholder: "Пример: http://example.com \"текст ссылки\"" quote_title: "Цитата" - quote_text: "Цитата" - code_title: "Форматированный текст" - code_text: "добавьте 4 символа пробела, перед форматированным текстом" + quote_text: "Впишите текст цитаты сюда" + code_title: "Текст \"как есть\" (без применения форматирования)" + code_text: "впишите текст сюда; также, отключить форматирование текста можно, начав строку с четырех пробелов" upload_title: "Загрузить" - upload_description: "введите здесь описание загружаемого объекта" + upload_description: "введите описание загружаемого объекта" olist_title: "Нумерованный список" - ulist_title: "Маркированный список" - list_item: "Элемент списка" + ulist_title: "Ненумерованный список" + list_item: "Пункт первый" heading_title: "Заголовок" heading_text: "Заголовок" hr_title: "Горизонтальный разделитель" - undo_title: "Отменить" - redo_title: "Повторить" - help: "Справка по Markdown" + help: "Справка по форматированию (Markdown)" toggler: "скрыть / показать панель редактирования" + modal_ok: "OK" + modal_cancel: "Отмена" + cant_send_pm: "К сожалению, вы не можете отправлять сообщения пользователю %{username}." admin_options_title: "Дополнительные настройки темы" auto_close: label: "Закрыть тему через:" error: "Пожалуйста, введите корректное значение." based_on_last_post: "Не закрывать, пока не пройдет хотя бы такой промежуток времени с момента последнего сообщения в этой теме." all: - examples: 'Введите количество часов (24), абсолютное время (17:30), или дату и время (2013-11-22 14:00).' + examples: 'Введите количество часов (напр., 24), время (напр., 17:30) или дату и время (2013-11-22 14:00).' limited: units: "(кол-во часов)" examples: 'Введите количество часов (24).' @@ -800,7 +950,6 @@ ru: mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -810,8 +959,20 @@ ru: moved_post: "
{{username}} переместил(а) {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
Вы награждены: {{description}}
" + alt: + mentioned: "Упомянуто" + quoted: "Процитировано пользователем" + replied: "Ответил" + posted: "Опубликовано" + edited: "Изменил ваше сообщение" + liked: "Понравилось ваше сообщение" + private_message: "Личное сообщение от" + invitee_accepted: "Приглашение принято" + linked: "Ссылка на ваше сообщение" + granted_badge: "Награда получена от" popup: mentioned: '{{username}} упомянул вас в "{{topic}}" - {{site_title}}' + group_mentioned: '{{username}} упомянул вас в "{{topic}}" - {{site_title}}' quoted: '{{username}} процитировал Вас в "{{topic}}" - {{site_title}}' replied: '{{username}} ответил вам в "{{topic}}" - {{site_title}}' posted: '{{username}} написал в "{{topic}}" - {{site_title}}' @@ -823,32 +984,53 @@ ru: from_my_computer: "From my device" from_the_web: "From the web" remote_tip: "ссылка на изображение" - remote_tip_with_attachments: "ссылка на изображение или файл ({{authorized_extensions}})" + remote_tip_with_attachments: "ссылка на изображение или файл {{authorized_extensions}}" + local_tip: "выбрать изображения с вашего устройства" + local_tip_with_attachments: "выбрать изображения или файлы с вашего устройства {{authorized_extensions}}" hint: "(вы так же можете перетащить объект в редактор для его загрузки)" + hint_for_supported_browsers: "вы так же можете перетащить или скопировать изображения в редактор" uploading: "Загрузка" select_file: "Выбрать файл" image_link: "ссылка, на которую будет указывать ваше изображение" search: - title: "поиск по темам, сообщениям, пользователям или разделам" + sort_by: "Сортировка" + relevance: "По смыслу" + latest_post: "С недавними сообщениями" + most_viewed: "Самые просматриваемые" + most_liked: "Больше всего симпатий" + select_all: "Выбрать все" + clear_all: "Сбросить все" + result_count: + one: "Найдено 1: \"{{term}}\"" + few: "Найдено {{count}}: \"{{term}}\"" + many: "Найдено {{count}}: \"{{term}}\"" + other: "Найдено {{count}}: \"{{term}}\"" + title: "Поиск по темам, сообщениям, псевдонимам и разделам" no_results: "Ничего не найдено." + no_more_results: "Больше ничего не найдено." + search_help: Справка по поиску searching: "Поиск ..." post_format: "#{{post_number}} от {{username}}" context: user: "Искать сообщения от @{{username}}" category: "Искать в разделе \"{{category}}\"" topic: "Искать в этой теме" - private_messages: "Поиск в сообщениях" + private_messages: "Искать в личных сообщениях" + hamburger_menu: "перейти к другому списку тем или другому разделу" + new_item: "новый" go_back: 'вернуться' not_logged_in_user: 'страница пользователя с историей его последней активности и настроек' current_user: 'перейти на вашу страницу пользователя' topics: bulk: + unlist_topics: "Исключить из списков" reset_read: "Сбросить прочтённые" delete: "Удалить темы" - dismiss_posts: "Отложить сообщения" - dismiss_posts_tooltip: "Сбросить текущие непрочитанные сообщения в этих темах сейчас, но снова показывать в непрочитанных, когда появятся новые ответы." - dismiss_topics: "Отложить темы" - dismiss_topics_tooltip: "Больше не показывать эти темы в непрочитанных, когда в них появятся новые ответы." + dismiss: "OK" + dismiss_read: "Отклонить все непрочитанные" + dismiss_button: "Отложить..." + dismiss_tooltip: "Отложить новые сообщения или перестать следить за этими темами" + also_dismiss_topics: "Перестать следить за этими темами, чтобы они никогда больше не высвечивались как непрочитанные" dismiss_new: "Отложить новые" toggle: "Вкл./выкл. выбор нескольких тем" actions: "Массовое действие" @@ -873,9 +1055,6 @@ ru: category: "В разделе {{category}} отсутствуют темы." top: "Нет обсуждаемых тем." search: "Ничего не найдено." - educate: - new: '
Это список новых тем.
По-умолчанию, тема считается новой и отображается с индикатором новое, если она была создана в течении последних 2-х дней.
Это можно изменить в своих настройках.
' - unread: '
Это ваш список непрочитанных тем.
По-умолчанию, темы считаются непрочитанными и напротив них отображается счетчик непрочитанных сообщений 1, если вы:
Или же если вы намеренно выбрали Следить или Наблюдать в настройках уведомлений в самом низу темы.
Эту функциональность можно дополнительно отрегулировать в ваших настройках.
'
bottom:
latest: "Тем больше нет."
hot: "Популярных тем больше нет."
@@ -888,10 +1067,18 @@ ru:
bookmarks: "Больше нет избранных тем."
search: "Больше ничего не найдено."
topic:
+ unsubscribe:
+ change_notification_state: "Ваше текущее состояние уведомлений"
filter_to: "{{post_count}} сообщений в теме"
create: 'Создать Тему'
create_long: 'Создать новую тему'
private_message: 'Написать сообщение'
+ archive_message:
+ help: 'Переместить сообщение в архив'
+ title: 'Архив'
+ move_to_inbox:
+ title: 'Переместить во входящие'
+ help: 'Переместить сообщение во входящие'
list: 'Темы'
new: 'новая тема'
unread: 'непрочитанно'
@@ -942,7 +1129,7 @@ ru:
toggle_information: "скрыть / показать подробную информацию о теме"
read_more_in_category: "Хотите почитать что-нибудь еще? Можно посмотреть темы в {{catLink}} или {{latestLink}}."
read_more: "Хотите почитать что-нибудь еще? {{catLink}} или {{latestLink}}."
- read_more_MF: "У вас { UNREAD, plural, =0 {} one { 1 непрочитанное } other { # непрочитанных } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false { } other{}} 1 новая тема} other { {BOTH, select, true{and } false { } other{}} # новых тем} } осталось, или {CATEGORY, select, true {посмотреть другие темы в{catLink}} false {{latestLink}} other {}}"
+ read_more_MF: "У вас { UNREAD, plural, =0 {} one { 1 непрочитанная } other { # непрочитанных } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false { } other{}} 1 новая тема} other { {BOTH, select, true{and } false { } other{}} # новых тем} } осталось, или {CATEGORY, select, true {посмотрите другие темы в разделе {catLink}} false {{latestLink}} other {}}"
browse_all_categories: Просмотреть все разделы
view_latest_topics: посмотреть последние темы
suggest_create_topic: Почему бы вам не создать новую тему?
@@ -958,7 +1145,7 @@ ru:
title: текущее местоположение в теме
go_top: "перейти наверх"
go_bottom: "перейти вниз"
- go: "перейти"
+ go: "=>"
jump_bottom: "перейти к последнему сообщению"
jump_bottom_with_number: "перейти к сообщению %{post_number}"
total: всего сообщений
@@ -993,15 +1180,17 @@ ru:
title: "Следить"
description: "Количество непрочитанных сообщений появится рядом с названием этой темы. Вам придёт уведомление, только если кто-нибудь упомянет ваш @псевдоним или ответит на ваше сообщение."
regular:
+ title: "Уведомлять"
description: "Вам придёт уведомление, только если кто-нибудь упомянет ваш @псевдоним или ответит на ваше сообщение."
regular_pm:
+ title: "Уведомлять"
description: "Вам придёт уведомление, только если кто-нибудь упомянет ваш @псевдоним или ответит на ваше сообщение."
muted_pm:
title: "Без уведомлений"
description: "Никогда не получать уведомлений, связанных с этой беседой."
muted:
title: "Без уведомлений"
- description: "Никогда не получать уведомлений, связанных с этой темой, и не показывать ее во вкладке «Непрочитанные»."
+ description: "Не уведомлять об изменениях в этой теме и скрыть её из последних."
actions:
recover: "Отменить удаление темы"
delete: "Удалить тему"
@@ -1040,23 +1229,17 @@ ru:
confirm_pin: "У вас уже есть {{count}} закрепленных тем. Слишком большое количество закрепленных тем может стать препятствием для новых и анонимных пользователей. Вы уверены, что хотите закрепить еще одну тему в этом разделе?"
unpin: "Убрать эту тему из верха раздела {{categoryLink}}."
pin_note: "Пользователи могут открепить тему для себя."
- already_pinned:
- zero: "В разделе {{categoryLink}} нет закрепленных тем."
- one: "Закрепленные темы в разделе {{categoryLink}}: 1."
- other: "Закрепленные темы в разделе {{categoryLink}}: {{count}}."
+ pin_validation: "Дата необходима, чтобы прикрепить эту тему"
+ not_pinned: "В разделе {{categoryLink}} нет закрепленных тем."
confirm_pin_globally: "У вас уже есть {{count}} глобально закрепленных тем. Слишком большое количество закрепленных тем может стать препятствием для новых и анонимных пользователей. Вы уверены, что хотите глобально закрепить еще одну тему?"
unpin_globally: "Убарть эту тему из верха всех списков тем."
+ unpin_globally_until: "Убарть эту тему из верха всех списков тем."
global_pin_note: "Пользователи могут открепить тему для себя."
- already_pinned_globally:
- zero: "Нет глобально закрепленных тем."
- one: "Глобально закрепленные темы: 1."
- other: "Глобально закрепленные темы: {{count}}."
+ not_pinned_globally: "Нет глобально закрепленных тем."
make_banner: "Превратить эту тему в объявление, которое будет отображаться вверху всех страниц."
remove_banner: "Убрать объявление, которое отображается вверху всех страниц."
banner_note: "Пользователи могут отклонить объявление, закрыв его. Только одну тему можно сделать текущим объявлением."
- already_banner:
- zero: "Нет текущих объявлений."
- one: "Есть текущее объявление."
+ no_banner_exists: "Нет текущих объявлений."
inviting: "Высылаю приглашение..."
automatically_add_to_groups_optional: "Это приглашение также включает в себя доступ к следующим группам: (опционально, только для администратора)"
automatically_add_to_groups_required: "Это приглашение также включает в себя доступ к следующим группам: (Обязательно, только для администратора)"
@@ -1122,6 +1305,12 @@ ru:
many: "Пожалуйста, выберите нового владельца {{count}} сообщений от {{old_user}}."
other: "Пожалуйста, выберите нового владельца {{count}} сообщений от {{old_user}}."
instructions_warn: "Обратите внимание, что все уведомления об этом сообщении не будут переданы новому пользователю задним числом.
Внимание: В настоящее время никакие данные, имеющие отношение к сообщению, не передаются новому пользователю. Используйте с осторожностью."
+ change_timestamp:
+ title: "Изменить временную метку"
+ action: "изменить временную метку"
+ invalid_timestamp: "Временная метка не может быть в будущем"
+ error: "При изменении временной метки темы возникла ошибка"
+ instructions: "Пожалуйста, выберите новую временную метку. Сообщения в теме будут обновлены, чтобы убрать временные различия."
multi_select:
select: 'выбрать'
selected: 'выбрано ({{count}})'
@@ -1136,6 +1325,8 @@ ru:
many: Вы выбрали {{count}} сообщений.
other: Вы выбрали {{count}} сообщений.
post:
+ reply: " {{replyAvatar}} {{usernameLink}}"
+ reply_topic: " {{link}}"
quote_reply: "ответить цитированием"
edit: "Изменить {{link}} {{replyAvatar}} {{username}}"
edit_reason: "Причина:"
@@ -1174,10 +1365,7 @@ ru:
few: "Это сообщение понравилось {{count}} людям"
many: "Это сообщение понравилось {{count}} людям"
other: "Это сообщение понравилось {{count}} людям"
- has_likes_title_you:
- zero: "Вам понравилось это сообщение"
- one: "Вам еще 1 человеку понравилось это сообщение"
- other: "Вам и еще {{count}} людям понравилось это сообщение"
+ has_likes_title_only_you: "Вам понравилось это сообщение"
errors:
create: "К сожалению, не удалось создать сообщение из-за ошибки. Попробуйте еще раз."
edit: "К сожалению, не удалось изменить сообщение. Попробуйте еще раз."
@@ -1195,8 +1383,7 @@ ru:
no_value: "Нет, оставить"
yes_value: "Да, отказаться"
via_email: "это сообщение пришло с почты"
- wiki:
- about: "это вики-сообщение - любой пользователь может отредактировать его, чтобы улучшить, дополнить или исправить ошибки"
+ whisper: "Это внутреннее сообщение, т.е. оно видно только модераторам"
archetypes:
save: 'Параметры сохранения'
controls:
@@ -1226,6 +1413,7 @@ ru:
revert_to_regular: "Убрать цвет модератора"
rebake: "Обработать сообщение заново - HTML"
unhide: "Снова сделать видимым"
+ change_owner: "Изменить владельца"
actions:
flag: 'Жалоба'
defer_flags:
@@ -1249,17 +1437,9 @@ ru:
like: "Больше не нравится"
vote: "Отозвать голос"
people:
- off_topic: "{{icons}} отметили как оффтопик"
- spam: "{{icons}} отметили как спам"
- spam_with_url: "{{icons}} пометил это как спам"
- inappropriate: "{{icons}} отметили как неуместное"
- notify_moderators: "{{icons}} пожаловались модераторам"
- notify_moderators_with_url: "{{icons}} пожаловались модераторам"
- notify_user: "{{icons}} отправил(и) сообщение"
- notify_user_with_url: "{{icons}} отправил(и) сообщение"
- bookmark: "{{icons}} добавили в закладки"
- like: "Выразили симпатию: {{icons}}"
- vote: "{{icons}} проголосовали за"
+ notify_user: "отправил сообщение"
+ like: "понравилось это"
+ vote: "проголосовал за это"
by_you:
off_topic: "Помечена вами как оффтопик"
spam: "Помечена вами как спам"
@@ -1349,10 +1529,6 @@ ru:
few: "{{count}} человека проголосовали за это сообщение"
many: "{{count}} человек проголосовали за это сообщение"
other: "{{count}} человек проголосовали за это сообщение"
- edits:
- one: редактировалось 1 раз
- other: "редактировалось {{count}} раз"
- zero: не редактировалось
delete:
confirm:
one: "Вы уверены, что хотите удалить это сообщение?"
@@ -1391,6 +1567,7 @@ ru:
topic_template: "Шаблон темы"
delete: 'Удалить раздел'
create: 'Создать Раздел'
+ create_long: 'Создать новый раздел'
save: 'Сохранить раздел'
slug: 'Ссылка Категории'
slug_placeholder: '(Опция) дефисы в url'
@@ -1413,6 +1590,7 @@ ru:
change_in_category_topic: "Изменить описание"
already_used: 'Цвет уже используется другим разделом'
security: "Безопасность"
+ special_warning: "Внимание: данная категория была предустановлена и настройки безопасности не могут быть изменены. Если не хотите использовать эту категорию, удалите ее вместо изменения."
images: "Изображения"
auto_close_label: "Закрыть тему через:"
auto_close_units: "часов"
@@ -1432,19 +1610,18 @@ ru:
notifications:
watching:
title: "Наблюдать"
- description: "Автоматически наблюдать за всеми новыми темами в этих разделах и уведомлять меня о новых сообщениях в них. Счетчик новых сообщений будет появляться рядом с названием темы."
+ description: "Наблюдать за каждой новой темой в этом разделе. Уведомлять о всех ответах в темах и показывать счетчик новых непрочитанных ответов."
tracking:
title: "Следить"
- description: "Автоматически следить за всеми новыми темами в этих разделах. Счетчик новых сообщений будет появляться рядом с названием темы."
+ description: "Следить за каждой новой темой в этом разделе и показывать счетчик новых непрочитанных ответов. Вам придет уведомление, если кто-нибудь упомянет ваш @псевдоним или ответит на ваше сообщение."
regular:
title: "Уведомлять"
description: "Уведомлять, если кто-нибудь упомянет мой @псевдоним или ответит на мое сообщение."
muted:
title: "Без уведомлений"
- description: "Не уведомлять меня о новых темах в этих разделах и не показывать новые темы на странице «Непрочитанные»."
+ description: "Не уведомлять о новых темах в этом разделе и скрыть их из последних."
flagging:
title: 'Спасибо за вашу помощь в поддержании порядка!'
- private_reminder: 'жалобы анонимны и видны только персоналу'
action: 'Пожаловаться'
take_action: "Принять меры"
notify_action: 'Сообщение'
@@ -1489,12 +1666,14 @@ ru:
help: "Тема закрыта; в ней больше нельзя отвечать"
archived:
help: "Тема заархивирована и не может быть изменена"
+ locked_and_archived:
+ help: "Тема закрыта и заархивирована. Она больше не принимает новые ответы и не может быть изменена"
unpinned:
title: "Откреплена"
help: "Эта тема не закреплена; она будет отображаться в обычном порядке"
pinned_globally:
title: "Закреплена глобально"
- help: "Эта тема закреплена глобально и будет отображаться в начале всех списков"
+ help: "Эта тема закреплена глобально; она будет отображаться на главной и вверху своего раздела"
pinned:
title: "Закреплена"
help: "Тема закреплена; она будет показана вверху соответствующего раздела"
@@ -1540,9 +1719,11 @@ ru:
with_topics: "%{filter} темы"
with_category: "%{filter} %{category} темы"
latest:
- title:
- zero: "Последние"
+ title: "Последние"
+ title_with_count:
one: "Последние (1)"
+ few: "Последние ({{count}})"
+ many: "Последние ({{count}})"
other: "Последние ({{count}})"
help: "темы с недавними сообщениями"
hot:
@@ -1559,22 +1740,30 @@ ru:
title_in: "Раздел - {{categoryName}}"
help: "все темы, сгруппированные по разделам"
unread:
- title:
- zero: "Непрочитанные"
+ title: "Непрочитанные"
+ title_with_count:
one: "Непрочитанные (1)"
+ few: "Непрочитанные ({{count}})"
+ many: "Непрочитанные ({{count}})"
other: "Непрочитанные ({{count}})"
help: "наблюдаемые или отслеживаемые темы с непрочитанными сообщениями"
lower_title_with_count:
- one: "1 непрочитано"
- other: "{{count}} непрочитано"
+ one: "1 непрочитанная"
+ few: "{{count}} непрочитанных"
+ many: "{{count}} непрочитанных"
+ other: "{{count}} непрочитанных"
new:
lower_title_with_count:
- one: "1 новое"
+ one: "1 новая"
+ few: "{{count}} новых"
+ many: "{{count}} новых"
other: "{{count}} новых"
lower_title: "новые"
- title:
- zero: "Новые"
+ title: "Новые"
+ title_with_count:
one: "Новые (1)"
+ few: "Новые ({{count}})"
+ many: "Новые ({{count}})"
other: "Новые ({{count}})"
help: "темы, созданные за последние несколько дней"
posted:
@@ -1584,18 +1773,22 @@ ru:
title: "Закладки"
help: "темы, которые вы добавили в закладки"
category:
- title:
- zero: "{{categoryName}}"
+ title: "{{categoryName}}"
+ title_with_count:
one: "{{categoryName}} (1)"
+ few: "{{categoryName}} ({{count}})"
+ many: "{{categoryName}} ({{count}})"
other: "{{categoryName}} ({{count}})"
help: "последние темы в разделе {{categoryName}}"
top:
title: "Обсуждаемые"
- help: "наиболее активные темы за прошлый год, месяц, неделю или день"
+ help: "Самые активные темы за последний год, месяц, квартал, неделю или день"
all:
title: "За все время"
yearly:
title: "За год"
+ quarterly:
+ title: "За квартал"
monthly:
title: "За месяц"
weekly:
@@ -1603,11 +1796,12 @@ ru:
daily:
title: "За день"
all_time: "За все время"
- this_year: "Год"
- this_month: "Месяц"
- this_week: "Неделя"
- today: "Сегодня"
- other_periods: "просмотреть выше"
+ this_year: "За год"
+ this_quarter: "За квартал"
+ this_month: "За месяц"
+ this_week: "За неделю"
+ today: "За сегодня"
+ other_periods: "показать самые обсуждаемые"
browser_update: 'К сожалению, ваш браузер устарел и не поддерживается этим сайтом. Пожалуйста, обновите браузер (нажмите на ссылку, чтобы узнать больше).'
permission_types:
full: "Создавать / Отвечать / Просматривать"
@@ -1664,6 +1858,7 @@ ru:
refresh_report: "Обновить отчет"
start_date: "Дата от"
end_date: "Дата до"
+ groups: "Все группы"
commits:
latest_changes: "Обновления в репозитории Github"
by: "от"
@@ -1758,11 +1953,15 @@ ru:
add: "Добавить"
add_members: "Добавить участников"
custom: "Настраиваемые"
+ bulk_select: "(выберите группу)"
automatic: "Автоматические"
automatic_membership_email_domains: "Пользователи, которые регистрируются с доменом электронной почты, включенным в этот список, будут автоматически добавлены в эту группу:"
automatic_membership_retroactive: "Применить тот же домен электронной почты чтобы добавить существующих зарегистрированных пользователей"
default_title: "Заголовок по умолчанию для всех пользователей в группе"
primary_group: "Автоматически использовать в качестве главной группы"
+ group_owners: Владельцы
+ add_owners: Добавить владельцев
+ incoming_email_placeholder: "введите email адрес"
api:
generate_master: "Сгенерировать ключ API"
none: "Отсутствует ключ API."
@@ -1836,11 +2035,11 @@ ru:
is_disabled: "Восстановление отключено в настройках сайта."
label: "Восстановить"
title: "Восстановить резервную копию"
- confirm: "Вы уверенны, что желаете восстановить эту резервную копию?"
+ confirm: "Вы уверены, что хотите восстановить этот бэкап?"
rollback:
label: "Откатить"
title: "Откатить базу данных к предыдущему рабочему состоянию"
- confirm: "Вы уверены, что хотите откатить базу данных к предыдущему рабочему состоянию?"
+ confirm: "Вы уверены, что хотите откатить базу данных до предыдущего рабочего состояния?"
export_csv:
user_archive_confirm: "Вы уверены, то хотите скачать все ваши сообщения?"
success: "Процедура экспорта начата, мы отправим вам сообщение, когда процесс будет завершен."
@@ -1890,6 +2089,11 @@ ru:
color: "Цвет"
opacity: "Прозрачность"
copy: "Копировать"
+ email_templates:
+ subject: "Тема"
+ body: "Текст сообщения"
+ none_selected: "Выберите шаблон письма, чтобы начать редактирование."
+ revert: "Отменить изменения"
css_html:
title: "CSS/HTML"
long_title: "Настройка CSS и HTML"
@@ -1934,18 +2138,17 @@ ru:
love:
name: 'любовь'
description: "Цвет кнопки «Мне нравится»."
- wiki:
- name: 'вики'
- description: "Базовый цвет, используемый для фона вики-сообщений."
email:
- title: "Email"
settings: "Настройки"
- all: "Все"
+ templates: "Шаблоны"
+ preview_digest: "Просмотр сводки"
sending_test: "Отправка тестового письма..."
error: "ОШИБКА - %{server_error}"
test_error: "При отправке тестового письма произошла ошибка. Пожалуйста, внимательно проверьте ваши почтовые настройки, проверьте, что ваш сервер не блокирует почтовые соединения, и попытайтесь снова."
sent: "Отправлено"
skipped: "Пропущенные"
+ received: "Принято"
+ rejected: "Отклонено"
sent_at: "Отправлено"
time: "Время"
user: "Пользователь"
@@ -1955,7 +2158,6 @@ ru:
send_test: "Отправить тестовое письмо"
sent_test: "отправлено!"
delivery_method: "Метод отправки"
- preview_digest: "Просмотр сводки"
refresh: "Обновить"
format: "Формат"
html: "html"
@@ -1963,6 +2165,22 @@ ru:
last_seen_user: "Последнее посещение:"
reply_key: "Ключ ответа"
skipped_reason: "Причина пропуска"
+ incoming_emails:
+ from_address: "От"
+ to_addresses: "Кому"
+ cc_addresses: "Скрытая копия"
+ subject: "Тема"
+ error: "Ошибка"
+ none: "Входящих сообщений нет"
+ modal:
+ title: "Подробности Входящего Email"
+ error: "Ошибка"
+ subject: "Тема"
+ filters:
+ from_placeholder: "from@example.com"
+ to_placeholder: "to@example.com"
+ cc_placeholder: "cc@example.com"
+ error_placeholder: "Ошибка"
logs:
none: "Записи в журнале регистрации не найдены."
filters:
@@ -1981,6 +2199,7 @@ ru:
ip_address: "IP"
topic_id: "ID темы"
post_id: "ID сообщения"
+ category_id: "ID раздела"
delete: 'Удалить'
edit: 'Изменить'
save: 'Сохранить'
@@ -1989,11 +2208,11 @@ ru:
do_nothing: "ничего не делать"
staff_actions:
title: "Действия персонала"
- instructions: "Кликните по имени пользователя и действиям для фильтрации списка. Кликните по аватару для перехода на страницу пользователя."
+ instructions: "Кликните по псевдониму или действиям для фильтрации списка. Кликните по аватару для перехода на страницу пользователя."
clear_filters: "Показать все"
staff_user: "Персонал"
target_user: "Целевой пользователь"
- subject: "Тема"
+ subject: "Субъект"
when: "Когда"
context: "Контекст"
details: "Подробности"
@@ -2005,22 +2224,32 @@ ru:
no_previous: "Старое значение отсутствует."
deleted: "Новое значение отсутствует. Запись была удалена."
actions:
- delete_user: "удаление пользователя"
- change_trust_level: "изменение уровня доверия"
- change_username: "изменить имя пользователя"
- change_site_setting: "изменение настройки сайта"
- change_site_customization: "изменение настройки сайта"
- delete_site_customization: "удаление настроек сайта"
- suspend_user: "заморозка пользователя"
- unsuspend_user: "разморозка пользователя"
- grant_badge: "выдача награды"
- revoke_badge: "отозыв награды"
- check_email: "открыть e-mail"
- delete_topic: "удаление темы"
- delete_post: "удаление сообщения"
- impersonate: "выдать себя за"
- anonymize_user: "анонимизировать пользователя"
- roll_up: "Сгруппировать IP адреса в подсети"
+ delete_user: "удален пользователь"
+ change_trust_level: "изменен уровень доверия"
+ change_username: "изменен псевдоним"
+ change_site_setting: "изменена настройка сайта"
+ change_site_customization: "изменена настройка сайта"
+ delete_site_customization: "удалена настройка сайта"
+ change_site_text: "изменен текст"
+ suspend_user: "пользователь заморожен"
+ unsuspend_user: "пользователь разморожен"
+ grant_badge: "выдана награда"
+ revoke_badge: "отозвана награда"
+ check_email: "доступ к адресу e-mail"
+ delete_topic: "удалена тема"
+ delete_post: "удалено сообщение"
+ impersonate: "вход от имени пользователя"
+ anonymize_user: "пользователь анонимизрован"
+ roll_up: "сгруппированы заблокированные IP адреса в подсеть"
+ change_category_settings: "изменена настройка раздела"
+ delete_category: "удален раздел"
+ create_category: "создан раздел"
+ block_user: "пользователь заблокирован"
+ unblock_user: "пользователь разблокирован"
+ grant_admin: "выданы права администратора"
+ revoke_admin: "отозваны права администратора"
+ grant_moderation: "выданы права модератора"
+ revoke_moderation: "отозваны права модератора"
screened_emails:
title: "Почтовые адреса"
description: "Когда кто-то создает новую учетную запись, проверяется данный почтовый адрес и регистрация блокируется или производятся другие дополнительные действия."
@@ -2091,9 +2320,9 @@ ru:
pending: 'Пользователи, ожидающие одобрения'
newuser: 'Пользователи с уровнем доверия 0 (Новые пользователи)'
basic: 'Пользователи с уровнем доверия 1 (Базовые пользователи)'
- regular: 'Пользователи с уровнем доверия 2 (активные)'
- leader: 'Пользователи с уровнем доверия 3 (лидеры сообщества)'
- elder: 'Пользователи с уровнем доверия 4 (старейшины)'
+ member: 'Пользователи с уровнем доверия 2 (активные)'
+ regular: 'Пользователи с уровнем доверия 3 (лидеры сообщества)'
+ leader: 'Пользователи с уровнем доверия 4 (старейшины)'
staff: "Персонал"
admins: 'Администраторы'
moderators: 'Модераторы'
@@ -2200,6 +2429,8 @@ ru:
deactivate_failed: "Во время деактивации пользователя произошла ошибка."
unblock_failed: 'Не удалось разблокировать пользователя.'
block_failed: 'Не удалось заблокировать пользователя.'
+ block_confirm: 'Вы уверены что хотите заблокировать этого пользователя? Он больше не сможет создавать темы и отправлять сообщения.'
+ block_accept: 'Подтвердить блокировку'
deactivate_explanation: "Дезактивированные пользователи должны заново подтвердить свой e-mail."
suspended_explanation: "Замороженный пользователь не может войти."
block_explanation: "Заблокированный не может отвечать и создавать новые темы."
@@ -2213,7 +2444,6 @@ ru:
unlock_trust_level: "Разморозить уровень доверия"
tl3_requirements:
title: "Требования для 3 уровня доверия"
- table_title: "За последние 100 дней:"
value_heading: "Значение"
requirement_heading: "Требование"
visits: "Посещений"
@@ -2256,24 +2486,29 @@ ru:
delete: "Удалить"
cancel: "Отмена"
delete_confirm: "Вы уверены, что хотите удалить это поле?"
+ options: "Опции"
required:
title: "Обязательное во время регистрации?"
- enabled: "обязательное"
- disabled: "необязательное"
+ enabled: "Обязательное"
+ disabled: "Необязательное"
editable:
title: "Редактируемое после регистрации?"
- enabled: "редактируемое"
- disabled: "нередактируемое"
+ enabled: "Редактируемое"
+ disabled: "Нередактируемое"
show_on_profile:
- title: "Показать в публичном профиле?"
- enabled: "показывается в профиле"
- disabled: "не показывается в профиле"
+ title: "Показывать в публичном профиле?"
+ enabled: "Показывать в профиле"
+ disabled: "Не показывать в профиле"
field_types:
text: 'Текстовое поле'
confirm: 'Подтверждение'
+ dropdown: "Выпадающий список"
site_text:
- none: "Выберите секцию для редактирования."
title: 'Текстовое содержание'
+ edit: 'изменить'
+ revert: "Отменить изменения"
+ go_back: "Вернуться к поиску"
+ show_overriden: 'Показывать только измененные'
site_settings:
show_overriden: 'Показывать только измененные'
title: 'Настройки'
@@ -2304,6 +2539,7 @@ ru:
backups: "Резервные копии"
login: "Учетные записи"
plugins: "Плагины"
+ user_preferences: "Пользовательские настройки"
badges:
title: Награды
new_badge: Новая награда
@@ -2360,10 +2596,12 @@ ru:
bad_count_warning:
header: "ВНИМАНИЕ!"
text: "Обнаружены несуществующие примеры выдачи наград. Это может произойти, когда запрос возвращает несуществующие идентификаторы ID пользователей или сообщений. Это может привести к неожиданным проблемам со временем, поэтому внимательно проверьте ваш запрос."
+ no_grant_count: "Нет наград для выдачи."
grant_count:
- zero: "Нет наград для выдачи."
- one: "1 награда для выдачи."
- other: "%{count} наград на выдачу."
+ one: "Будет выдана 1 награда."
+ few: "%{count} наград будут выданы."
+ many: "%{count} наград будут выданы."
+ other: "%{count} наград будут выданы."
sample: "Пример:"
grant:
with: %{username}
@@ -2377,6 +2615,35 @@ ru:
name: "Название"
image: "Изображение"
delete_confirm: "Вы уверены, что хотите удалить иконку :%{name}:?"
+ embedding:
+ title: "Встраивание"
+ host: "Разрешённые Хосты"
+ edit: "изменить"
+ add_host: "Добавить хост"
+ settings: "Настройки встраивания"
+ feed_settings: "Настройки Фида"
+ embed_post_limit: "Максимальное количество вложенных сообщений"
+ embed_username_key_from_feed: "Ключ для извлечения пользователя из ленты"
+ embed_truncate: "Обрезать встроенные сообщения."
+ embed_whitelist_selector: "Селекторы CSS которые разрешены для использования."
+ embed_blacklist_selector: "Селекторы CSS которые запрещены для использования."
+ feed_polling_enabled: "Импорт сообщений через RSS/ATOM"
+ save: "Сохранить настройки встраивания"
+ permalink:
+ title: "Постоянные ссылки"
+ url: "Ссылка URL"
+ topic_id: "Номер темы"
+ topic_title: "Тема"
+ post_id: "Номер сообщения"
+ post_title: "Сообщение"
+ category_id: "Номер раздела"
+ category_title: "Раздел"
+ external_url: "Внешняя ссылка"
+ delete_confirm: Удалить эту постоянную ссылку?
+ form:
+ label: "Новая постоянная ссылка:"
+ add: "Добавить"
+ filter: "Поиск по ссылке или внешней ссылке (URL)"
lightbox:
download: "загрузить"
search_help:
@@ -2392,6 +2659,8 @@ ru:
categories: 'g, c Разделы'
top: 'g, t Вверх'
bookmarks: 'g, b Закладки'
+ profile: 'g, p Профиль'
+ messages: 'g, m Сообщения'
navigation:
title: 'Навигация'
jump: '# Перейти к сообщение №'
@@ -2403,12 +2672,14 @@ ru:
title: 'Приложение'
create: 'c Создать новую тему'
notifications: 'n Открыть уведомления'
+ hamburger_menu: '= Открыть меню'
user_profile_menu: 'p Открыть меню моего профиля'
show_incoming_updated_topics: '. Показать обновленные темы'
search: '/ Поиск'
help: '? Открыть помощь по горячим клавишам'
dismiss_new_posts: 'x, r Отложить новые сообщения'
dismiss_topics: 'x, t Отложить темы'
+ log_out: 'shift+z shift+z Выйти'
actions:
title: 'Действия'
bookmark_topic: 'f Добавить в Избранное'
@@ -2430,8 +2701,6 @@ ru:
mark_watching: 'm, w Наблюдать за темой'
badges:
title: Награды
- allow_title: "Разрешить использовать в качестве титула"
- multiple_grant: "может быть получено несколько раз"
badge_count:
one: "1 награда"
few: "%{count} награды"
@@ -2460,91 +2729,12 @@ ru:
name: Прочее
posting:
name: Темы и сообщения
- badge:
- editor:
- name: Редактор
- description: Впервые отредактировал сообщение
- basic_user:
- name: Базовый
- description: Получил доступ ко всем основным функциям сообщества
- member:
- name: Участник
- description: Получил возможность приглашать новых пользователей в сообщество
- regular:
- name: Активный
- description: Получил возможность изменять раздел тем и переименовывать их, а также доступ к Фойе и отслеживаемым ссылкам
- leader:
- name: Лидер
- description: Получил глобальные права редактировать, прилепливать, закрывать, архивировать, разделять и соединять темы
- welcome:
- name: Добро пожаловать
- description: Получил отметку "Мне нравится"
- autobiographer:
- name: Автобиограф
- description: Заполнил информацию в профиле пользователя
- anniversary:
- name: Годовщина
- description: Активный пользователь в течении года, создал как минимум одну тему.
- nice_post:
- name: Хорошее сообщение
- description: Получил 10 отметок "Мне нравится" за свое сообщение. Эта награда может быть выдана более одного раза
- good_post:
- name: Отличное сообщение
- description: Получил 25 отметок "Мне нравится" за свое сообщение. Эта награда может быть выдана более одного раза
- great_post:
- name: Отменное сообщение
- description: Получил 50 отметок "Мне нравится" за свое сообщение. Эта награда может быть выдана более одного раза
- nice_topic:
- name: Хорошая тема
- description: Получил 10 отметок "Мне нравится" за свою тему. Эта награда может быть выдана более одного раза
- good_topic:
- name: Отличная тема
- description: Получил 25 отметок "Мне нравится" за свою тему. Эта награда может быть выдана более одного раза
- great_topic:
- name: Отменная тема
- description: Получил 50 отметок "Мне нравится" за свою тему. Эта награда может быть выдана более одного раза
- nice_share:
- name: Хороший вклад в популярность
- description: Поделился ссылкой на сообщение, и ее открыли 25 раз
- good_share:
- name: Значительный вклад в популярность
- description: Поделился ссылкой на сообщение, и ее открыли 300 раз
- great_share:
- name: Бесценный вклад в популярность
- description: Поделился ссылкой на сообщение, и ее открыли 1000 раз
- first_like:
- name: Первая симпатия
- description: Понравилось сообщение
- first_flag:
- name: Первая жалоба
- description: Помог модератору, обратив его внимание на проблемное сообщение
- promoter:
- name: Промоутер
- description: Пригласил нового пользователя
- campaigner:
- name: Активист
- description: Пригласил троих пользователей, достигших 1-го уровня доверия
- champion:
- name: Чемпион
- description: Пригласил пятерых пользователей, достигших 2-го уровня доверия
- first_share:
- name: Первый вклад в популярность
- description: Впервые поделился ссылкой на сообщение
- first_link:
- name: Первая ссылка
- description: Добавил внутреннюю ссылку на другую тему
- first_quote:
- name: Первая цитата
- description: Процитировал другого пользователя
- read_guidelines:
- name: Руководство пользователя
- description: Прочитал руководство пользователя
- reader:
- name: Читатель
- description: Прочитал каждое сообщение в теме с более чем 100 сообщениями
- popular_link:
- name: Популярная ссылка
- description: Оставил внешнюю ссылку с более чем 50 кликов
- hot_link:
- name: Горячая ссылка
- description: Оставил внешнюю ссылку с более чем 300 кликов
+ google_search: |
+
+
+
+
diff --git a/config/locales/client.sk.yml b/config/locales/client.sk.yml
new file mode 100644
index 00000000000..ca49d8f9b13
--- /dev/null
+++ b/config/locales/client.sk.yml
@@ -0,0 +1,2728 @@
+# encoding: utf-8
+#
+# Never edit this file. It will be overwritten when translations are pulled from Transifex.
+#
+# To work with us on translations, join this project:
+# https://www.transifex.com/projects/p/discourse-org/
+
+sk:
+ js:
+ number:
+ format:
+ separator: ","
+ delimiter: ","
+ human:
+ storage_units:
+ format: '%n %u'
+ units:
+ byte:
+ one: bajt
+ few: bajtov
+ other: bajtov
+ gb: GB
+ kb: KB
+ mb: MB
+ tb: TB
+ short:
+ thousands: "{{number}}tis"
+ millions: "{{number}}mil"
+ dates:
+ time: "h:mm a"
+ long_no_year: "MMM D h:mm a"
+ long_no_year_no_time: "MMM D"
+ full_no_year_no_time: "MMMM Do"
+ long_with_year: "MMM D, YYYY h:mm a"
+ long_with_year_no_time: "MMM D, YYYY"
+ full_with_year_no_time: "MMMM Do, YYYY"
+ long_date_with_year: "MMM D, 'YY LT"
+ long_date_without_year: "MMM D, LT"
+ long_date_with_year_without_time: "MMM D, 'YY"
+ long_date_without_year_with_linebreak: "MMM D
LT"
+ long_date_with_year_with_linebreak: "MMM D, 'YY
LT"
+ tiny:
+ half_a_minute: "< 1m"
+ less_than_x_seconds:
+ one: "< 1s"
+ few: "< %{count}s"
+ other: "< %{count}s"
+ x_seconds:
+ one: "1s"
+ few: "1s"
+ other: "%{count}s"
+ less_than_x_minutes:
+ one: "< 1m"
+ few: "< 1m"
+ other: "< %{count}m"
+ x_minutes:
+ one: "1m"
+ few: "%{count}m"
+ other: "%{count}m"
+ about_x_hours:
+ one: "1h"
+ few: "%{count}h"
+ other: "%{count}h"
+ x_days:
+ one: "1d"
+ few: "%{count}d"
+ other: "%{count}d"
+ about_x_years:
+ one: "1r"
+ few: "%{count}r"
+ other: "%{count}r"
+ over_x_years:
+ one: "> 1r"
+ few: "> %{count}r"
+ other: "> %{count}r"
+ almost_x_years:
+ one: "1r"
+ few: "%{count}r"
+ other: "%{count}r"
+ date_month: "MMM D"
+ date_year: "MMM 'YY"
+ medium:
+ x_minutes:
+ one: "1 minúta"
+ few: "%{count} minúty"
+ other: "%{count} minút"
+ x_hours:
+ one: "1 hodina"
+ few: "%{count} hodiny"
+ other: "%{count} hodín"
+ x_days:
+ one: "1 deň"
+ few: "%{count} dni"
+ other: "%{count} dní"
+ date_year: "MMM D, 'YY"
+ medium_with_ago:
+ x_minutes:
+ one: "pred 1 minútou"
+ few: "pred %{count} minútami"
+ other: "pred %{count} minútami"
+ x_hours:
+ one: "pred 1 hodinou"
+ few: "pred %{count} hodinami"
+ other: "pred %{count} hodinami"
+ x_days:
+ one: "pred 1 dňom"
+ few: "pred %{count} dňami"
+ other: "pred %{count} dňami"
+ later:
+ x_days:
+ one: "1 deň neskôr"
+ few: "%{count} dni neskôr"
+ other: "%{count} dní neskôr"
+ x_months:
+ one: "1 mesiac neskôr"
+ few: "%{count} mesiace neskôr"
+ other: "%{count} mesiacov neskôr"
+ x_years:
+ one: "1 rok neskôr"
+ few: "%{count} roky neskôr"
+ other: "%{count} rokov neskôr"
+ previous_month: 'Predchádzajúci mesiac'
+ next_month: 'Nasledujúci mesiac'
+ share:
+ topic: 'zdieľaj odkaz na túto tému'
+ post: 'príspevok #%{postNumber}'
+ close: 'zatvoriť'
+ twitter: 'zdieľaj odkaz na Twitteri'
+ facebook: 'zdieľaj odkaz na Facebooku'
+ google+: 'zdieľaj odkaz na Google+'
+ email: 'pošli odkaz emailom'
+ action_codes:
+ split_topic: "rozdeľ tému %{when}"
+ invited_user: "pozvaný %{who} %{when}"
+ removed_user: "odstránený %{who} %{when}"
+ autoclosed:
+ enabled: 'uzavreté %{when}'
+ disabled: 'otvorené %{when}'
+ closed:
+ enabled: 'uzavreté %{when}'
+ disabled: 'otvorené %{when}'
+ archived:
+ enabled: 'archivované %{when}'
+ disabled: 'odarchivované %{when}'
+ pinned:
+ enabled: 'pripnuné %{when}'
+ disabled: 'odopnuté %{when}'
+ pinned_globally:
+ enabled: 'globálne pripnuté %{when}'
+ disabled: 'odopnuté %{when}'
+ visible:
+ enabled: 'zverejnené %{when}'
+ disabled: 'stiahnuté %{when}'
+ topic_admin_menu: "akcie administrátora témy"
+ emails_are_disabled: "Odosielanie emailov bolo globálne vypnuté administrátorom. Žiadne emailové notifikácie nebudú odoslané."
+ s3:
+ regions:
+ us_east_1: "USA Východ (S. Virginia)"
+ us_west_1: "USA Západ (S. Kalifornia)"
+ us_west_2: "USA Západ (Oregon)"
+ us_gov_west_1: "AWS GovCloud (USA)"
+ eu_west_1: "EU (Írsko)"
+ eu_central_1: "EU (Frankfurt)"
+ ap_southeast_1: "Ázia Tichomorie (Singapur)"
+ ap_southeast_2: "Ázia Tichomorie (Sydney)"
+ ap_northeast_1: "Ázia Tichomorie (Tokio)"
+ ap_northeast_2: "Asia Pacific (Soul)"
+ sa_east_1: "Južná Amerika (Sao Paulo)"
+ edit: 'upraviť názov a kategóriu témy'
+ not_implemented: "Táto funkcia ešte bohužiaľ nie je implementovaná."
+ no_value: "Nie"
+ yes_value: "Áno"
+ generic_error: "Bohužiaľ nastala chyba."
+ generic_error_with_reason: "Nastala chyba: %{error}"
+ sign_up: "Registrácia"
+ log_in: "Prihlásenie"
+ age: "Vek"
+ joined: "Registovaný"
+ admin_title: "Administrácia"
+ flags_title: "Nahlásenie"
+ show_more: "zobraz viac"
+ show_help: "možnosti"
+ links: "Odkazy"
+ links_lowercase:
+ one: "odkaz"
+ few: "odkazy"
+ other: "odkazy"
+ faq: "FAQ"
+ guidelines: "Pokyny"
+ privacy_policy: "Ochrana súkromia"
+ privacy: "Súkromie"
+ terms_of_service: "Podmienky používania"
+ mobile_view: "Mobilná verzia"
+ desktop_view: "Desktop verzia"
+ you: "Vy"
+ or: "alebo"
+ now: "práve teraz"
+ read_more: 'čítaj ďalej'
+ more: "Viac"
+ less: "Menej"
+ never: "nikdy"
+ every_30_minutes: "každých 30 mintút"
+ every_hour: "každú hodinu"
+ daily: "denne"
+ weekly: "týždenne"
+ every_two_weeks: "každé dva týždne"
+ every_three_days: "každé tri dni"
+ max_of_count: "najviac {{count}}"
+ alternation: "alebo"
+ character_count:
+ one: "1 znak"
+ few: "{{count}} znakov"
+ other: "{{count}} znakov"
+ suggested_topics:
+ title: "Odporúčané témy"
+ pm_title: "Odporúčané správy"
+ about:
+ simple_title: "O fóre"
+ title: "O %{title}"
+ stats: "Štatistiky stránky"
+ our_admins: "Naši admini"
+ our_moderators: "Naši moderátori"
+ stat:
+ all_time: "Za celú dobu"
+ last_7_days: "Posledných 7 dní"
+ last_30_days: "Posledných 30 dní"
+ like_count: "Páči sa mi"
+ topic_count: "Témy"
+ post_count: "Príspevky"
+ user_count: "Noví používatelia"
+ active_user_count: "Aktívni používatelia"
+ contact: "Kontaktujte nás"
+ contact_info: "V prípade kritickej chyby alebo naliehavej záležitosti nás prosím konaktujte na %{contact_info}."
+ bookmarked:
+ title: "Záložka"
+ clear_bookmarks: "Odstrániť záložku"
+ help:
+ bookmark: "Kliknutím vložíte záložku na prvý príspevok tejto témy"
+ unbookmark: "Kliknutím odstánite všetky záložky v tejto téme"
+ bookmarks:
+ not_logged_in: "pre pridanie záložky sa musíte prihlásiť"
+ created: "záložka bola pridaná"
+ not_bookmarked: "príspevok je prečítaný, kliknite pre pridanie záložky"
+ last_read: "toto je posledný prečítaný príspevok, kliknite pre pridanie záložky"
+ remove: "Odstrániť záložku"
+ confirm_clear: "Ste si istý že chcete odstrániť všetky záložky z tejto témy?"
+ topic_count_latest:
+ one: "1 nová alebo upravená téma."
+ few: "{{count}} nové alebo upravené témy."
+ other: "{{count}} nových alebo upravených tém."
+ topic_count_unread:
+ one: "1 neprečítaná téma."
+ few: "{{count}} neprečítané témy."
+ other: "{{count}} neprečítaných tém."
+ topic_count_new:
+ one: "1 nová téma."
+ few: "{{count}} nové témy."
+ other: "{{count}} nových tém."
+ click_to_show: "Kliknite pre zobrazenie."
+ preview: "náhľad"
+ cancel: "zrušiť"
+ save: "Uložiť zmeny"
+ saving: "Ukladám zmeny..."
+ saved: "Zmeny uložené."
+ upload: "Upload"
+ uploading: "Upload prebieha..."
+ uploading_filename: "Nahrávám {{filename}}..."
+ uploaded: "Upload úspešne dokončený."
+ enable: "Zapnúť"
+ disable: "Vypnúť"
+ undo: "Späť"
+ revert: "Vrátiť zmeny"
+ failed: "Nepodarilo sa"
+ switch_to_anon: "Anonymný mód"
+ switch_from_anon: "Opustiť anonymný mód"
+ banner:
+ close: "Zamietnuť tento banner."
+ edit: "Upraviť tento banner >>"
+ choose_topic:
+ none_found: "Nenašli sa žiadne témy."
+ title:
+ search: "Hľadaj tému podľa názvu, url alebo id:"
+ placeholder: "sem napíšte názov témy"
+ queue:
+ topic: "Téma:"
+ approve: 'Schváliť'
+ reject: 'Zamietnuť'
+ delete_user: 'Odstrániť používateľa'
+ title: "Vyžaduje schválenie"
+ none: "Žiadne príspevky na kontrolu."
+ edit: "Upraviť"
+ cancel: "Zrušiť"
+ view_pending: "zobraziť príspevky čakajúce na schválenie"
+ has_pending_posts:
+ one: "Téma má {{count}} príspevkov čakajúci na schválenie"
+ few: "Téma má {{count}} príspevky čakajúce na schválenie"
+ other: "Téma má {{count}} príspevkov čakajúcich na schválenie"
+ confirm: "Uložiť zmeny"
+ delete_prompt: "Táto akcia zmaže všetky príspevky, zablokuje e-mail a IP adresu užívateľa %{username}. Ste si istý, že chcete zmazať tohto užívateľa? "
+ approval:
+ title: "Príspevok vyžaduje schválenie"
+ description: "Váš príspevok sme obdžali, ale skôr než bude zverejnený musí byť schválený moderátorom. Prosíme o trpezlivosť."
+ pending_posts:
+ one: "Máte 1 neprečítaný príspevok."
+ few: "Máte {{count}} neprečítané príspevky."
+ other: "Máte {{count}} neprečítaných príspevkov."
+ ok: "OK"
+ user_action:
+ user_posted_topic: "{{user}} založil tému"
+ you_posted_topic: "Vy ste založili tému"
+ user_replied_to_post: "{{user}} odpovedal na {{post_number}}"
+ you_replied_to_post: "Vy ste odpovedali na {{post_number}}"
+ user_replied_to_topic: "{{user}} odpovedal na tému"
+ you_replied_to_topic: "Vy ste odpovedali natému"
+ user_mentioned_user: "{{user}} spomenul {{another_user}}"
+ user_mentioned_you: "{{user}} spomenul Vás"
+ you_mentioned_user: "Vy ste spomenuli {{another_user}}"
+ posted_by_user: "Príspevok od {{user}}"
+ posted_by_you: "Príspevok od Vás"
+ sent_by_user: "Poslané od {{user}}"
+ sent_by_you: "Poslané Vami"
+ directory:
+ filter_name: "filtrovať podľa používateľského mena"
+ title: "Používatelia"
+ likes_given: "Rozdané"
+ likes_received: "Prijaté"
+ topics_entered: "Navštívené"
+ topics_entered_long: "Navšívených tém"
+ time_read: "Čas strávený čítaním"
+ topic_count: "Témy"
+ topic_count_long: "Vytvorených tém"
+ post_count: "Odpovede"
+ post_count_long: "Odpovedí"
+ no_results: "Žiadne výsledky"
+ days_visited: "Návštev"
+ days_visited_long: "Navštívených dní"
+ posts_read: "Prečítané"
+ posts_read_long: "Prečítaných príspevkov"
+ total_rows:
+ one: "1 užívateľ"
+ few: "%{count} užívatelia"
+ other: "%{count} užívateľov"
+ groups:
+ empty:
+ posts: "Neexistuje žiadny príspevok od člena tejto skupiny."
+ members: "Táto skupina neobsahuje žiadnych členov."
+ mentions: "Táto skupina nieje nikde spomenutá."
+ messages: "Neexistujú žiadne správy pre túto skupinu."
+ topics: "Neexistuje žiadna téma od členov tejto skupiny."
+ add: "Pridať"
+ selector_placeholder: "Pridať členov"
+ owner: "vlastník"
+ visible: "Skupina je viditeľná všetkým používateľom"
+ title:
+ one: "skupina"
+ few: "skupiny"
+ other: "skupiny"
+ members: "Členovia"
+ posts: "Príspevky"
+ alias_levels:
+ title: "Kto môže poslať správu a @uváadzať túto skupinu?"
+ nobody: "Nikto"
+ only_admins: "Iba administrátori"
+ mods_and_admins: "Iba moderátori a administrátori"
+ members_mods_and_admins: "Iba členovia skupiny, moderátori a administrátori"
+ everyone: "Každý"
+ trust_levels:
+ title: "Stupeň dôvery automaticky pridelený členom po ich pridaní:"
+ none: "Žiadny"
+ notifications:
+ watching:
+ title: "Pozerať"
+ description: "Budete upozornený na každý nový príspevok vo všetkých správach a zobrazí sa počet nových odpovedí."
+ tracking:
+ title: "Sledovať"
+ description: "Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie a zobrazí sa počet nových odpovedí."
+ regular:
+ title: "Bežný"
+ description: "Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie."
+ muted:
+ title: "Ignorovaný"
+ description: "Nikdy nebudete upozornení na nič ohľadom nových tém v tejto skupine."
+ user_action_groups:
+ '1': "Rozdaných 'páči sa mi'"
+ '2': "Obdržaných 'páči sa mi'"
+ '3': "Záložky"
+ '4': "Témy"
+ '5': "Odpovede"
+ '6': "Odozvy"
+ '7': "Zmienky"
+ '9': "Citácie"
+ '11': "Úpravy"
+ '12': "Odoslané správy"
+ '13': "Prijaté správy"
+ '14': "Čakajúce správy"
+ categories:
+ all: "všetky kategórie"
+ all_subcategories: "všetky"
+ no_subcategory: "žiadne"
+ category: "Kategória"
+ category_list: "Zobraziť zoznam kategórií"
+ reorder:
+ title: "Usporiadať Kategórie"
+ title_long: "Usporiadať zoznam kategórií"
+ fix_order: "Pevné pozície"
+ fix_order_tooltip: "Nie všetky kategórie majú unikátne číslo pozície, čo môže zpôsobovať neočakávané výsledky."
+ save: "Ulož poradie"
+ apply_all: "Použi"
+ position: "Pozícia"
+ posts: "Príspevky"
+ topics: "Témy"
+ latest: "Najnovšie"
+ latest_by: "najnovšie podľa"
+ toggle_ordering: "zmeniť radenie"
+ subcategories: "Podkategórie"
+ topic_stats: "Počet nových tém."
+ topic_stat_sentence:
+ one: "%{count} nová téma za posledných %{unit}."
+ few: "%{count} nové témy za posledných %{unit}."
+ other: "%{count} nových tém za posledných %{unit}."
+ post_stats: "Počet nových príspevkov."
+ post_stat_sentence:
+ one: "%{count} nový príspevok za posledných %{unit}."
+ few: "%{count} nové príspevky za posledných %{unit}."
+ other: "%{count} nových príspevkov za posledných %{unit}."
+ ip_lookup:
+ title: Vyhľadávanie podľa IP adresy
+ hostname: Hostname
+ location: Lokácia
+ location_not_found: (neznáma)
+ organisation: Organizácia
+ phone: Telefón
+ other_accounts: "Ostatné účty s touto IP adresou:"
+ delete_other_accounts: "Zmazaných %{count}"
+ username: "používateľské meno"
+ trust_level: "Dôvera"
+ read_time: "čas strávený čítaním"
+ topics_entered: "založených tém"
+ post_count: "# príspevkov"
+ confirm_delete_other_accounts: "Ste si istý že chcete zmazať tieto účty?"
+ user_fields:
+ none: "(vyberte možnosť)"
+ user:
+ said: "{{username}}:"
+ profile: "Profil"
+ mute: "Ignorovať"
+ edit: "Upraviť nastavenia"
+ download_archive: "Stiahnutie mojich prípevkov"
+ new_private_message: "Nová správa"
+ private_message: "Správa"
+ private_messages: "Správy"
+ activity_stream: "Aktivita"
+ preferences: "Nastavenia"
+ expand_profile: "Rozbaľ"
+ bookmarks: "Záložky"
+ bio: "O mne"
+ invited_by: "Pozvaný od"
+ trust_level: "Stupeň dôvery"
+ notifications: "Upozornenia"
+ statistics: "Štatistiky"
+ desktop_notifications:
+ label: "Upozornenia na pracovnej ploche"
+ not_supported: "Tento prehliadač nepodporuje upozornenia. Prepáčte."
+ perm_default: "Zapnúť upozornenia"
+ perm_denied_btn: "Prístup zamietnutý"
+ perm_denied_expl: "Povolenie pre zobrazenie notifikácií ste zakázali. Notifikácie povolíte v nastaveniach vášho prehliadača."
+ disable: "Zakázať upozornenia"
+ enable: "Povoliť upozornenia"
+ each_browser_note: "Poznámka: Toto nastavenie musíte zmeniť v každom používanom prehliadači."
+ dismiss_notifications: "Označiť všetky ako prečítané"
+ dismiss_notifications_tooltip: "Označiť všetky neprečítané upozornenia ako prečítané"
+ disable_jump_reply: "Neskočiť na môj príspevok po odpovedi"
+ dynamic_favicon: "Zobraziť počet nových/upravených tém na ikone prehliadača"
+ edit_history_public: "Povoliť ostatným užívateľom zobrazenie všetkých verzií môjho príspevku"
+ external_links_in_new_tab: "Otvoriť všekty externé odkazy v novej záložke"
+ enable_quoting: "Umožniť odpoveď s citáciou z označeného textu"
+ change: "zmeniť"
+ moderator: "{{user}} je moderátor"
+ admin: "{{user}} je administrátor"
+ moderator_tooltip: "Tento používateľ je moderátor"
+ admin_tooltip: "Tento používateľ je administrátor"
+ blocked_tooltip: "Tento používateľ je zablokovaný"
+ suspended_notice: "Tento používateľ je suspendovaný do {{date}}"
+ suspended_reason: "Dôvod:"
+ github_profile: "Github"
+ mailing_list_mode: "Pošli mi email pri každom novom príspevku (pokiaľ neignorujem tému alebo kategóriu)"
+ watched_categories: "Sledované"
+ watched_categories_instructions: "Budete automaticky sledovať všetky nové témy v týchto kategóriách. Budete upozornený na všetky nové príspevky a témy, a zároveň bude vedľa témy zobrazený počet nových príspevkov."
+ tracked_categories: "Sledované"
+ tracked_categories_instructions: "Budete automaticky sledovať všetky nové témy v týchto kategóriách. Počet nových príspevkov sa bude zobraziť vedľa témy."
+ muted_categories: "Ignorovaný"
+ muted_categories_instructions: "Nebudete informovaní o udalostiach v nových témach týchto kategórií. Tieto témy sa zároveň nebudú zobrazovať v zozname posledných udalostí."
+ delete_account: "Vymazať môj účet"
+ delete_account_confirm: "Ste si istý, že chcete permanentne vymazať váš účet? Táto akcia je nenávratná."
+ deleted_yourself: "Váš účet bol úspešne vymazaný."
+ delete_yourself_not_allowed: "Momentálne nie je možné vymazať váš učet. Kontaktujte administrátora a ten vám ho vymaže."
+ unread_message_count: "Správy"
+ admin_delete: "Vymazať"
+ users: "Používatelia"
+ muted_users: "Ignorovaný"
+ muted_users_instructions: "Pozastaviť všetky notifikácie od týchto užívateľov."
+ muted_topics_link: "Zobraziť umlčané témy"
+ staff_counters:
+ flags_given: "nápomocné značky"
+ flagged_posts: "označkované príspevky"
+ deleted_posts: "vymazané príspevky"
+ suspensions: "pozastavenia"
+ warnings_received: "upozornenia"
+ messages:
+ all: "Všetky"
+ inbox: "Prijatá pošta"
+ sent: "Odoslané"
+ archive: "Archív"
+ groups: "Moje skupiny"
+ bulk_select: "Označ správy"
+ move_to_inbox: "Presuň do prijatej pošty"
+ move_to_archive: "Archív"
+ failed_to_move: "Zlyhalo presunutie označených správ (možno je chyba vo vašom pripojení)"
+ select_all: "Označ všetky"
+ change_password:
+ success: "(email odoslaný)"
+ in_progress: "(email sa odosiela)"
+ error: "(chyba)"
+ action: "Odoslať email na reset hesla"
+ set_password: "Nastaviť heslo"
+ change_about:
+ title: "Upraviť O mne"
+ error: "Pri úprave hodnoty nastala chyba"
+ change_username:
+ title: "Zmeniť užívateľské meno"
+ confirm: "Ak si zmeníte vaše užívateľské meno, všetky predchádajúce cítacie vašich príspevkov a @zmienok prestanú platiť. Ste si určite istý, že to chcete?"
+ taken: "Sorry, toto užívateľské meno je obsadené."
+ error: "Pri zmene užívateľského mena prišlo k chybe."
+ invalid: "Toto užívateľské meno nie je platné. Musí obsahovať iba znaky a čísla."
+ change_email:
+ title: "Zmeniť email"
+ taken: "Prepáčte, tento email je už obsadený."
+ error: "Pri zmene emailu nastala chyba. Je možné, že je email už použitý?"
+ success: "Na email sme odoslali správu. Nasledujte prosím inštrukcie pre potvrdenie."
+ change_avatar:
+ title: "Zmeniť váš profilový obrázok"
+ gravatar: "Gravatar, podľa"
+ gravatar_title: "Zmeňte váš avatar na webe Gravatar "
+ refresh_gravatar_title: "Obnoviť váš Gravatar"
+ letter_based: "Systém pridelil profilový obrázok"
+ uploaded_avatar: "Vlastný obrázok"
+ uploaded_avatar_empty: "Pridať vlastný obrázok"
+ upload_title: "Nahrať váš obrázok"
+ upload_picture: "Nahrať obrázok"
+ image_is_not_a_square: "Upozornenie: váš obrázok sme orezali; mal rozdielnu šírku a výšku"
+ cache_notice: "Váš profilový obrázok bol úspešne zmenený, ale jeho zobrazenie môže chvíľu trvať kvôli vyrovnávacej pamäti prehliadača."
+ change_profile_background:
+ title: "Pozadie profilu"
+ instructions: "Pozadie profilu bude vystredené a s predvolenou šírkou 850px."
+ change_card_background:
+ title: "Pozadie karty používateľa"
+ instructions: "Obrázky pozadia budú vystredené a s predvolenou šírkou 590px."
+ email:
+ title: "Email"
+ instructions: "Nikdy verejne nezobrazené"
+ ok: "Pošleme vám email pre potvrdenie"
+ invalid: "Zadajte prosím platný email"
+ authenticated: "Váš email bude autentifikovaný pomocou {{provider}}"
+ frequency_immediately: "Odošleme vám email ak ste neprečítali to, čo vám posielame emailom."
+ frequency:
+ one: "Odošleme vám email iba ak sme vás nevideli poslednú minútu"
+ few: "Odošleme vám email iba ak sme vás nevideli posledné {{count}} minúty."
+ other: "Odošleme vám email iba ak sme vás nevideli posledných {{count}} minút"
+ name:
+ title: "Meno"
+ instructions: "Vaše celé meno (nepovinné)"
+ instructions_required: "Vaše celé meno"
+ too_short: "Vaše meno je prikrátke"
+ ok: "Vaše meno je v poriadku"
+ username:
+ title: "Užívateľské meno"
+ instructions: "Unikátne, bez medzier, krátke"
+ short_instructions: "Ostatní vás môžu označiť ako @{{username}}"
+ available: "Vaše užívateľské meno je voľné"
+ global_match: "Email zodpovedá registrovanému užívateľskému menu"
+ global_mismatch: "Už zaregistrované. Skúste {{suggestion}}?"
+ not_available: "Nie je k dispozícii. Skúste {{suggestion}}?"
+ too_short: "Vaše užívateľské meno je prikrátke"
+ too_long: "Vaše užívateľské meno je pridlhé"
+ checking: "Kontrolujeme dostupnosť užívateľského meno"
+ enter_email: 'Užívateľské meno nájdené, zadajte zodpovedajúci email'
+ prefilled: "Email zodpovedá tomuto registrovanému užívateľskému menu"
+ locale:
+ title: "Jazyk rozhrania"
+ instructions: "Jazyk úžívateľského rozhrania. Zmení sa po obnovení stránky."
+ default: "(predvolené)"
+ password_confirmation:
+ title: "Heslo znova"
+ last_posted: "Posledný príspevok"
+ last_emailed: "Posledný odemailovaný"
+ last_seen: "Videný"
+ created: "Spojený"
+ log_out: "Odhlásiť sa"
+ location: "Poloha"
+ card_badge:
+ title: "Odznak karty užívateľa"
+ website: "Webová stránka"
+ email_settings: "Email"
+ like_notification_frequency:
+ title: "Oznámiť pri lajknutí"
+ always: "Vždy"
+ never: "Nikdy"
+ email_previous_replies:
+ always: "vždy"
+ never: "nikdy"
+ email_digests:
+ title: "Ak to tu nenavštívim, pošlite mi emailový súhrn s novinkami:"
+ every_30_minutes: "každých 30 mintút"
+ every_hour: "každú hodinu"
+ daily: "denne"
+ every_three_days: "každé tri dni"
+ weekly: "týždenne"
+ every_two_weeks: "každé dva týždne"
+ email_direct: "Pošlite mi email ak ma niekto cituje, odpovie na môj príspevok, spomenie moje @užívateľské meno alebo ma pozve do témy."
+ email_private_messages: "Pošlite mi email keď mi niekto pošle správu"
+ email_always: "Pošlite mi emailovú notifikáciu aj keď som aktívny na stránke"
+ other_settings: "Ostatné"
+ categories_settings: "Kategórie"
+ new_topic_duration:
+ label: "Považuj témy za nové keď"
+ not_viewed: "Ešte som ich nevidel"
+ last_here: "vytvorené odkedy som tu bol naposledy"
+ after_1_day: "vytvorené za posledný deň"
+ after_2_days: "vytvorené posledné 2 dni"
+ after_1_week: "vytvorené za posledný týždeň"
+ after_2_weeks: "vytvorené za posledné 2 týždne"
+ auto_track_topics: "Automaticky sleduj témy, do ktorých vstúpim"
+ auto_track_options:
+ never: "nikdy"
+ immediately: "ihneď"
+ after_30_seconds: "po 30 sekundách"
+ after_1_minute: "po 1 minúte"
+ after_2_minutes: "po 2 minútach"
+ after_3_minutes: "po 3 minútach"
+ after_4_minutes: "po 4 minútach"
+ after_5_minutes: "po 5 minútach"
+ after_10_minutes: "po 10 minútach"
+ invited:
+ search: "začni písať pre hľadanie pozvánok"
+ title: "Pozvánky"
+ user: "Pozvaný užívateľ"
+ sent: "Odoslané"
+ none: "Nemáte žiadne čakajúce pozvánky."
+ truncated:
+ one: "Zobrazuje sa prvá pozvánka."
+ few: "Zobrazujú sa prvé {{count}} pozvánky."
+ other: "Zobrazuje sa prvých {{count}} pozvánok."
+ redeemed: "Použité pozvánky"
+ redeemed_tab: "Použitá"
+ redeemed_tab_with_count: "Použité ({{count}})"
+ redeemed_at: "Použitá"
+ pending: "Čakajúce pozvánky"
+ pending_tab: "Čakajúca"
+ pending_tab_with_count: "Čakajúce ({{count}})"
+ topics_entered: "Zobrazených tém"
+ posts_read_count: "Prečítaných príspevkov"
+ expired: "Táto pozvánka vypršala."
+ rescind: "Odstrániť"
+ rescinded: "Pozvánka odstránená"
+ reinvite: "Poslať pozvánku znovu"
+ reinvited: "Poslať pozvánku znovu"
+ time_read: "Doba čítania"
+ days_visited: "Dní na stránke"
+ account_age_days: "Vek účtu v dňoch"
+ create: "Poslať Pozvánku"
+ generate_link: "Kopírovať Odkaz Pozvánky"
+ generated_link_message: '
Odkaz pre pozvánku bol úspešne vytvorený!
Odkaz je platný iba pre túto adresu: %{invitedEmail}
' + bulk_invite: + none: "Zatiaľ ste tu nikoho nepozvali. Môžete odosielať pozvánky individuálne alebo pozvať skupinu ľudí naraz pomocou nahratia súboru." + text: "Hromadná pozvánka zo súboru" + uploading: "Prebieha nahrávanie..." + success: "Súbor bol úspešne odoslaný. Keď sa nahrávanie dokončí, budete na to upozornený cez správu." + error: "Pri nahrávaní '{{filename}}' sa vyskytla chyba: {{message}}" + password: + title: "Heslo" + too_short: "Vaše heslo je príliš krátke." + common: "Toto heslo je príliš časté." + same_as_username: "Vaše heslo je rovnaké ako používateľské meno." + same_as_email: "Vaše heslo je rovnaké ako e-mail." + ok: "Vaše heslo je v poriadku." + instructions: "Minimálne %{count} znakov." + summary: + title: "Sumarizácia" + stats: "Štatistiky" + top_replies: "Najvýznamnejšie odpovede" + more_replies: "Viac odpovedí" + top_topics: "Najvýznamnejšie témy" + more_topics: "Viac tém" + top_badges: "Najvýznamnejšie odznaky" + more_badges: "Viac odznakov" + associated_accounts: "Prihlásenia" + ip_address: + title: "Posledná IP adresa" + registration_ip_address: + title: "IP adresa pri registrácii" + avatar: + title: "Profilový obrázok" + header_title: "profil, správy, záložky a nastavenia" + title: + title: "Názov" + filters: + all: "Všetky" + stream: + posted_by: "Autor príspevku" + sent_by: "Odoslané používateľom" + private_message: "správa" + the_topic: "téma" + loading: "Prebieha načítavanie..." + errors: + prev_page: "pri pokuse o načítanie" + reasons: + network: "Chyba siete" + server: "Chyba na serveri" + forbidden: "Prístup zamietnutý" + unknown: "Chyba" + not_found: "Stránka nenájdená" + desc: + network: "Skontrolujte, prosím, svoje pripojenie." + network_fixed: "Zdá sa, že sme späť." + server: "Kód chyby: {{status}}" + forbidden: "Nemáte oprávnenie na zobrazenie." + not_found: "Hopla, aplikácia sa pokúsila načítať adresu, ktorá neexistuje." + unknown: "Niečo sa pokazilo." + buttons: + back: "Späť" + again: "Skúsiť znova" + fixed: "Načítať stránku" + close: "Zatvoriť" + assets_changed_confirm: "Táto stránka bola práve aktualizovaná. Obnoviť na najnovšiu verziu?" + logout: "Boli ste odhlásený." + refresh: "Obnoviť" + read_only_mode: + enabled: "Stránky sú v móde iba na čítanie. Prosím pokračujte v prezeraní, ale iné akcie, ako odpovedanie, dávanie páči sa mi alebo niektové ďalšie sú teraz vypnuté." + login_disabled: "Keď je zapnutý mód iba na čítanie, prihlásenie nie je možné." + logout_disabled: "Odhlásenie nie je možné, kým je stránka v móde iba na čítanie." + too_few_topics_and_posts_notice: "Začnime diskusiu! Je tu %{currentTopics} / %{requiredTopics} tém a %{currentPosts} / %{requiredPosts} príspevkov. Noví návštevníci potrebujú mať témy, ktoré môžu čítať a na ktoré budú reagovať." + too_few_topics_notice: "Začnime diskusiu! Je tu %{currentTopics} / %{requiredTopics} tém. Noví návštevníci potrebujú mať témy, ktoré môžu čítať a na ktoré budú reagovať." + too_few_posts_notice: "Začnime diskusiu! Je tu %{currentPosts} / %{requiredPosts} príspevkov. Noví návštevníci potrebujú mať témy, ktoré môžu čítať a na ktoré budú reagovať." + learn_more: "zistiť viac..." + year: 'rok' + year_desc: 'témy vytvorené za posledných 365 dní' + month: 'mesiac' + month_desc: 'témy vytvorené za posledných 30 dní' + week: 'týždeň' + week_desc: 'témy vytvorené za posledných 7 dní' + day: 'deň' + first_post: Prvý príspevok + mute: Ignorovať + unmute: Prestať ignorovať + last_post: Posledný príspevok + last_reply_lowercase: posledná odpoveď + replies_lowercase: + one: odpoveď + few: odpovede + other: odpovedí + signup_cta: + sign_up: "Registrovať sa" + hide_session: "Pripomenúť zajtra" + hide_forever: "nie, ďakujem" + hidden_for_session: "Fajn, opýtam sa vás to zajtra. Stále môžete na vytvorenie účtu použiť aj možnosť 'Prihlásenie'." + intro: "Zdravím! :heart_eyes: Vyzerá, že sa vám diskusia páči, ale stále nie ste prihlásený na svojom účte." + value_prop: "Keď si vytvoríte účet, zapamätáme si čo ste čítali, takže sa môžete vrátiť presne tam, kde ste prestali. Okrem toho dostanete upozornenie tu, aj na váš e-mail, vždy keď pribudnú nové príspevky. A môžete označiť príspevky ktoré sa vám páčia. :heartbeat:" + summary: + enabled_description: "Pozeráte sa na zhrnutie tejto témy: najzaujímavejšie príspevky podľa výberu komunity." + enable: 'Zhrnutie tejto témy' + disable: 'Zobraziť všetky príspevky' + deleted_filter: + enabled_description: "Táto téma obsahuje zmazané príspevky, ktoré boli skryté." + disabled_description: "Zmazané príspevky sa v téme zobrazujú." + enable: "Skryť zmazané príspevky" + disable: "Zobraziť zmazané príspevky" + private_message_info: + title: "Správa" + invite: "Pozvať ostatných..." + remove_allowed_user: "Skutočne chcete odstrániť {{name}} z tejto správy?" + email: 'Email' + username: 'Používateľské meno' + last_seen: 'Videné' + created: 'Vytvorené' + created_lowercase: 'vytvorené' + trust_level: 'Stupeň dôvery' + search_hint: 'používateľské meno, email alebo IP adresa' + create_account: + title: "Vytvoriť nový účet" + failed: "Niečo sa pokazilo, možno je tento e-mail už registrovaný, vyskúšajte odkaz pre zabudnuté heslo" + forgot_password: + title: "Obnovenie hesla" + action: "Zabudol som svoje heslo" + invite: "Napíšte vaše používateľské meno alebo e-mailovú adresu a pošleme vám e-mail pre obnovu hesla." + reset: "Obnoviť heslo" + complete_username: "Ak je účet priradený k používateľskému menu %{username}, čoskoro dostanete e-mail s pokynmi, ako si obnoviť svoje heslo." + complete_email: "Ak je účet priradený k %{email}, čoskoro dostanete e-mail s pokynmi, ako si obnoviť svoje heslo." + complete_username_found: "Našli sme účet priradený k používateľskému menu %{username}, čoskoro dostanete e-mail s pokynmi, ako si obnoviť svoje heslo." + complete_email_found: "Našli sme účet priradený k %{email}, čoskoro dostanete e-mail s pokynmi, ako si obnoviť svoje heslo." + complete_username_not_found: "Žiadny účet nemá priradené používateľské meno %{username}" + complete_email_not_found: "Žiadny účet nie je s e-mailom %{email}" + login: + title: "Prihlásenie" + username: "Používateľ" + password: "Heslo" + email_placeholder: "e-mail alebo používateľské meno" + caps_lock_warning: "Caps Lock je zapnutý" + error: "Neznáma chyba" + rate_limit: "Pred opätovným prihlásením chvíľku počkajte." + blank_username_or_password: "Zadajte prosím svoj e-mail alebo používateľské meno a heslo." + reset_password: 'Obnoviť heslo' + logging_in: "Prebieha prihlásenie..." + or: "Alebo" + authenticating: "Prebieha overovanie..." + awaiting_confirmation: "Váš účet čaká na aktiváciu. Ak chcete zaslať aktivačný e-mail znova, použite odkaz pre zabudnuté heslo." + awaiting_approval: "Váš účet zatiaľ nebol schválený členom tímu. Keď bude schválený, dostanete e-mail." + requires_invite: "Prepáčte, ale prístup k tomuto fóru majú iba pozvaní používatelia." + not_activated: "Systém vás nemôže prihlásiť. Na emailovú adresu {{sentTo}} sme vám poslali aktivačný email. Prosím, postupujte podľa inštrukcií na aktiváciu účtu, ktoré sú uvedené v tomto emaile." + not_allowed_from_ip_address: "Nie je možné prihlásenie z tejto IP adresy." + admin_not_allowed_from_ip_address: "Nie je možné prihlásenie ako admin z tejto IP adresy." + resend_activation_email: "Kliknite sem pre opätovné odoslanie aktivačného emailu." + sent_activation_email_again: "Odoslali sme vám ďalší aktivačný email na {{currentEmail}}. Môže trvať niekoľko minút kým príde; pre istotu si skontrolujte spamový priečinok." + to_continue: "Prosím, prihláste sa" + preferences: "Na zmenu používateľských nastavení musíte byť prihlásený." + forgot: "Nepamätám si detaily môjho účtu" + google: + title: "pomocou Google" + message: "Prihlásenie pomocou Google účtu (prosím uistite sa, že vyskakovacie okná sú povolené)" + google_oauth2: + title: "pomocou Google" + message: "Prihlásenie pomocou Google účtu (prosím uistite sa, že vyskakovacie okná sú povolené)" + twitter: + title: "pomocou Twitter účtu" + message: "Prihlásenie pomocou Twitter účtu (prosím uistite sa, že vyskakovacie okná sú povolené)" + instagram: + title: "so službou Instagram" + message: "Prihlásenie pomocou Instagram účtu (prosím uistite sa, že vyskakovacie okná sú povolené)" + facebook: + title: "pomocou stránky Facebook" + message: "Prihlásenie pomocou Facebook účtu (prosím uistite sa, že vyskakovacie okná sú povolené)" + yahoo: + title: "pomocou Yahoo" + message: "Prihlásenie pomocou Yahoo účtu (prosím uistite sa, že vyskakovacie okná sú povolené)" + github: + title: "pomocou GitHub" + message: "Prihlásenie pomocou GitHub účtu (prosím uistite sa, že vyskakovacie okná sú povolené)" + apple_international: "Apple/Medzinárodné" + google: "Google" + twitter: "Twitter" + emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' + composer: + emoji: "Emoji :)" + more_emoji: "viac ..." + options: "Možnosti" + whisper: "šepot" + add_warning: "Toto je oficiálne varovanie." + toggle_whisper: "Prepnúť šepot" + posting_not_on_topic: "Na akú tému chcete odpovedať?" + saving_draft_tip: "ukladám..." + saved_draft_tip: "uložené" + saved_local_draft_tip: "uložené lokálne" + similar_topics: "Vaša téma je podobná..." + drafts_offline: "offline koncepty" + group_mentioned: "Použitím tejto {{group}} , upozorníte {{count}} ľudí." + error: + title_missing: "Názov je povinný" + title_too_short: "Názov musí mať minimálne {{min}} znakov" + title_too_long: "Názov nesmie byť dlhší než {{max}} znakov" + post_missing: "Príspevok nesmie byť prázdny" + post_length: "Príspevok musí mať minimálne {{min}} znakov" + try_like: 'Skúsili ste tlačítko?' + category_missing: "Musíte vybrať kategóriu" + save_edit: "Uložiť úpravy" + reply_original: "Odpovedať na pôvodnú tému" + reply_here: "Odpovedať tu" + reply: "Odpovedať" + cancel: "Zrušiť" + create_topic: "Vytvoriť tému" + create_pm: "Správa" + title: "Alebo stlačte Ctrl+Enter" + users_placeholder: "Pridať používateľa" + title_placeholder: "O čom je této diskusia v jednej stručnej vete?" + edit_reason_placeholder: "prečo upravujete?" + show_edit_reason: "(pridajte dôvod úpravy)" + reply_placeholder: "Píšte sem. Formátujte pomocou Markdown, BBCode alebo HTML. Pretiahnite alebo vložte obrázky." + view_new_post: "Zobraziť nový príspevok." + saving: "Ukladanie" + saved: "Uložené!" + saved_draft: "Návrh príspevku rozpracovaný. Vyberte na obnovenie." + uploading: "Upload prebieha..." + show_preview: 'zobraziť náhľad »' + hide_preview: '» skryť náhľad' + quote_post_title: "Citovať celý príspevok" + bold_title: "Výrazne" + bold_text: "výrazný text" + italic_title: "Zdôraznene" + italic_text: "zdôraznený text" + link_title: "Hyperlink" + link_description: "tu zadaj popis odkazu" + link_dialog_title: "Vložte hyperlink" + link_optional_text: "nepovinný názov" + link_placeholder: "http://example.com \"voliteľný text\"" + quote_title: "Úvodzovky" + quote_text: "Úvodzovky" + code_title: "Preformátovaný text" + code_text: "Odsaďte preformátovaný text 4 medzerami" + upload_title: "Upload" + upload_description: "tu zadajte popis uploadu" + olist_title: "Číslované odrážky" + ulist_title: "Odrážky" + list_item: "Položka zoznamu" + heading_title: "Nadpis" + heading_text: "Nadpis" + hr_title: "Horizonálny oddeľovač" + help: "Nápoveda úprav pre Markdown" + toggler: "skryť alebo zobraziť panel úprav" + modal_ok: "OK" + modal_cancel: "Zrušiť" + cant_send_pm: "Ľutujeme, nemôžete poslať správu pre %{username}." + admin_options_title: "Nepovinné zamestnanecké nastavenia pre túto tému" + auto_close: + label: "Čas na automatické uzavretie témy:" + error: "Prosím zadajte platnú hodnotu." + based_on_last_post: "Nezatvárať pokým posledný príspevok v téme nie je takto starý." + all: + examples: 'Zadajte číslo v hodinách (24), absolútny čas (17:30) alebo časovú značku (2013-11-22 14:00).' + limited: + units: "(# hodín)" + examples: 'Zadajte počet hodín (24).' + notifications: + title: "oznámenia o zmienkach pomocou @name, odpovede na vaše príspevky a témy, správy atď." + none: "Notifikácie sa nepodarilo načítať" + more: "zobraziť staršie upozornenia" + total_flagged: "označených príspevkov celkom" + mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" + quoted: "
{{username}} {{description}}
" + replied: "
{{username}} {{description}}
" + edited: "
{{username}} {{description}}
" + liked: "
{{username}} {{description}}
" + private_message: "
{{username}} {{description}}
" + invited_to_private_message: "
{{username}} {{description}}
" + invited_to_topic: "
{{username}} {{description}}
" + invitee_accepted: "
{{username}} prijal Vaše pozvanie
" + moved_post: "
{{username}} presunul {{description}}
" + linked: "
{{username}} {{description}}
" + granted_badge: "
Získal '{{description}}'
" + group_message_summary: + one: "
{{count}} správa vo vašej {{group_name}} schránke
" + few: "
{{count}} správy vo vašej {{group_name}} schránke
" + other: "
{{count}} správ vo vašej {{group_name}} schránke
"
+ alt:
+ mentioned: "Spomenutý od"
+ quoted: "Citovaný od"
+ replied: "Odpovedané"
+ posted: "Príspevok od"
+ edited: "Upravte Váš príspevok do"
+ liked: "Váš príspevok sa páčil"
+ private_message: "Súkromná správa od"
+ invited_to_private_message: "Pozvaný na súkromné správy od"
+ invited_to_topic: "Pozvaný k téme od"
+ invitee_accepted: "Pozvánka akceptovaná "
+ moved_post: "Váš príspevok bol presunutý "
+ linked: "Odkaz na váš príspevok"
+ granted_badge: "Priznaný odznak"
+ group_message_summary: "Správy v skupinovej schránke"
+ popup:
+ mentioned: '{{username}} vás spomenul v "{{topic}}" - {{site_title}}'
+ group_mentioned: '{{username}} vás spomenul v "{{topic}}" - {{site_title}}'
+ quoted: '{{username}} vás citoval v "{{topic}}" - {{site_title}}'
+ replied: '{{username}} vám odpovedal v "{{topic}}" - {{site_title}}'
+ posted: '{{username}} prispel v "{{topic}}" - {{site_title}}'
+ private_message: '{{username}} vám poslal súkromnú správu v "{{topic}}" - {{site_title}}'
+ linked: '{{username}} odkázal na váš príspevok z "{{topic}}" - {{site_title}}'
+ upload_selector:
+ title: "Pridať obrázok"
+ title_with_attachments: "Pridať obrázok alebo súbor"
+ from_my_computer: "Z počítača"
+ from_the_web: "Z webu"
+ remote_tip: "odkaz na obrázok"
+ remote_tip_with_attachments: "odkaz na obrázok alebo súbor {{authorized_extensions}}"
+ local_tip: "zvoľte obrázok z vášho počítača"
+ local_tip_with_attachments: "zvoľte obrázok alebo súbor z vášho počítača {{authorized_extensions}}"
+ hint: "(môžete taktiež potiahnuť a pustiť do editora pre nahratie)"
+ hint_for_supported_browsers: "môžete taktiež potiahnuť a pustiť alebo priložiť obrázky do editora"
+ uploading: "Nahrávanie"
+ select_file: "Zvoľte súbor"
+ image_link: "adresa na ktorú bude odkazovať váš obrázok"
+ search:
+ sort_by: "Zoradiť podľa"
+ relevance: "Relevancia"
+ latest_post: "Najnovší príspevok"
+ most_viewed: "Najviac prezerané"
+ most_liked: "Najviac sa páčia"
+ select_all: "Označ všetky"
+ clear_all: "Odznač všetky"
+ result_count:
+ one: "1 výsledok pre \"{{term}}\""
+ few: "{{count}} výsledky pre \"{{term}}\""
+ other: "{{count}} výsledkov pre \"{{term}}\""
+ title: "hľadaj témy, príspevky, užívateľov, alebo kategórie"
+ no_results: "Žiadne výsledky"
+ no_more_results: "Nenašlo sa viac výsledkov"
+ search_help: Pomoc pri vyhľadávaní
+ searching: "Vyhľadávam....."
+ post_format: "#{{post_number}} podľa {{username}}"
+ context:
+ user: "Vyhľadávanie podľa @{{username}}"
+ category: "Vyhľadávanie podľa \"{{category}}\" kategórie"
+ topic: "Hľadaj v tejto téme"
+ private_messages: "Hľadaj správy"
+ hamburger_menu: "prejsť na iné témy, alebo kategórie"
+ new_item: "nový"
+ go_back: 'späť'
+ not_logged_in_user: 'užívateľská stránka so súhrnom aktivít a nastavení'
+ current_user: 'prejsť na Vašu uťívateľskú stránku'
+ topics:
+ bulk:
+ unlist_topics: "Dôverné témy"
+ reset_read: "Obnoviť prečítané"
+ delete: "Zmazať témy"
+ dismiss: "Zahodiť"
+ dismiss_read: "Zahodiť všetký neprečítané"
+ dismiss_button: "Zahadzujem....."
+ dismiss_tooltip: "Zahoď nové príspevky, alebo prestaň sledovať témy"
+ also_dismiss_topics: "Prestať sledovať tieto témy. Už sa nikdy nebudu ukazovať medzi neprečítanými"
+ dismiss_new: "Zahodiť. Nová"
+ toggle: "prepnuť hromadne vybrané témy"
+ actions: "Hromadné akcie"
+ change_category: "Zmeň kategóriu"
+ close_topics: "Uzavrieť tému"
+ archive_topics: "Archivuj témy"
+ notification_level: "Zmeň úroveň upozorňovania"
+ choose_new_category: "Vyberte pre tému novú kategóriu:"
+ selected:
+ one: "Označíli ste 1 tému."
+ few: "Označíli ste {{count}} tém.y"
+ other: "Označíli ste {{count}} tém."
+ none:
+ unread: "Nemáte neprečítanú tému"
+ new: "Nemáte žiadnu novú tému"
+ read: "Neprečítali ste ešte žiadnu tému."
+ posted: "Nanapísali ste ešte žiadnu tému."
+ latest: "Nie sú žiadne nové témy. To je smutné."
+ hot: "Nie sú žiadne horúce témy."
+ bookmarks: "Nemáte žiadne témy v záložke"
+ category: "V kategórii {{category}} nie je žiadna téma"
+ top: "Nie sú žiadne populárne témy."
+ search: "Nenašli sa žiadne výsledky"
+ bottom:
+ latest: "Nie je už viac najnovšich tém."
+ hot: "Nie je už viac horúcich tém"
+ posted: "Žiadne ďalšie témy na čítanie."
+ read: "Žiadne ďalšie prečítané témy."
+ new: "Žiadne nové témy."
+ unread: "Žiadne ďalšie neprečítané témy."
+ category: "Žiadne ďalšie témy v {{category}}."
+ top: "Nie je už viac poulárnych tém"
+ bookmarks: "Žiadne ďalšie témy v záložkách."
+ search: "Nenašlo sa viac výsledkov."
+ topic:
+ unsubscribe:
+ stop_notifications: "Teraz budete dostávať menej upozornení na {{title}}"
+ change_notification_state: "Váš súčasný stav upozornení je"
+ filter_to: "{{post_count}} príspevkov k téme"
+ create: 'Nová téma'
+ create_long: 'Vytvoriť novú tému'
+ private_message: 'Vytvoríť správu'
+ archive_message:
+ help: 'Presunúť správu do archívu'
+ title: 'Archivovať'
+ move_to_inbox:
+ title: 'Presunúť do schránky'
+ help: 'Presunúť správu späť do schránky'
+ list: 'Témy'
+ new: 'nová téma'
+ unread: 'neprečítané'
+ new_topics:
+ one: '1 nová téma'
+ few: '{{count}} nové témy'
+ other: '{{count}} nových tém'
+ unread_topics:
+ one: '1 neprečítaná téma'
+ few: '{{count}} neprečítané témy'
+ other: '{{count}} neprečítaných tém'
+ title: 'Témy'
+ invalid_access:
+ title: "Téma je súkromná"
+ description: "Prepáčte, nemáte prístup k tejto téme!"
+ login_required: "Musíte sa prihlásiť, aby ste videli túto tému."
+ server_error:
+ title: "Tému sa nepodarilo načítať"
+ description: "Prepáčte, nepodarllo sa nám načítať túto tému, možno je problém s Vaším pripojením. Prosim skúste znova. Ak problém pretrváva, dajte nám vedieť"
+ not_found:
+ title: "Téma sa nenašla"
+ description: "Prepáčte, hľadaná téma nebola nájdená. Nebola odstránená moderátorom?"
+ total_unread_posts:
+ one: "máte 1 neprečítaný príspevok k tejto téme"
+ few: "máte {{count}} neprečítanépríspevky k tejto téme"
+ other: "máte {{count}} neprečítaných príspevkov k tejto téme"
+ unread_posts:
+ one: "máte 1 starší neprečítaný príspevok k tejto téme"
+ few: "máte {{count}} staršie neprečítané príspevky k tejto téme"
+ other: "máte {{count}} starších neprečítaných príspevkov k tejto téme"
+ new_posts:
+ one: "pribudol 1 nový príspevok odkedy ste čítali túto tému naposledy "
+ few: "pribudlo {{count}} nové príspevky odkedy ste čítali túto tému naposledy "
+ other: "pribudlo {{count}} nových príspevkov odkedy ste čítali túto tému naposledy "
+ likes:
+ one: "v tejto téme je jedo \"Páči sa\""
+ few: "v tejto téme je {{count}} \"Páči sa\""
+ other: "v tejto téme je {{count}} \"Páči sa\""
+ back_to_list: "Naspäť na zoznam tém"
+ options: "Možnosti tém"
+ show_links: "zobrazovať odkazy v tejto téme"
+ toggle_information: "zmeniť detaily témy"
+ read_more_in_category: "Chcete si prečítať viac? Prezrite si témy v {{catLink}} alebo v {{latestLink}}."
+ read_more: "Chcete si prečítať viac? {{catLink}} alebo v {{latestLink}}."
+ read_more_MF: "Máte { UNREAD, plural, =0 {} one { 1 neprečítanú } other { # neprečítané } } { NEW, plural, =0 {} one { {BOTH, select, true{a} false { } other{}} 1 novú tému} other { {BOTH, select, true{a } false {} other{}} # nových tém} } na prečítanie, prípadne {CATEGORY, select, true {si pozrite iné témy v {catLink}} false {{latestLink}} other {}}"
+ browse_all_categories: Prezrieť všetky kategórie
+ view_latest_topics: zobraziť najnošie témy
+ suggest_create_topic: Čo tak vytvoriť novú tému?
+ jump_reply_up: prejsť na predchádzajúcu odpoveď
+ jump_reply_down: prejsť na nasledujúcu odpoveď
+ deleted: "Téma bola vymazaná"
+ auto_close_notice: "Táto téma bude automaticky uzavretá o %{timeLeft}."
+ auto_close_notice_based_on_last_post: "Táto téma bude uzavretá %{duration} po poslednej odpovedi."
+ auto_close_title: 'Nastavenia automatického zatvárania'
+ auto_close_save: "Uložiť"
+ auto_close_remove: "Neuzatvárať túto tému automaticky"
+ auto_close_immediate: "Posledný príspevok k téme je starý už %{hours} hodín, takže téma bude okamžite uzavretá. "
+ progress:
+ title: pozícia v téme
+ go_top: "na začiatok"
+ go_bottom: "na spodok"
+ go: "Choď"
+ jump_bottom: "choď na posledný príspevok"
+ jump_bottom_with_number: "choď na príspevok číslo %{post_number}"
+ total: Všetkých príspevkov
+ current: tento príspevok
+ position: "%{current} príspevok z %{total}"
+ notifications:
+ reasons:
+ '3_6': 'Budete dostávať upozornenia, pretože sa pozeráte na túto kategóriu.'
+ '3_5': 'Budete automaticky dostávať upozornenie pretože ste začali pozorovať túto tému.'
+ '3_2': 'Budete dostávať upozornenia, pretože sa pozeráte na túto tému.'
+ '3_1': 'Budete dostávať upozornenia, pretože ste vytvorili túto tému.'
+ '3': 'Budete dostávať upozornenia, pretože sa pozeráte na túto tému.'
+ '2_8': 'Budete dostávať upozornenia, pretože sledujete túto kategóriu.'
+ '2_4': 'Budete dostávať upozornenia, pretože ste zaslali odpoveď na túto tému.'
+ '2_2': 'Budete dostávať upozornenia, pretože sledujete túto tému.'
+ '2': 'Budete dostávať upozornenia, pretože ste čítali túto tému.'
+ '1_2': 'Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie.'
+ '1': 'Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie.'
+ '0_7': 'Ignorujete všetky upozornenia v tejto kategórii.'
+ '0_2': 'Ignorujete všetky upozornenia k tejto téme.'
+ '0': 'Ignorujete všetky upozornenia k tejto téme.'
+ watching_pm:
+ title: "Pozerať"
+ description: "Budete upozornený na každú novu dopoveť na túto správu, a zobrazí sa počet nových odpovedí"
+ watching:
+ title: "Pozerať"
+ description: "Budete upozornený na každú novu dopoveť na túto tému, a zobrazí sa počet nových odpovedí"
+ tracking_pm:
+ title: "Sledovať"
+ description: "Zobrazí počet nových odpovedí na túto správu. Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie."
+ tracking:
+ title: "Sledovať"
+ description: "Zobrazí počet nových odpovedí na túto tému. Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie."
+ regular:
+ title: "Bežný"
+ description: "Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie."
+ regular_pm:
+ title: "Bežný"
+ description: "Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie."
+ muted_pm:
+ title: "Stíšené"
+ description: "Nikdy nebudete upozornení na nič ohľadom tejto správy"
+ muted:
+ title: "Stíšené"
+ description: "Nikdy nebudete upozornení na nič ohľadom tejto témy, a nebude sa zobrazovať medzi najnovšími."
+ actions:
+ recover: "Obnoviť zmazanú tému"
+ delete: "Zmazať tému"
+ open: "Otvoriť tému"
+ close: "Uzavrieť tému"
+ multi_select: "Označ príspevky...."
+ auto_close: "Automaticky zatvor...."
+ pin: "Pripni tému...."
+ unpin: "Odopni tému...."
+ unarchive: "Zruš archiváciu témy"
+ archive: "Archívuj tému"
+ invisible: "Skyť"
+ visible: "Zobraziť"
+ reset_read: "Zrušiť načítané údaje"
+ feature:
+ pin: "Pripni tému"
+ unpin: "Odopni tému"
+ pin_globally: "Pripni tému globálne"
+ make_banner: "Banerová téma"
+ remove_banner: "Odstrániť banerovú tému"
+ reply:
+ title: 'Odpovedať'
+ help: 'vytvor odpoveď k tejto téme'
+ clear_pin:
+ title: "Zruš pripnutie"
+ help: "Zruší pripnutie tejto témy takže sa už viac nebude objavovať na vrchu Vášho zoznamu tém"
+ share:
+ title: 'Zdielaj'
+ help: 'zdieľaj odkaz na túto tému'
+ flag_topic:
+ title: 'Označ'
+ help: 'súkromne označiť túto tému do pozornosti, alebo na ňu poslať súkromne upozornenie'
+ success_message: 'Úspešne ste označili tému.'
+ feature_topic:
+ title: "Vyzdvihni túto tému"
+ pin: "Zobrazuj túto tému na vrchu {{categoryLink}} kategórie do"
+ confirm_pin: "Máte už {{count}} pripnutých tém. Príliš veľa pripnutých tém môže byť na príťaž pre nových a anonymných užívateľov. Ste si istý že chcete pripnúť ďalšiu tému v tejto kategórii?"
+ unpin: "Zruš túto tému z vrcholu kategórie {{categoryLink}} . "
+ unpin_until: "Zruš túto tému z vrcholu kategórie {{categoryLink}} , alebo počkaj do %{until}."
+ pin_note: "Užívatelia si môžu sami odopnúť tému "
+ pin_validation: "Dátum je vyžadovaný k pripnutiu tejto témy."
+ not_pinned: "V {{categoryLink}} nie sú pripnuté žiadne témy."
+ already_pinned:
+ one: "Téma pripnutá k {{categoryLink}}: 1"
+ few: "Témy pripnuté ku {{categoryLink}}: {{count}}"
+ other: "Tém pripnutých k {{categoryLink}}: {{count}}"
+ pin_globally: "Zobrazuj túto tému na vrchu všetkých zoznamov tém do"
+ confirm_pin_globally: "Máte už {{count}} globálne pripnutých tém. Príliš veľa pripnutých tém môže byť na príťaž pre nových a anonymných užívateľov. Ste si istý že chcete pripnúť ďalšiu globálnu tému?"
+ unpin_globally: "Zruš túto tému z vrcholu všetkých zoznamov tém. "
+ unpin_globally_until: "Zruš túto tému z vrcholu všetkých zoznamov tém, alebo počkaj do %{until}."
+ global_pin_note: "Užívatelia si môžu sami odopnúť tému."
+ not_pinned_globally: "Nie sú pripnuté žiadne globálne témy."
+ already_pinned_globally:
+ one: "Globálne pripnutá téma : 1"
+ few: "Globálne pripnuté témy : {{count}}"
+ other: "Globálne pripnutých tém : {{count}}"
+ make_banner: "Spraviť z tejto témy baner, ktorý sa zobrazí navrchu každej stránky."
+ remove_banner: "Odstrániť baner, ktorý sa zobrazuje navrchu každej stránky."
+ banner_note: "Užívatelia môžu banner kedykoľvek zrušiť. Bannerom môže byť v jednom momente len jedna téma."
+ no_banner_exists: "Neexistuje žiadna banerová téma."
+ banner_exists: "Banerová téma je aktuálne nastavená."
+ inviting: "Pozývam..."
+ automatically_add_to_groups_optional: "Táto pozvánka obsahuje taktiež prístup do týchto skupín: ( nepovinné, iba správca) "
+ automatically_add_to_groups_required: "Táto pozvánka obsahuje taktiež prístup do týchto skupín: ( Povinné, iba správca) "
+ invite_private:
+ title: 'Pozvať do konverzácie'
+ email_or_username: "Email, alebo užívateľské meno pozvaného"
+ email_or_username_placeholder: "emailova adresa alebo uťívateľské meno"
+ action: "Pozvi"
+ success: "Pozvali sme tohoto uťívateľa aby sa podieľal na tejto správe"
+ error: "Prepáčte, pri pozývaní tohto užívateľa nastala chyba."
+ group_name: "názov skupiny"
+ controls: "Ovládacie prvky Témy"
+ invite_reply:
+ title: 'Pozvi'
+ username_placeholder: "používateľské meno"
+ action: 'Pošli pozvánku'
+ help: 'pozvite ostatných k tejto téme prostredníctvom emailu, alebo upozornení'
+ to_forum: "Pošleme krátký email dovoľujúci Vášmu priateľovi okamžité pripojenie kliknutím na odkaz bez potreby prihlasovania"
+ sso_enabled: "Zadajte uťívateľské meno osoby, ktorú by ste radi pozvali k tejto téme"
+ to_topic_blank: "Zadajte uťívateľské meno alebo email osoby, ktorú by ste radi pozvali k tejto téme"
+ to_topic_email: "Zadali ste emailovú adresu. Pošleme pozvánku ktorá umožní Vášmu priateľovi okamžitú odpoveď k tejto téme."
+ to_topic_username: "Zadali ste užívateľské meno. Pošleme mu pozvánku s odkazom na túto tému."
+ to_username: "Zadajte užívateľské meno osoby, ktorú chcete pozvať. Pošleme mu pozvánku s odkazom na túto tému."
+ email_placeholder: 'name@example.com'
+ success_email: "Poslali sme email s pozvánkou na {{emailOrUsername}}. Upozorníme vas keď bude pozvánka použítá. Svoje pozvánky môžte sledovať v tabuľke pozvánok vo svojom užívateľskom profile."
+ success_username: "Pozvali sme tohoto uťívateľa aby sa podieľal na tejto téme."
+ error: "Prepáčte, Nepodarilo sa nám pozvať túto osobu. Nebola už náhodou pozvaná ? (Počet opakovaných pozvánok je obmedzený)"
+ login_reply: 'Príhláste sa ak chcete odpovedať'
+ filters:
+ n_posts:
+ one: "1 príspevok"
+ few: "{{count}} príspevky"
+ other: "{{count}} príspevkov"
+ cancel: "Zruš filter"
+ split_topic:
+ title: "Presuň na novú tému"
+ action: "presuň na novú tému"
+ topic_name: "Názov novej témy"
+ error: "Nastala chyba pri presune príspevku na novú tému."
+ instructions:
+ one: "Vytvárate novú tému do ktorej bude vložený príspevok, ktorý ste označili. "
+ few: "Vytvárate novú tému do ktorej bude vložených {{count}} príspevkov, ktoré ste označili. "
+ other: "Vytvárate novú tému do ktorej budú vložené {{count}} príspevky, ktoré ste označili. "
+ merge_topic:
+ title: "Presuň do existujúcej témy."
+ action: "presuň do existujúcej témy"
+ error: "Nastala chyba pri presune príspevku do tejto témy."
+ instructions:
+ one: "Prosím vyberte tému do ktorej chcete presunúť tento príspevok."
+ few: "Prosím vyberte tému do ktorej chcete presunúť tieto {{count}} príspevky."
+ other: "Prosím vyberte tému do ktorej chcete presunúť týchto {{count}} príspevkov."
+ change_owner:
+ title: "Zmeň vlástníka príspevkov"
+ action: "zmeň vlastníka"
+ error: "Nastala chyba pri zmene vlastníka príspevkov."
+ label: "Príspevky nového vlastníka"
+ placeholder: "užívateľske meno nového vlastnika"
+ instructions:
+ one: "Prosím vyberte nového vlastníka príspevku vytvoreného {{old_user}}."
+ few: "Prosím vyberte nového vlastníka {{count}} príspevkov vytvorených {{old_user}}."
+ other: "Prosím vyberte nového vlastníka {{count}} príspevkov vytvorených {{old_user}}."
+ instructions_warn: "Poznámka: Žiadne upozornenie o tomto príspevku nebude spätne zaslané novým užívateľom
+
Upozornenie: Momentálne nie sú prenášané žiadne dáta vťahujúce sa k príspevku na nových užívateľov. Používajte opatrne."
+ change_timestamp:
+ title: "Nastavte časovú značku"
+ action: "nastavte časovú značku"
+ invalid_timestamp: "Časová značka nemôže byť v budúcnosti. "
+ error: "Nastala chyba pri zmene časovej značky témy."
+ instructions: "Prosím vyberte novú časovú značku témy. Príspevky k téme budu aktualizované so zachovaním časoveho rozdielu."
+ multi_select:
+ select: 'označ'
+ selected: 'označených ({{count}})'
+ select_replies: 'označ +odpovede'
+ delete: zmaž označené
+ cancel: zrušiť výber
+ select_all: označ všetko
+ deselect_all: odznač všetko
+ description:
+ one: Označili ste 1 príspevok
+ few: Označili ste {{count}} príspevky
+ other: Označili ste {{count}} príspevkov
+ post:
+ reply: " {{replyAvatar}} {{usernameLink}}"
+ reply_topic: " {{link}}"
+ quote_reply: "citovať odpoveď"
+ edit: "Upravujete {{link}} {{replyAvatar}} {{username}}"
+ edit_reason: "Dôvod:"
+ post_number: "príspevok {{number}}"
+ last_edited_on: "príspevok naposledy upravený"
+ reply_as_new_topic: "Odpoveď ako súvisiaca téma"
+ continue_discussion: "Pokračovanie diskusie z {{postLink}}:"
+ follow_quote: "prejsť na citovaný príspevok"
+ show_full: "Zobraziť celý príspevok"
+ show_hidden: 'Zobraziť skrytý obsah.'
+ deleted_by_author:
+ one: "(príspevky stiahnuté autorom budú automaticky zmazané za jednu hodinu pokiaľ nie sú označené)"
+ few: "(príspevky stiahnuté autorom budú automaticky zmazané za %{count} hodiny pokiaľ nie sú označené)"
+ other: "(príspevky stiahnuté autorom budú automaticky zmazané za %{count} hodín pokiaľ nie sú označené)"
+ expand_collapse: "rozbaliť/zbaliť"
+ gap:
+ one: "zobraziť skrytú odpoveď"
+ few: "zobraziť {{count}} skryté odpovede"
+ other: "zobraziť {{count}} skrytých odpovedí"
+ more_links: "ešte {{count}} "
+ unread: "Príspevok je neprečítaný."
+ has_replies:
+ one: "{{count}} Odpoveď"
+ few: "{{count}} Odpovede"
+ other: "{{count}} Odpovedí"
+ has_likes:
+ one: "{{count}} \"Páči sa\""
+ few: "{{count}} \"Páči sa\""
+ other: "{{count}} \"Páči sa\""
+ has_likes_title:
+ one: "Tento príspevok sa páčil jedej osobe"
+ few: "Tento príspevok sa páčil {{count}} ľuďom"
+ other: "Tento príspevok sa páčil {{count}} ľuďom"
+ has_likes_title_only_you: "tento príspevok sa Vám páči"
+ has_likes_title_you:
+ one: "Tento príspevok sa páčil Vám a jednej ďalšej osobe"
+ few: "Tento príspevok sa páčil Vám a ďalším {{count}} ľuďom"
+ other: "Tento príspevok sa páčil Vám a ďalším {{count}} ľuďom"
+ errors:
+ create: "Ľutujeme, pri vytváraní príspevku nastala chyba. Prosím, skúste znovu."
+ edit: "Ľutujeme, pri úprave príspevku nastala chyba. Prosím, skúste znovu."
+ upload: "Ľutujeme, pri nahrávaní súboru nastala chyba. Prosím, skúste znovu."
+ attachment_too_large: "Ľutujeme, súbor, ktorý sa pokúšate nahrať, je príliš veľký (maximálna veľkosť je {{max_size_kb}}kb)."
+ file_too_large: "Ľutujeme, súbor, ktorý sa pokúšate nahrať je príliš veľký (maximálna veľkosť je {{max_size_kb}}kb)"
+ too_many_uploads: "Ľutujeme, ale naraz je možné nahrať len jeden súbor."
+ too_many_dragged_and_dropped_files: "Prepáčte, naraz môžte presunúť maximálne 10 súborov."
+ upload_not_authorized: "Ľutujeme, súbor, ktorý sa pokúšate nahrať nemá povolenú príponu (povolené prípony sú: {{authorized_extensions}})."
+ image_upload_not_allowed_for_new_user: "Ľutujeme, noví použivatelia nemôžu nahrávať obrázky."
+ attachment_upload_not_allowed_for_new_user: "Ľutujeme, noví používatelia nemôžu nahrávať prílohy."
+ attachment_download_requires_login: "Ľutujeme, pre stiahnutie príloh musíte byť prihlásený."
+ abandon:
+ confirm: "Ste si istý, že chcete zahodiť tento príspevok?"
+ no_value: "Nie, ponechať."
+ yes_value: "Áno, zahodiť."
+ via_email: "tento príspevok prišiel emailom"
+ whisper: "tento príspevok je súkromným šepotom pre moderátorov"
+ wiki:
+ about: "tento príspevok je wiki"
+ archetypes:
+ save: 'Uložiť možnosti'
+ controls:
+ reply: "vytvorte odpoveď na tento príspevok"
+ like: "páči sa mi tento príspevok"
+ has_liked: "tento príspevok sa Vám páči"
+ undo_like: "zruš \"Páči sa\""
+ edit: "Editovať tento príspevok."
+ edit_anonymous: "Ľutujeme, ale pre úpravu príspevku je potrebné sa prihlásiť."
+ flag: "súkromne označiť tento príspevok do pozornosti, alebo naň poslať súkromne upozornenie"
+ delete: "odstrániť tento príspevok"
+ undelete: "vrátiť späť odstránenie príspevku"
+ share: "zdieľať odkaz na tento príspevok"
+ more: "Viac"
+ delete_replies:
+ confirm:
+ one: "Chcete tiež odstrániť {{count}} priamu reakciu na tento príspevok?"
+ few: "Chcete tiež odstrániť {{count}} priame reakcie na tento príspevok?"
+ other: "Chcete tiež odstrániť {{count}} priamych reakcií na tento príspevok?"
+ yes_value: "Áno, odstrániť aj reakcie."
+ no_value: "Nie, len tento príspevok."
+ admin: "akcie administrátora príspevku"
+ wiki: "Spraviť Wiki"
+ unwiki: "Odstrániť Wiki"
+ convert_to_moderator: "Pridať farbu personálu"
+ revert_to_regular: "Odobrať farbu personálu"
+ rebake: "Pregenerovať HTML"
+ unhide: "Odokryť"
+ change_owner: "Zmeniť vlastníctvo"
+ actions:
+ flag: 'Označ'
+ defer_flags:
+ one: "Zrušiť označenie"
+ few: "Zrušiť označenia"
+ other: "Zrušiť označenia"
+ it_too:
+ off_topic: "Tiež označ"
+ spam: "Tiež označ"
+ inappropriate: "Tiež označ"
+ custom_flag: "Tiež označ"
+ bookmark: "Tiež vytvoriť záložku"
+ like: "Tiež sa mi páči"
+ vote: "Tiež hlasujem za"
+ undo:
+ off_topic: "Zruš označenie"
+ spam: "Zruš označenie"
+ inappropriate: "Zruš označenie"
+ bookmark: "Vrátiť záložku späť"
+ like: "Zruš \"Páči sa\""
+ vote: "Zruš hlasovanie"
+ people:
+ vote: "hlasovať za toto"
+ by_you:
+ off_topic: "Označíli ste to ako mimo tému"
+ spam: "Označíli ste to ako spam"
+ inappropriate: "Označíli ste to ako nevhodné"
+ notify_moderators: "Označíli ste to pre moderátora"
+ notify_user: "Poslali ste správu užívateľovi "
+ bookmark: "Vytvorili ste si záložku na tento príspevok"
+ like: "Páči sa Vám to"
+ vote: "Hlasoval ste za tento príspevok"
+ by_you_and_others:
+ off_topic:
+ one: "Vy a 1 ďalšia osoba to označílo ako mimo tému"
+ few: "Vy a ďalšie {{count}} osoby to označíli ako mimo tému"
+ other: "Vy a ďalších {{count}} osôb to označílo ako mimo tému"
+ spam:
+ one: "Vy a 1 ďalšia osoba to označíla ako spam"
+ few: "Vy a ďalšie {{count}} osoby to označíli ako spam"
+ other: "Vy a ďalších {{count}} osôb to označílo ako spam"
+ inappropriate:
+ one: "Vy a jedna ďalšia osoba to označila ako nevhodné"
+ few: "Vy a ďalšie {{count}} osoby to označili ako nevhodné"
+ other: "Vy a ďalších {{count}} osôb to označilo ako nevhodné"
+ notify_moderators:
+ one: "Vy a jedna ďalšia osoba to označila na moderovanie"
+ few: "Vy a ďalšie {{count}} osoby to označili na moderovanie"
+ other: "Vy a ďalších {{count}} osôb to označilo na moderovanie"
+ notify_user:
+ one: "Vy a jedna ďalšia osoba poslala správu tomuto užívateľovi"
+ few: "Vy a ďalšie {{count}} osoby poslali správu tomuto užívateľovi"
+ other: "Vy a ďalších {{count}} osôb poslalo správu tomuto užívateľovi"
+ bookmark:
+ one: "Vy a jedna ďalšia osoba si vytvorilo záložku na tento príspevok"
+ few: "Vy a ďalšie {{count}} osoby si vytvorili záložku na tento príspevok"
+ other: "Vy a ďalších {{count}} osôb si vytvorilo záložku na tento príspevok"
+ like:
+ one: "Páči sa to Vám a jendej ďalšej osobe"
+ few: "Páči sa to Vám a ďalším {{count}} osobám"
+ other: "Páči sa to Vám a ďalším {{count}} osobám"
+ vote:
+ one: "Vy a jenda ďalšia osoba hlasovala za tento príspevok"
+ few: "Vy a ďalšie {{count}} osoby hlasovalo za tento príspevok"
+ other: "Vy a ďalších {{count}} osôb hlasovalo za tento príspevok"
+ by_others:
+ off_topic:
+ one: "1 osoba to označíla ako mimo tému"
+ few: "{{count}} osoby to označíli ako mimo tému"
+ other: "{{count}} osôb to označílo ako mimo tému"
+ spam:
+ one: "1 osoba to označíla ako spam"
+ few: "{{count}} osoby to označíli ako spam"
+ other: "{{count}} osôb to označílo ako spam"
+ inappropriate:
+ one: "1 osoba to označila ako nevhodné"
+ few: "{{count}} osoby to označili ako nevhodné"
+ other: "{{count}} osôb to označilo ako nevhodné"
+ notify_moderators:
+ one: "1 osoba to označila na moderovanie"
+ few: "{{count}} osoby to označili na moderovanie"
+ other: "{{count}} osôb to označilo na moderovanie"
+ notify_user:
+ one: "1 osoba poslala správu tomuto užívateľovi"
+ few: "{{count}} osoby poslali správu tomuto užívateľovi"
+ other: "{{count}} osôb poslalo správu tomuto užívateľovi"
+ bookmark:
+ one: "1 osoba si vytvorila záložku na tento príspevok"
+ few: "{{count}} osoby si vytvorili záložku na tento príspevok"
+ other: "{{count}} osôb si vytvorilo záložku na tento príspevok"
+ like:
+ one: " {{count}} osobe sa to páčilo"
+ few: " {{count}} osobám sa to páčilo"
+ other: " {{count}} osobám sa to páčilo"
+ vote:
+ one: "1 osoba hlasovala za tento príspevok"
+ few: "{{count}} osoby hlasovali za tento príspevok"
+ other: "{{count}} osôb hlasovalo za tento príspevok"
+ delete:
+ confirm:
+ one: "Ste si istý že chcete zmazať tento príspevok?"
+ few: "Ste si istý že chcete zmazať všetky tieto príspevky?"
+ other: "Ste si istý že chcete zmazať všetky tieto príspevky?"
+ revisions:
+ controls:
+ first: "Prvá revízia"
+ previous: "Predchádzajúca revízia"
+ next: "Ďalšia revízia"
+ last: "Posledná revízia"
+ hide: "Skriť revíziu"
+ show: "Ukáza revíziu"
+ comparing_previous_to_current_out_of_total: "{{previous}} {{current}} / {{total}}"
+ displays:
+ inline:
+ title: "Zobraz výstup vrátane pridaného a zmazaného v riadku"
+ button: ' HTML'
+ side_by_side:
+ title: "Zobraziť rozdiely v generovanom výstupe vedľa seba"
+ button: ' HTML'
+ side_by_side_markdown:
+ title: "Zobraziť rozdiely v pôvodnom zdroji vedľa seba"
+ button: ' Neupravený'
+ category:
+ can: 'môže … '
+ none: '(Bez kategórie)'
+ all: 'Všetky kategórie'
+ choose: 'Vyber kategóriu…'
+ edit: 'uprav'
+ edit_long: "Upraviť"
+ view: 'Prezerať témy v kategórii'
+ general: 'Všeobecné'
+ settings: 'Nastavenia'
+ topic_template: "Formulár témy"
+ delete: 'Odstrániť kategóriu'
+ create: 'Nová kategória'
+ create_long: 'Vytvoriť novú kategóriu'
+ save: 'Uložiť kategóriu'
+ slug: 'URL kategórie'
+ slug_placeholder: '(Voliteľné) pomlčkou-prerušované-slová pre url'
+ creation_error: Nastala chyba počas vytvárania kategórie.
+ save_error: Nastala chyba počas ukladania kategórie
+ name: "Názov kategórie"
+ description: "Popis"
+ topic: "kategória témy"
+ logo: "Logo kategórie"
+ background_image: "Pozadie kategórie"
+ badge_colors: "Farby odznakov"
+ background_color: "Farba pozadia"
+ foreground_color: "Farba popredia"
+ name_placeholder: "Maximálne jedno dve slová"
+ color_placeholder: "Ľubovoľná farba stránky"
+ delete_confirm: "Ste si istý že chcete zmazať túto kategóriu?"
+ delete_error: "Nastala chyba počas mazania kategórie"
+ list: "Zoznam kategórií"
+ no_description: "Prosím, pridajte popis k tejto kategórii."
+ change_in_category_topic: "Uprav popis"
+ already_used: 'Táto farba je už použitá inou kategóriou'
+ security: "Bezpečnosť"
+ special_warning: "Upozornenie: Toto je preddefinovaná kategória a jej bezpečnostné nastavenia sa nedajú upraviť. Pokiaľ si neželáte použiť túto kategóriu, neupravujte ju, ale zmažte."
+ images: "Obrázky"
+ auto_close_label: "Automaticky uzavrieť tému po:"
+ auto_close_units: "hodinách"
+ email_in: "Vlastná e-mailová adresa pre príchodziu poštu:"
+ email_in_allow_strangers: "Prijímať emaily od anonymných užívateľov bez účtu"
+ email_in_disabled: "Vkladanie nových tém cez email je zablokované v Nastaveniach stránky. Ak chcete povoliť vkladanie nových téme cez email,"
+ email_in_disabled_click: 'povoľte nastavenie "email in"'
+ suppress_from_homepage: "Pozastaviť kategóriu z domovskej stránky."
+ allow_badges_label: "Povoliť získavanie odznakov v tejto kategórii"
+ edit_permissions: "Upraviť práva"
+ add_permission: "Pridať práva"
+ this_year: "tento rok"
+ position: "pozícia"
+ default_position: "Predvolená pozícia"
+ position_disabled: "Kategórie budú zobrazené podľa aktivity. Pre možnosť ovládania poradia kategórií v zozname,"
+ position_disabled_click: 'povoľte možnosť "pevné poradie kategórií"'
+ parent: "Nadradená kategória"
+ notifications:
+ watching:
+ title: "Pozerať"
+ description: "Budete automaticky pozerať všetky nové témy v týchto kategóriách. Budete upozornený na všetky nové príspevky vo všetkých témach. Zároveň bude zobrazený počet nových odpovedí."
+ tracking:
+ title: "Sledovať"
+ description: "Budete automaticky sledovať všetky nové témy v týchto kategóriách. Budete upozornený ak niekto uvedie vaše @meno alebo Vám odpovie. Zároveň bude zobrazený počet nových odpovedí."
+ regular:
+ title: "Bežný"
+ description: "Budete upozornený ak niekto spomenie Vaše @meno alebo Vám odpovie."
+ muted:
+ title: "Stíšené"
+ description: "Nikdy nebudete informovaní o udalostiach v nových témach týchto kategórií. Tieto témy sa zároveň nebudú zobrazovať v zozname posledných udalostí."
+ flagging:
+ title: 'Ďakujeme, že pomáhate udržiavať slušnosť v našej komunite!'
+ action: 'Označ príspevok'
+ take_action: "Vykonať akciu"
+ notify_action: 'Správa'
+ delete_spammer: "Zmazať spammera"
+ delete_confirm: "Idete vymazať %{posts} príspevky a %{topics} témy tohto užívateľa, zmazať jeho účet, zakázať prihlásenia z jeho IP adresy %{ip_address}, a pridať jeho email %{email} na zoznam trvalo zakázaných. Ste si istý, že tento užívateľ je skutočne spamer?"
+ yes_delete_spammer: "Áno, zmazať spammera"
+ ip_address_missing: "(nedostupné)"
+ hidden_email_address: "(skryté)"
+ submit_tooltip: "Odoslať súkromné označenie"
+ take_action_tooltip: "Dosiahnuť okamžite limit označení, namiesto čakania na ďalšie označenia od komunity"
+ cant: "Ľutujeme, ale tento príspevok sa teraz nedá označiť ."
+ formatted_name:
+ off_topic: "Je to mimo témy"
+ inappropriate: "Je to nevhodné"
+ spam: "Je to spam"
+ custom_placeholder_notify_user: "Buďte konkrétny, buďte konštruktívny a buďte vždy milý."
+ custom_placeholder_notify_moderators: "Dajte nám vedieť, z čoho konkrétne máte obavy, a priložte príslušné odkazy a príklady, ak je to možné."
+ custom_message:
+ at_least: "zadajte aspoň {{n}} znakov"
+ more: "zostáva ešte {{n}} ..."
+ left: "{{n}} zostáva"
+ flagging_topic:
+ title: "Ďakujeme, že pomáhate udržiavať slušnosť v našej komunite!"
+ action: "Označ príspevok"
+ notify_action: "Správa"
+ topic_map:
+ title: "Zhrnutie článku"
+ participants_title: "Častí prispievatelia"
+ links_title: "Populárne odkazy"
+ links_shown: "ukázať všetkých {{totalLinks}} odkazov..."
+ clicks:
+ one: "%{count} kilk"
+ few: "%{count} kliky"
+ other: "%{count} klikov"
+ topic_statuses:
+ warning:
+ help: "Toto je oficiálne varovanie."
+ bookmarked:
+ help: "Vytvorili ste si záložku na túto tému"
+ locked:
+ help: "Táto téma je už uzavretá. Nové odpovede už nebudú akceptované"
+ archived:
+ help: "Táto téma je archivovaná. Už sa nedá meniť. "
+ locked_and_archived:
+ help: "Táto téma je už uzavretá a archivovaná. Nové odpovede ani zmeny už nebudú akceptované "
+ unpinned:
+ title: "Odopnuté"
+ help: "Túto tému ste odopli. Bude zobrazená v bežnom poradí."
+ pinned_globally:
+ title: "Globálne pripnuté"
+ help: "Tento príspevok je globálne uprednostnený. Zobrazí sa na začiatku v: zozname posledných článkov a vo svojej kategórii."
+ pinned:
+ title: "Pripnutý"
+ help: "Túto tému ste pripli. Bude zobrazená na vrchole svojej kategórie"
+ invisible:
+ help: "Táto téma je skrytá. Nebude zobrazená v zozname tém a prístup k nej bude možný len prostrednictvom priameho odkazu na ňu"
+ posts: "Príspevky"
+ posts_lowercase: "príspevky"
+ posts_long: "v tejto téme je {{number}} príspevkov"
+ posts_likes_MF: |
+ Táto téma obsahuje {count, plural, one {1 odpoveď} other {# odpovedí}} {ratio, select,
+ low {s vysokým pomerom "Páči sa" na príspevok}
+ med {s veľmi vysokým pomerom "Páči sa" na príspevok}
+ high {s extrémne vysokým pomerom "Páči sa" na príspevok}
+ other {}}
+ original_post: "Pôvodný príspevok"
+ views: "Zobrazenia"
+ views_lowercase:
+ one: "zobrazenie"
+ few: "zobrazenia"
+ other: "zobrazení"
+ replies: "Odpovede"
+ views_long: "táto téma bola prezeraná {{number}} krát "
+ activity: "Aktivita"
+ likes: "Páči sa mi"
+ likes_lowercase:
+ one: "\"Páči sa\""
+ few: "\"Páči sa\""
+ other: "\"Páči sa\""
+ likes_long: "v tejto téme je {{number}} \"Páči sa\""
+ users: "Používatelia"
+ users_lowercase:
+ one: "užívateľ"
+ few: "užívatelia"
+ other: "užívatelia"
+ category_title: "Kategória"
+ history: "História"
+ changed_by: "od {{author}}"
+ raw_email:
+ title: "Neupravený email"
+ not_available: "Nedostupné!"
+ categories_list: "Zoznam kategórií"
+ filters:
+ with_topics: "%{filter} témy"
+ with_category: "%{filter} %{category} témy"
+ latest:
+ title: "Najnovšie"
+ title_with_count:
+ one: "Posledný (1)"
+ few: "Posledné ({{count}})"
+ other: "Posledných ({{count}})"
+ help: "témy s nedávnymi príspevkami"
+ hot:
+ title: "Horúca"
+ help: "výber najhorúcejších tém"
+ read:
+ title: "Prečítaná"
+ help: "prečítané témy, zoradené podľa času ich prečítania"
+ search:
+ title: "Hľadať"
+ help: "hľadaj vo všetkych témach"
+ categories:
+ title: "Kategórie"
+ title_in: "Kategória - {{categoryName}}"
+ help: "všetky témy zoskupené podľa kategórie"
+ unread:
+ title: "Neprečítané"
+ title_with_count:
+ one: "Neprečítaná (1)"
+ few: "Neprečítané ({{count}})"
+ other: "Neprečítaných ({{count}})"
+ help: "témy ktorých neprečítané príspevky v súčastnosti pozeráte alebo sledujete "
+ lower_title_with_count:
+ one: "1 neprečítaná"
+ few: "{{count}} neprečítané"
+ other: "{{count}} neprečítaných"
+ new:
+ lower_title_with_count:
+ one: "1 nová"
+ few: "{{count}} nové"
+ other: "{{count}} nových"
+ lower_title: "nový"
+ title: "Nový"
+ title_with_count:
+ one: "Nová (1)"
+ few: "Nové ({{count}})"
+ other: "Nových ({{count}})"
+ help: "témy vytvorené za posledných pár dní"
+ posted:
+ title: "Moje príspevky"
+ help: "témy s vašimi príspevkami"
+ bookmarks:
+ title: "Záložky"
+ help: "témy, ktoré máte v záložkách"
+ category:
+ title: "{{categoryName}}"
+ title_with_count:
+ one: "{{categoryName}} ({{count}})"
+ few: "{{categoryName}} ({{count}})"
+ other: "{{categoryName}} ({{count}})"
+ help: "najnovšie témy v kategórii {{categoryName}}"
+ top:
+ title: "Vrch"
+ help: "najaktívnejšie témy za posledný rok, mesiac, týždeň, alebo deň"
+ all:
+ title: "Za celú dobu"
+ yearly:
+ title: "Ročne"
+ quarterly:
+ title: "Štvrťročne"
+ monthly:
+ title: "Mesačne"
+ weekly:
+ title: "Týždenne"
+ daily:
+ title: "Denne"
+ all_time: "Za celú dobu"
+ this_year: "Rok"
+ this_quarter: "Štvrťrok"
+ this_month: "Mesiac"
+ this_week: "Týždeň"
+ today: "Dnes"
+ other_periods: "pozri hore"
+ browser_update: 'Ľutujeme, Váš prehliadač je príliš starý na prácu na tejto stránke. Prosím aktualizujte Váš prehliedač.'
+ permission_types:
+ full: "Vytvor / Odpovedz / Zobraz"
+ create_post: "Odpovedz / Zobraz"
+ readonly: "Zobraz"
+ admin_js:
+ type_to_filter: "zadajte, čo chcete filtrovať ..."
+ admin:
+ title: 'Administrátor Discourse'
+ moderator: 'Moderátor'
+ dashboard:
+ title: "Ovládací panel"
+ last_updated: "Dashboard naposledy aktualizovaný:"
+ version: "Verzia"
+ up_to_date: "Máte nainštalovanú najnovšiu verziu!"
+ critical_available: "Je dostupná kritická aktualizácia."
+ updates_available: "Aktualizácie sú k dispozícii."
+ please_upgrade: "Prosím aktualizujte!"
+ no_check_performed: "Neprebehlo zisťovanie aktualizácií. Uistite sa že je spustený sidekiq."
+ stale_data: "V poslednej dobe neprebehlo zisťovanie aktualizácií. Uistite sa že je spustený sidekiq."
+ version_check_pending: "Zdá sa že ste nedávno aktualizovali. Fantastické!"
+ installed_version: "Nainštalované"
+ latest_version: "Najnovšie"
+ problems_found: "Boli zistené nejaké problémy s Vašou inštaláciou Discourse."
+ last_checked: "Naposledy overené"
+ refresh_problems: "Obnoviť"
+ no_problems: "Nenašli sa žiadne problémy."
+ moderators: 'Moderátori:'
+ admins: 'Administrátori:'
+ blocked: 'Zablokované:'
+ suspended: 'Odobraté:'
+ private_messages_short: "Správy"
+ private_messages_title: "Správy"
+ mobile_title: "Mobil"
+ space_free: "{{size}} voľné"
+ uploads: "nahraté"
+ backups: "zálohy"
+ traffic_short: "Vyťaženie"
+ traffic: "Požiadavky webových aplikácií"
+ page_views: "Požiadavky API"
+ page_views_short: "Požiadavky API"
+ show_traffic_report: "Zobraziť detaily vyťaženia"
+ reports:
+ today: "Dnes"
+ yesterday: "Včera"
+ last_7_days: "Posledných 7 dní"
+ last_30_days: "Posledných 30 dní"
+ all_time: "Za celú dobu"
+ 7_days_ago: "Pred 7 dňami"
+ 30_days_ago: "Pred 30 dňami"
+ all: "Všetky"
+ view_table: "tabuľka"
+ view_chart: "stĺpcový graf"
+ refresh_report: "Obnoviť report"
+ start_date: "Od"
+ end_date: "Do"
+ groups: "Všetky skupiny"
+ commits:
+ latest_changes: "Najnov3ie zmeny. Prosime aktualizujte čo najčastejšie!"
+ by: "podľa"
+ flags:
+ title: "Označenia"
+ old: "Staré"
+ active: "Aktívny"
+ agree: "Súhlasiť"
+ agree_title: "Akceptovať toto označenie ako platné a správne"
+ agree_flag_modal_title: "Súhlasiť a ...."
+ agree_flag_hide_post: "Súhlasiť (skryť príspevok a poslať súkromnú správu)"
+ agree_flag_hide_post_title: "Skryť tento príspevok a automaticky poslať súkromnú správu s výzvou na úpravu príspevku."
+ agree_flag_restore_post: "Súhlasiť (obnoviť príspevok)"
+ agree_flag_restore_post_title: "Obnoviť tento príspevok"
+ agree_flag: "Súhlasiť s označením"
+ agree_flag_title: "Súhlasiť s označením, ale nemeníť príspevok"
+ defer_flag: "Odložiť"
+ defer_flag_title: "Zrušíť označenie. Žiadna akcia nie je nateraz potrebná."
+ delete: "Odstrániť"
+ delete_title: "Zmazať príspevok na ktorý označenie odkazuje ."
+ delete_post_defer_flag: "Zmazať príspevok a zrušiť označenie"
+ delete_post_defer_flag_title: "Zmazať prípspevok; ak ide o prvý príspevok, zmazať aj tému"
+ delete_post_agree_flag: "Zmazať príspevok a súhlasiť s označením"
+ delete_post_agree_flag_title: "Zmazať prípspevok; ak ide o prvý príspevok, zmazať aj tému"
+ delete_flag_modal_title: "Zmazať a..."
+ delete_spammer: "Zmazať spammera"
+ delete_spammer_title: "Zmazať užívateľa aj všetky príspevky a témy ktoré vytvoril."
+ disagree_flag_unhide_post: "Nesúhlasiť (odkryť príspevok)"
+ disagree_flag_unhide_post_title: "Zrušíť všetky označenia z príspevku a znova odkryť príspevok"
+ disagree_flag: "Nesúhlasiť"
+ disagree_flag_title: "Zamietnuť toto označenie ako neplatné, alebo nesprávne"
+ clear_topic_flags: "Hotovo"
+ clear_topic_flags_title: "Téma bola preskúmaná a problémy boli vyriešené. Kliknite Hotovo pre zrušenie označení."
+ more: "(viac odpovedí...)"
+ dispositions:
+ agreed: "odsúhlasené"
+ disagreed: "neodsúhlasené"
+ deferred: "odložené"
+ flagged_by: "Označené "
+ resolved_by: "Vyriešené"
+ took_action: "Prijal opatrenia"
+ system: "Systém"
+ error: "Niečo sa pokazilo"
+ reply_message: "Odpovedať"
+ no_results: "Žiadne označenia."
+ topic_flagged: "Táto téma bola označená. "
+ visit_topic: "Navšťívte tému pre prijatie opatrení"
+ was_edited: "Príspevok bol upravený po prvom označení"
+ previous_flags_count: "Tento príspevok bol už označený {{count}} krát."
+ summary:
+ action_type_3:
+ one: "mimo tému"
+ few: "mimo tému x{{count}}"
+ other: "mimo tému x{{count}}"
+ action_type_4:
+ one: "nevhodný"
+ few: "nevhodné x{{count}}"
+ other: "nevhodných x{{count}}"
+ action_type_6:
+ one: "vlastná"
+ few: "vlastné x{{count}}"
+ other: "vlastných x{{count}}"
+ action_type_7:
+ one: "vlastný"
+ few: "vlastné x{{count}}"
+ other: "vlastných x{{count}}"
+ action_type_8:
+ one: "spam"
+ few: "spam x{{count}}"
+ other: "spam x{{count}}"
+ groups:
+ primary: "Hlavná skupina"
+ no_primary: "(bez hlavnej skupiny)"
+ title: "Skupiny"
+ edit: "Upraviť skupiny"
+ refresh: "Obnoviť"
+ new: "Nový"
+ selector_placeholder: "zadať používateľské meno"
+ name_placeholder: "Názov skupiny, bez medzier, rovnaké pravidlá ako pre uťívateľa"
+ about: "Tu upravíte Vaše členstvo v skupinách a mená"
+ group_members: "Členovia skupiny"
+ delete: "Odstrániť"
+ delete_confirm: "Zmazať túto skupinu?"
+ delete_failed: "Nepodarilo sa zmazať skupinu. Pokiaľ je skupina automatická, nemôže byť zrušená."
+ delete_member_confirm: "Odstrániť '%{username}' zo skupiny '%{group}'?"
+ delete_owner_confirm: "Odobrať vlastnícke práva %{username}'?"
+ name: "Meno"
+ add: "Pridať"
+ add_members: "Pridať členov"
+ custom: "Vlastné"
+ bulk_complete: "Užívatelia boli pridaní do skupiny."
+ bulk: "Hromadné pridanie do skupiny"
+ bulk_paste: "Vlož zoznam používateľov alebo emailov, jeden na riadok:"
+ bulk_select: "(vyberte skupinu)"
+ automatic: "Automaticky"
+ automatic_membership_email_domains: "Užívatelia, ktorí sa zaregistrovali s emailovou doménou uvedenou v zozname budú automaticky pridaní do tejto skupiny. "
+ automatic_membership_retroactive: "Použi pravidlo rovnakej emailovej domény pre pridanie registrovaných užívateľov"
+ default_title: "Štandardné označenie pre všetkých používateľov v tejto skupine"
+ primary_group: "Automaticky nastav ako hlavnú skupinu"
+ group_owners: Vlastníci
+ add_owners: Pridať vlastníkov
+ incoming_email: "Vlastná e-mailová adresa pre príchodziu poštu"
+ incoming_email_placeholder: "zadajte emailovú adresu"
+ api:
+ generate_master: "Vygenerovať Master API kľúč"
+ none: "V súčasnosti neexistujú žiadne aktívne API kľúče."
+ user: "Používateľ"
+ title: "API"
+ key: "API kľúč"
+ generate: "Generovať"
+ regenerate: "Obnov"
+ revoke: "Zrušiť"
+ confirm_regen: "Ste si istý, že chcete nahradiť tento API kľúč novým?"
+ confirm_revoke: "Ste si istý, že chcete obnoviť tento kľúč?"
+ info_html: "Váš API kľúč Vám umožní vytváranie a aktualizovanie tém prostredníctvom volaní JSON."
+ all_users: "Všetci používatelia"
+ note_html: "Držte tento kľúč v tajnosti, všetci užívatelia ktorí ho vlastnia môžu vytvárať ľubovoľné príspevky pod ľubovoľným užívateľským menom. "
+ plugins:
+ title: "Pluginy"
+ installed: "Nainštalované pluginy"
+ name: "Meno"
+ none_installed: "Nemáte nainštalované žiadne pluginy."
+ version: "Verzia"
+ enabled: "Povolené?"
+ is_enabled: "A"
+ not_enabled: "N"
+ change_settings: "Zmeniť nastavenia"
+ change_settings_short: "Nastavenia"
+ howto: "Ako nainštalujem pluginy?"
+ backups:
+ title: "Zálohy"
+ menu:
+ backups: "Zálohy"
+ logs: "Logy"
+ none: "Nie je dostupná žiadna záloha."
+ read_only:
+ enable:
+ title: "Povoliť mód len na čítanie."
+ label: "Povoliť mód len na čítanie."
+ confirm: "Ste si istý, že chcete povoliť mód len na čítanie?"
+ disable:
+ title: "Zakázať mód len na čítanie"
+ label: "Zakázať mód len na čítanie"
+ logs:
+ none: "Zatiaľ žiadne logy..."
+ columns:
+ filename: "Názov súboru"
+ size: "Veľkosť"
+ upload:
+ label: "Upload"
+ title: "Nahrať zálohu do tejto inštancie"
+ uploading: "Upload prebieha..."
+ success: "'{{filename}}' bol úspešne nahratý."
+ error: "Počas nahrávania '{{filename}}' nastala chyba: {{message}}"
+ operations:
+ is_running: "Operácia práve prebieha..."
+ failed: " Zlyhalo vykonanie {{operation}} . Prosím skontrolujte logy. "
+ cancel:
+ label: "Zrušiť"
+ title: "Zrušiť prebiehajúcu operáciu"
+ confirm: "Ste si istý, že chcete zrušiť prebiehajúcu operáciu?"
+ backup:
+ label: "Záloha"
+ title: "Vytvoriť zálohu"
+ confirm: "Prajete si spustiť novú zálohu?"
+ without_uploads: "Áno (nezahŕňať súbory)"
+ download:
+ label: "Stiahnuť"
+ title: "Stiahnuť zálohu"
+ destroy:
+ title: "Odstrániť zálohu"
+ confirm: "Ste si istý, že chcete odstrániť túto zálohu?"
+ restore:
+ is_disabled: "Obnovenie je vypnuté na Nastaveniach stránky."
+ label: "Obnoviť"
+ title: "Obnoviť zálohu"
+ rollback:
+ label: "Vrátiť späť"
+ title: "Vrátiť databázu do predchádzajúceho funkčného stavu"
+ export_csv:
+ user_archive_confirm: "Ste si istý, že si chcete stiahnut svoje príspevky?"
+ success: "Export bol spustený, o jeho skončení budete informovaný správou."
+ failed: "Export zlyhal. Skontrolujte prosím logy."
+ rate_limit_error: "Príspevky možu byť stiahnuté len raz za deň. Skúste opäť zajtra."
+ button_text: "Export"
+ button_title:
+ user: "Exportovať celý zoznam používateľov v CSV formáte."
+ staff_action: "Exportovať celý log akcií redakcie v CSV formáte."
+ screened_email: "Exportovať celý zobrazený zoznam emailov v CSV formáte."
+ screened_ip: "Exportovať celý zobrazený zoznam IP adries v CSV formáte."
+ screened_url: "Exportovať celý zobrazený zoznam URL adries v CSV formáte."
+ export_json:
+ button_text: "Export"
+ invite:
+ button_text: "Poslať pozvánky"
+ button_title: "Poslať pozvánky"
+ customize:
+ title: "Upraviť"
+ long_title: "Úpravy webu"
+ css: "CSS"
+ header: "Hlavička"
+ top: "Vrch"
+ footer: "Päta"
+ embedded_css: "Vnorené CSS"
+ head_tag:
+ text: ""
+ title: "HTML, ktoré bude vložené pred tag"
+ body_tag:
+ text: ""
+ title: "HTML, ktoré bude vložené pred tag"
+ override_default: "Nevkladať štandardné štýly"
+ enabled: "Povolené?"
+ preview: "náhľad"
+ undo_preview: "zmazať náhľad"
+ rescue_preview: "predvolený štýl"
+ explain_preview: "Nastaviť na stránke vlastné štýly"
+ explain_undo_preview: "Vrátiť sa k akruálnym vlastným štýlom"
+ explain_rescue_preview: "Nastavit na stránke štandardné štýly"
+ save: "Uložiť"
+ new: "Nový"
+ new_style: "Nový štýl"
+ import: "Import"
+ import_title: "Vyberte súbor alebo vložte text"
+ delete: "Odstrániť"
+ delete_confirm: "Zmazať túto úpravu?"
+ about: "Upraviť CSS štýly a HTML hlavičky na stránke. Začnite pridaním úpravy."
+ color: "Farba"
+ opacity: "Nepriesvitnosť"
+ copy: "Kopírovať"
+ email_templates:
+ title: "Emailové šablóny"
+ subject: "Predmet"
+ multiple_subjects: "Táto emailova šablóna obsahuje viac predmetov"
+ body: "Telo"
+ none_selected: "Vyberte šablénu emailu pre začatie úpravy."
+ revert: "Vrátiť zmeny"
+ revert_confirm: "Ste si istý, že chcete vrátiť vykonané zmeny späť?"
+ css_html:
+ title: "CSS/HTML"
+ long_title: "Úpravy CSS a HTML"
+ colors:
+ title: "Farby"
+ long_title: "Farebné schémy"
+ about: "Upravte farby použité na stránke bez použitia CSS. Začnite pridaním schémy."
+ new_name: "Nová farebná schéma"
+ copy_name_prefix: "Kópia"
+ delete_confirm: "Zmazať túto farebnú schému?"
+ undo: "späť"
+ undo_title: "Zrušiť zmeny farby a vrátiť sa k predchádzajucej uloženej verzii. "
+ revert: "vrátiť zmeny"
+ revert_title: "Nastaviť východziu farebnú schému Discourse. "
+ primary:
+ name: 'primárny'
+ description: 'Väčšina textov, ikony, a okraje.'
+ secondary:
+ name: 'sekundárny'
+ description: 'Hlavná farba pozadia a farba textu niektorých ovládacích prvkov.'
+ tertiary:
+ name: 'terciárny'
+ description: 'Odkazy, nejaké tlačidlá, upozornenia a zvýrazňovacie farby.'
+ quaternary:
+ name: "štvrťročne"
+ description: "Navigačné odkazy."
+ header_background:
+ name: "pozadie hlavičky"
+ description: "Farba pozadia hlavičky stránky."
+ header_primary:
+ name: "hlavné záhlavie"
+ description: "Texty a ikony v záhlaví stránky."
+ highlight:
+ name: 'zvýraznenie'
+ description: 'Farba pozadia zvýrazneného prvku na stránke, napríklad príspevku alebo témy.'
+ danger:
+ name: 'nebezpečenstvo'
+ description: 'Zvýrazňovacia farba pre akcie ako napríklad mazanie príspevkov a tém.'
+ success:
+ name: 'úspech'
+ description: 'Použitá pre úspešne vykonané akcie.'
+ love:
+ name: 'obľúbené'
+ description: "Farba tlačidla \"Páči sa\""
+ email:
+ title: "Email"
+ settings: "Nastavenia"
+ templates: "Šablóny"
+ preview_digest: "Súhrn"
+ sending_test: "Odosielam testovací email..."
+ error: "CHYBA - %{server_error}"
+ test_error: "Pri posielaní testovacieho emailu nastala chyba. Prosím preverte Vaše emailové nastavenia, overte si, že váš hostiteľ neblokuje emailové spojenia a skúste znova."
+ sent: "Odoslané"
+ skipped: "Preskočené"
+ received: "Obdržané"
+ rejected: "Zamietnuté"
+ sent_at: "Odoslané"
+ time: "Čas"
+ user: "Používateľ"
+ email_type: "Typ emailu"
+ to_address: "Adresát"
+ test_email_address: "testovacia emailová adresa"
+ send_test: "Odoslať testovací email"
+ sent_test: "odoslané!"
+ delivery_method: "Spôsob doručenia"
+ preview_digest_desc: "Náhľad obsahu súhrnných emailov zaslaných neaktívnym užívateľom."
+ refresh: "Obnoviť"
+ format: "Formát"
+ html: "html"
+ text: "text"
+ last_seen_user: "Posledný videný užívateľ"
+ reply_key: "Tlačidlo odpovedať"
+ skipped_reason: "Preskočiť zdôvodnenie"
+ incoming_emails:
+ from_address: "Od"
+ to_addresses: "Komu"
+ cc_addresses: "Kópia"
+ subject: "Predmet"
+ error: "Chyba"
+ none: "Nenájdené žiadne ďalšie emaily."
+ modal:
+ error: "Chyba"
+ filters:
+ from_placeholder: "from@example.com"
+ to_placeholder: "to@example.com"
+ cc_placeholder: "cc@example.com"
+ subject_placeholder: "Predmet..."
+ error_placeholder: "Chyba"
+ logs:
+ none: "Nenašli sa žiadne logy."
+ filters:
+ title: "Filter"
+ user_placeholder: "používateľské meno"
+ address_placeholder: "meno@príklad.com"
+ type_placeholder: "súhrn, registácia..."
+ reply_key_placeholder: "tlačidlo odpovedať"
+ skipped_reason_placeholder: "dôvod"
+ logs:
+ title: "Logy"
+ action: "Akcia"
+ created_at: "Vytvorené"
+ last_match_at: "Posledný zodpovedajúci"
+ match_count: "Zodpovedá"
+ ip_address: "IP"
+ topic_id: "ID témy"
+ post_id: "ID príspevku"
+ category_id: "ID kategórie"
+ delete: 'Odstrániť'
+ edit: 'Upraviť'
+ save: 'Uložiť'
+ screened_actions:
+ block: "blokovať"
+ do_nothing: "nerob nič"
+ staff_actions:
+ title: "Akcie personálu"
+ instructions: "Vyberte uťívateľské meno a akcie na filtrovanie zoznamu. Kliknite na profilovú fotku pre navigáciu na užívateľské stránky."
+ clear_filters: "Ukázať všetko"
+ staff_user: "Člen redakcie"
+ target_user: "Cieľový používateľ"
+ subject: "Predmet"
+ when: "Kedy"
+ context: "Kontext"
+ details: "Detaily"
+ previous_value: "Predchádzajúci"
+ new_value: "Nový"
+ diff: "Rozdiel"
+ show: "Zobraziť"
+ modal_title: "Detaily"
+ no_previous: "Neexistuje predchádzajúca hodnota"
+ deleted: "Žiadna nová hodnota. Záznam bol vymazaný."
+ actions:
+ delete_user: "odstrániť používateľa"
+ change_trust_level: "zmeniť stupeň dôvery"
+ change_username: "zmeniť používateľské meno"
+ change_site_setting: "zmeniť nastavenia webu"
+ change_site_customization: "zmeniť úpravy webu"
+ delete_site_customization: "zmazať úpravy webu"
+ change_site_text: "zmeniť text stránky"
+ suspend_user: "zruš práva užívateľovi"
+ unsuspend_user: "obnov práva užívateľovi"
+ grant_badge: "udeliť odznak"
+ revoke_badge: "odobrať odznak"
+ check_email: "skontrolovať email"
+ delete_topic: "odstrániť tému"
+ delete_post: "odstrániť príspevok"
+ impersonate: "privlastniť"
+ anonymize_user: "anonymizovať používateľa"
+ roll_up: "zbaliť IP bloky"
+ change_category_settings: "zmeniť nastavenia kategórie"
+ delete_category: "odstrániť kategóriu"
+ create_category: "vytvoriť kategóriu"
+ block_user: "blokovať používateľa"
+ unblock_user: "odblokovať používateľa"
+ grant_admin: "udeliť admin"
+ revoke_admin: "odobrať admin"
+ grant_moderation: "udeliť moderovanie"
+ revoke_moderation: "odvolať moderovanie"
+ screened_emails:
+ title: "Kontrolované emaily"
+ description: "Keď niekto skúsi vytvoriť nový účet, nasledujúce emailove adresy budú preverené a registrácia bude zablokovaná, alebo bude vykonaná nejaka iná akcia. "
+ email: "Emailové adresy"
+ actions:
+ allow: "Povoliť"
+ screened_urls:
+ title: "Kontrolované URL adresy"
+ description: "URL adresy v tomto zozname boli použité v príspevkoch užívateľov, ktorí boli identifikovaní ako spameri."
+ url: "URL"
+ domain: "Doména"
+ screened_ips:
+ title: "Kontrolované IP adresy"
+ description: 'IP adresy pod dohľadom. Použi "Povoľ" pre povolenie IP adries.'
+ delete_confirm: "Ste si istý, že chcete zrušiť pravidlo pre %{ip_address}?"
+ roll_up_confirm: "Ste si istý, že chcete zosumarizovať bežne kontrolované IP do podsietí?"
+ rolled_up_some_subnets: "Zakázané IP adresy boli úspešne zosumarizované do podsietí: %{subnets}."
+ rolled_up_no_subnet: "Nebolo čo zbaliť."
+ actions:
+ block: "Blokovať"
+ do_nothing: "Povoliť"
+ allow_admin: "Povoliť admin"
+ form:
+ label: "Nový:"
+ ip_address: "IP adresy"
+ add: "Pridať"
+ filter: "Hľadať"
+ roll_up:
+ text: "Zbaliť"
+ title: "Vytvorí novú podsieť zakázaných záznamov pokiaľ existuje aspoň 'min_ban_entries_for_roll_up' záznamov"
+ logster:
+ title: "Chybové Logy"
+ impersonate:
+ title: "Privlastniť"
+ help: "Použite tento nástroj na privlastnenie si užívateľského účtu na účely debugovania. Po skončení sa budete musieť odhlásiť."
+ not_found: "Tento používateľ sa nenašiel."
+ invalid: "Ľutujeme, nesmiete si privlatniť tohto užívateľa."
+ users:
+ title: 'Používatelia'
+ create: 'Pridať admin používateľa'
+ last_emailed: "Posledný odemailovaný"
+ not_found: "Prepáčte, toto užívateľské meno sa nenachádza v našom systéme."
+ id_not_found: "Prepáčte, toto užívateľské id sa nenachádza v našom systéme."
+ active: "Aktívny"
+ show_emails: "Ukázať Emaily"
+ nav:
+ new: "Nový"
+ active: "Aktívny"
+ pending: "Čakajúca"
+ staff: 'Zamestnanci'
+ suspended: 'Odobrate práva'
+ blocked: 'Zablokovaný'
+ suspect: 'Podozrivý'
+ approved: "Schválený?"
+ approved_selected:
+ one: "schváliť užívateľa"
+ few: "schváliť ({{count}}) užívateľov "
+ other: "schváliť ({{count}}) užívateľov "
+ reject_selected:
+ one: "zamietnuť užívateľa"
+ few: "zamietnuť ({{count}}) užívateľov "
+ other: "zamietnuť ({{count}}) užívateľov "
+ titles:
+ active: 'Aktívni používatelia'
+ new: 'Noví používatelia'
+ pending: 'Užívatelia čakajúci na kontrolu'
+ newuser: 'Užívatelia na Stupni dôvery 0 (Noví užívatelia)'
+ basic: 'Užívatelia na Stupni dôvery 1 (Bežný užívateľ)'
+ member: 'Užívatelia na Stupni dôvery 2 (Člen)'
+ regular: 'Užívatelia na Stupni dôvery 3 (Stály člen)'
+ leader: 'Užívatelia na Stupni dôvery 4 (Vodca)'
+ staff: "Zamestnanci"
+ admins: 'Admin používatelia'
+ moderators: 'Moderátori'
+ blocked: 'Zablokovaní užívatelia'
+ suspended: 'Užívatelia s odobratými právami'
+ suspect: 'Podozriví užívatelia'
+ reject_successful:
+ one: "Úspešne zamietnutý užívateľ"
+ few: "Úspešne zamietnutí %{count} užívatelia"
+ other: "Úspešne zamietnutých %{count} užívateľov"
+ reject_failures:
+ one: "Nepodarilo sa zamietnuť 1 užívateľa"
+ few: "Nepodarilo sa zamietnuť %{count} užívateľov"
+ other: "Nepodarilo sa zamietnuť %{count} užívateľov"
+ not_verified: "Neoverený"
+ check_email:
+ title: "Odhaliť emailovú adresu tohto používateľa"
+ text: "Zobraziť"
+ user:
+ suspend_failed: "Niečo sa pokazilo pri odoberaní práv tomuto užívateľovi {{error}}"
+ unsuspend_failed: "Niečo sa pokazilo pri obnovovaní práv tomuto užívateľovi {{error}}"
+ suspend_duration: "Ako dlho budú užívateľovi odobrate práva?"
+ suspend_duration_units: "(dni)"
+ suspend_reason_label: "Prečo mu odoberáte práva? Tento text sa zobrazí každému na stránke profilu užívateľa a bude zobrazený užívateľovi pri pokuse o prihlásenie. Buďte strucný."
+ suspend_reason: "Dôvod"
+ suspended_by: "Práva odobraté"
+ delete_all_posts: "Zmazať všetky príspevky"
+ delete_all_posts_confirm: "Chystáte sa zmazať %{posts} príspevkov a %{topics} tém. Ste si istý?"
+ suspend: "Odobrať"
+ unsuspend: "Obnoviť"
+ suspended: "Odobrate práva?"
+ moderator: "Moderátor?"
+ admin: "Admin?"
+ blocked: "Blokovaný?"
+ staged: "Dočasný?"
+ show_admin_profile: "Admin"
+ edit_title: "Upraviť názov"
+ save_title: "Uložiť názov"
+ refresh_browsers: "Vynútiť refresh browsera."
+ refresh_browsers_message: "Správa odoslaná všetkým klientom!"
+ show_public_profile: "Ukázať verejný profil"
+ impersonate: 'Privlastniť'
+ ip_lookup: "Vyhľadávanie IP"
+ log_out: "Odhlásiť sa"
+ logged_out: "Užívateľ bol odhlásený na všetkých zariadeniach"
+ revoke_admin: 'Odobrať admin'
+ grant_admin: 'Udeliť admin'
+ revoke_moderation: 'Odobrať moderovanie'
+ grant_moderation: 'Udeliť moderovanie'
+ unblock: 'Odblokovať'
+ block: 'Blokovať'
+ reputation: Reputácia
+ permissions: Práva
+ activity: Aktivita
+ like_count: '"Páči sa" Rozdané / Prijaté'
+ last_100_days: 'za posledných 100 dní'
+ private_topics_count: Súkromné témy
+ posts_read_count: Prečítané príspevky
+ post_count: Vytvorené príspevky
+ topics_entered: Zobrazených tém
+ flags_given_count: Rozdané označenia
+ flags_received_count: Prijaté označenia
+ warnings_received_count: Prijaté varovania
+ flags_given_received_count: 'Rozdané a prijaté označenia'
+ approve: 'Schváliť'
+ approved_by: "schválený"
+ approve_success: "Uťívateľ schválený a bol zaslaný email s aktivačnými inštrukciami"
+ approve_bulk_success: "Úspech! Všetci vybraní uťívateľia boli schválení a oboznáamení."
+ time_read: "Doba Čítania"
+ anonymize: "Anonymizovať používateľa"
+ anonymize_confirm: "Ste si istý že chcete zmeniť tento účet na anonymný? Zmeni to užívateľské meno, email a zmažú sa všetky informácie z profilu. "
+ anonymize_yes: "Áno, zmeň tento účet na anonymný"
+ anonymize_failed: "Nastala chyba pri anonymizovaní účtu."
+ delete: "Odstrániť používateľa"
+ delete_forbidden_because_staff: "Správcovia a moderátori nemôžu byť vymazaní."
+ delete_posts_forbidden_because_staff: "Nedá sa zmazať príspevky správcov a moderátorov."
+ delete_forbidden:
+ one: "Užívatelia nemôžu byť vymazaní ak majú príspevky. Najprv zmažte príspevky až potom užívateľa. (Príspevky staršie ako %{count} deň nemožno zmazať)"
+ few: "Užívatelia nemôžu byť vymazaní ak majú príspevky. Najprv zmažte príspevky až potom užívateľa. (Príspevky staršie ako %{count} dni nemožno zmazať)"
+ other: "Užívatelia nemôžu byť vymazaní ak majú príspevky. Najprv zmažte príspevky až potom užívateľa. (Príspevky staršie ako %{count} dní nemožno zmazať)"
+ cant_delete_all_posts:
+ one: "Nepodarilo sa zmazať všetky príspevky. Niektoré príspevky sú staršie ako %{count} deň. (Nastavenie delete_user_max_post_age )"
+ few: "Nepodarilo sa zmazať všetky príspevky. Niektoré príspevky sú staršie ako %{count} dni. (Nastavenie delete_user_max_post_age )"
+ other: "Nepodarilo sa zmazať všetky príspevky. Niektoré príspevky sú staršie ako %{count} dní. (Nastavenie delete_user_max_post_age )"
+ cant_delete_all_too_many_posts:
+ one: "Nedá sa zmazať všetky píspevky, pretože užívateľ má viac ako 1 príspevok. (delete_all_posts_max)"
+ few: "Nedá sa zmazať všetky píspevky, pretože užívateľ má viac ako %{count} príspevky. (delete_all_posts_max)"
+ other: "Nedá sa zmazať všetky píspevky, pretože užívateľ má viac ako %{count} príspevkov. (delete_all_posts_max)"
+ delete_confirm: "Ste si ISTÝ, že chcete zmazať tohoto užívateľa? Už sa to nedá obnoviť!"
+ delete_and_block: "Zazať a zablokovať tento email a IP adresu"
+ delete_dont_block: "Iba vymazať"
+ deleted: "Používateľ bol vymazaný."
+ delete_failed: "Počas vymazávania používateľa nastala chyba. Pred vymazaním používateľa sa uistite, že všetky jeho príspevky sú zmazané."
+ send_activation_email: "Poslať aktivačný email."
+ activation_email_sent: "Aktivačný emial bol odoslaný."
+ send_activation_email_failed: "Počas odosielania ďalšieho aktivačného emailu nastala chyba. %{error}"
+ activate: "Aktivovať účet"
+ activate_failed: "Počas aktivácie používateľa nastala chyba."
+ deactivate_account: "Deaktivovať účet"
+ deactivate_failed: "Počas deaktivácie používateľa nastala chyba."
+ unblock_failed: 'Nastala chyba pri odblokovaní užívateľa.'
+ block_failed: 'Nastala chyba pri zablokovaní užívateľa.'
+ block_confirm: 'Ste si istý tým, že chcete zablokovať tohoto používateľa? Nebude môcť vytvárať žiadne nové témy alebo príspevky.'
+ block_accept: 'Ano, zablokovať používateľa'
+ deactivate_explanation: "Deaktivovaý užívateľ musí znovu overiť svoj email"
+ suspended_explanation: "Suspendovaní užívatelia sa nemôžu prihlasovať."
+ block_explanation: "Zablokovaní uťívatelia nemôžu zakladať témy ani pridávať príspevky."
+ stage_explanation: "Dočasný používateľ môže prispievať emailom iba do vybraných tém."
+ trust_level_change_failed: "Nastala chyba pri zmene úrovne dôveryhodnosti užívateľa."
+ suspend_modal_title: "Zruš práva užívateľovi"
+ trust_level_2_users: "Užívatelia na 2 Stupni dôvery"
+ trust_level_3_requirements: "Požiadavky pre 3 stupeň"
+ trust_level_locked_tip: "stupeň dôvery je zamknutý, systém užívateľovi stupeň nezvýši ani nezníži "
+ trust_level_unlocked_tip: "stupeň dôvery je odomknutý, systém môže užívateľovi stupeň zvýšiť alebo znížiť"
+ lock_trust_level: "Zamknúť stupeň dôvery"
+ unlock_trust_level: "Odomknúť stupeň dôvery"
+ tl3_requirements:
+ title: "Požiadavky pre stupeň dôvery 3"
+ table_title: "Za posledných %{time_period} dní:"
+ value_heading: "Hodnota"
+ requirement_heading: "Požiadavka"
+ visits: "Návštev"
+ days: "dní"
+ topics_replied_to: "Témy na ktoré odpovedal"
+ topics_viewed: "Zobrazených tém"
+ topics_viewed_all_time: "Videné témy (za celú dobu)"
+ posts_read: "Prečítané príspevky"
+ posts_read_all_time: "Prečítaných príspevkov (za celú dobu)"
+ flagged_posts: "Označené príspevky"
+ flagged_by_users: "Užívatelia, ktorí označili"
+ likes_given: "Rozdaných 'páči sa mi'"
+ likes_received: "Obdržaných 'páči sa mi'"
+ likes_received_days: "Obdržaných 'páči sa mi' na jednotlivé dni"
+ likes_received_users: "Obdržaných 'páči sa mi' na jednotlivých užívateľov"
+ qualifies: "Spĺňa požiadavky pre stupeň dôvery 3"
+ does_not_qualify: "Nespĺňa požiadavky pre stupeň dôvery 3"
+ will_be_promoted: "Bude čoskoro povýšený"
+ will_be_demoted: "Čoskoro bude degradovaný"
+ on_grace_period: "V súčastnosti je v povyšovacej skúšobnej dobe, nebude degradovaný."
+ locked_will_not_be_promoted: "Stupeň dôvery je zamknutý. Nikdy nebude povýšený."
+ locked_will_not_be_demoted: "Stupeň dôvery je zamknutý. Nikdy nebude degradovaný"
+ sso:
+ title: "Jednotné prihlásenie"
+ external_id: "Externé ID"
+ external_username: "Používateľské meno"
+ external_name: "Meno"
+ external_email: "Email"
+ external_avatar_url: "URL profilovej fotky"
+ user_fields:
+ title: "Užívateľské polia"
+ help: "Pridaj polia, ktoré môžu užívatelia vyplniť"
+ create: "Vytvor užívateľske pole"
+ untitled: "Bez názvu"
+ name: "Názov poľa"
+ type: "Typ poľa"
+ description: "Popis poľa"
+ save: "Uložiť"
+ edit: "Upraviť"
+ delete: "Odstrániť"
+ cancel: "Zrušiť"
+ delete_confirm: "Ste si istý, že chcete zmazať toto užívateľské pole?"
+ options: "Možnosti"
+ required:
+ title: "Požadované pri registrácii?"
+ enabled: "povinné"
+ disabled: "nepovinné"
+ editable:
+ title: "Upravovateľné po registrácii?"
+ enabled: "upravovateľné "
+ disabled: "neupravovateľné "
+ show_on_profile:
+ title: "Ukázať na verejnom profile?"
+ enabled: "zobrazené na profile"
+ disabled: "nezobrazené na profile"
+ field_types:
+ text: 'Textové pole'
+ confirm: 'Potvrdenie'
+ dropdown: "Zoznam"
+ site_text:
+ description: "Môžete prispôsobiť hociktorý text na Vašom fóre. Prosím začnite hľadaním nižšie:"
+ search: "Hľadajte text, ktorý chcete upraviť"
+ title: 'Textový obsah'
+ edit: 'uprav'
+ revert: "Vrátiť zmeny"
+ revert_confirm: "Ste si istý, že chcete vrátiť vykonané zmeny späť?"
+ go_back: "Návrat na vyhľadávanie"
+ recommended: "Odporúčame prispôsobenie nasledujúceho textu podľa vašich potrieb:"
+ show_overriden: 'Ukázať iba zmenené'
+ site_settings:
+ show_overriden: 'Ukázať iba zmenené'
+ title: 'Nastavenia'
+ reset: 'zrušiť'
+ none: 'žiadne'
+ no_results: "Žiadne výsledky"
+ clear_filter: "Vyčistiť"
+ add_url: "pridaj URL"
+ add_host: "pridať hostiteľa"
+ categories:
+ all_results: 'Všetky'
+ required: 'Povinné'
+ basic: 'Základné nastavenia'
+ users: 'Používatelia'
+ posting: 'Prispievam'
+ email: 'Email'
+ files: 'Súbory'
+ trust: 'Stupne dôvery'
+ security: 'Bezpečnosť'
+ onebox: "Onebox"
+ seo: 'SEO'
+ spam: 'Spam'
+ rate_limits: 'Limity a obmedzenia'
+ developer: 'Vývojár'
+ embedding: "Vkladám"
+ legal: "Právne záležitosti"
+ uncategorized: 'Ostatné'
+ backups: "Zálohy"
+ login: "Prihlásenie"
+ plugins: "Pluginy"
+ user_preferences: "Užívateľské Nastavenia"
+ badges:
+ title: Odznaky
+ new_badge: Nový odznak
+ new: Nový
+ name: Meno
+ badge: Odznak
+ display_name: Zobrazované meno
+ description: Popis
+ badge_type: Typ odznaku
+ badge_grouping: Skupina
+ badge_groupings:
+ modal_title: Zoskupovanie odznakov
+ granted_by: Pridelené užívateľom
+ granted_at: Pridelené na
+ reason_help: (Odkaze na príspevok, alebo tému)
+ save: Uložiť
+ delete: Odstrániť
+ delete_confirm: Ste si istý, že chcete zmazať tento odznak?
+ revoke: Zrušiť
+ reason: Dôvod
+ expand: Rozbaliť …
+ revoke_confirm: Ste si istý, že chcete obnoviť tento odznak?
+ edit_badges: Upraviť odznaky
+ grant_badge: Prideliť odznaky
+ granted_badges: Pridelené odznaky
+ grant: Prideliť
+ no_user_badges: "%{name} nebol pridelený žiaden odznak."
+ no_badges: Nie sú žiadne odznaky, ktoré môžu byť pridelené.
+ none_selected: "Vyberte odznak, aby ste mohli začať"
+ allow_title: Povoliť použitie odznaku namiesto názvu
+ multiple_grant: Môže byť pridelené viacnásobne
+ listable: Zobraziť odznak na stránke verejných odznakov
+ enabled: Povoliť odznak
+ icon: Ikona
+ image: Obrázok
+ icon_help: "Použi buď font z triedy Awesome, alebo URL na obrázok"
+ query: Požiadavka na Odznak (SQL)
+ target_posts: Požiadavka cieli príspevky
+ auto_revoke: Spúšťať stornovaciu požiadavku denne
+ show_posts: Zobraziť príspevok o pridelení odznaku na stránke odznakov
+ trigger: Spúšťač
+ trigger_type:
+ none: "Obnovovať denne"
+ post_action: "Keď užívateľ zareaguje na príspevok"
+ post_revision: "Keď užívateľ vytvorí príspevok"
+ trust_level_change: "Keď užívateľ zmení stupeň dôvery"
+ user_change: "Keď je užívateľ vytvorený, alebo upravený"
+ preview:
+ link_text: "Prezerať pridelené odznaky"
+ plan_text: "Náhľad na plán požiadaviek"
+ modal_title: "Požiadavka na Odznak Prezeranie"
+ sql_error_header: "Nastala chyba s požiadavkou."
+ error_help: "Pozrite si nasledujäce odkazy pre pomoc s dopytovacími odznakmi."
+ bad_count_warning:
+ header: "UPOZORNENIE!"
+ text: "Chýbajú ukážky práv. Toto sa stane, ak dotaz na odznak vráti ID používateľa alebo príspevku, ktorý neexistuje. Toto môže zapríčiniť neskoršie neočakávané výsledky - prosíme znovu overte Váš dotaz."
+ no_grant_count: "Žiadne odznaky na pridelenie."
+ grant_count:
+ one: "1 odznak na pridelenie"
+ few: "%{count} odznaky na pridelenie"
+ other: "%{count} odznakov na pridelenie"
+ sample: "Vzor:"
+ grant:
+ with: %{username}
+ with_post: %{username} za príspevok v %{link}
+ with_post_time: %{username} za príspevok v %{link} v čase %{time}
+ with_time: %{username} v čase %{time}
+ emoji:
+ title: "Emoji"
+ help: "Pridaj nové emoji, ktoré bude dostupné pre všetkých (TIP: môžete pretiahnuť viac súborov naraz)"
+ add: "Pridaj nové Emoji"
+ name: "Meno"
+ image: "Obrázok"
+ delete_confirm: "Ste si istý, že chcete zmazať: %{name}: emoji?"
+ embedding:
+ get_started: "Pokiaľ chcete vložiť Discourse na inú stránku, začnite pridaním jej hostiteľa."
+ confirm_delete: "Ste si istý, že chcete zmazať tohoto hostiteľa?"
+ sample: "Použite nasledovný HTML kód vo Vašej stránke pre vytvorenie vloženej témy Discourse. Nahraďte REPLACE_ME kanonickou URL adresou stránky, do ktorej to vkladáte."
+ title: "Vkladám"
+ host: "Povolení hostitelia"
+ edit: "uprav"
+ category: "Prispievať do kategórií"
+ add_host: "Pridať hostiteľa"
+ settings: "Nastavenia vkladania"
+ feed_settings: "Nastavenie zdrojov"
+ feed_description: "Zadaním RSS/ATOM kanálu Vašich stránok zlepší schopnosť Discourse vladať Váš obsah."
+ crawling_settings: "Nastavenia vyhľadávača"
+ crawling_description: "Ak Discourse vytvorí tému pre Váš príspevok a neexistuje žiadny RSS/ATOM kanál tak sa pokúsime získať Váš obsah z HTML. Získanie obsahu môže byt niekedy výzva a preto poskytujeme možnosť špecifikovať CSS pravidlá na uľahčenie získania obsahu."
+ embed_by_username: "Užívateľské meno pre vytváranie tém"
+ embed_post_limit: "Maximálny počet vložených príspevkov"
+ embed_username_key_from_feed: "Kľúč na získanie užívateľského mena discourse zo zdroja"
+ embed_truncate: "Skrátiť vložené príspevky"
+ embed_whitelist_selector: "CSS selector pre elementy ktoré je možné vkladať"
+ embed_blacklist_selector: "CSS selector pre elementy ktoré nie je možné vkladať"
+ feed_polling_enabled: "importovať príspevky cez RSS/ATOM"
+ feed_polling_url: "URL adresa zdroja RSS/ATOM na preskúmanie"
+ save: "Uložiť Nastavenia vkladania"
+ permalink:
+ title: "Trvalé odkazy"
+ url: "URL"
+ topic_id: "IT témy"
+ topic_title: "Témy"
+ post_id: "ID príspevku"
+ post_title: "Príspevok"
+ category_id: "ID kategórie"
+ category_title: "Kategória"
+ external_url: "Externá URL"
+ delete_confirm: Ste si istý, že chcete zmazať tento trvalý odkaz?
+ form:
+ label: "Nový:"
+ add: "Pridať"
+ filter: "Hľadať (URL alebo externá URL)"
+ lightbox:
+ download: "stiahnuť"
+ search_help:
+ title: 'Pomoc pri vyhľadávaní'
+ keyboard_shortcuts_help:
+ title: 'Klávesové skratky'
+ jump_to:
+ title: 'Preskočiť na'
+ home: 'g, h Domov'
+ latest: 'g, l Najnovšie'
+ new: 'g, n Nové'
+ unread: 'g, u Neprečítané'
+ categories: 'g, c Kategórie'
+ top: 'g, t Hore'
+ bookmarks: 'g, b Záložky'
+ profile: 'g, p Profil'
+ messages: 'g, m Správy'
+ navigation:
+ title: 'Navigácia'
+ jump: '# Choď na príspevok #'
+ back: 'u Späť'
+ up_down: 'k/j Presuň označené ↑ ↓'
+ open: 'o or EnterOtvoriť zvolenú tému'
+ next_prev: 'shift+j/shift+k Nasledujúca/predchádzajúca sekcia'
+ application:
+ title: 'Aplikácia'
+ create: 'c Vytvoriť novú tému'
+ notifications: 'n Otvor upozornenia'
+ hamburger_menu: '= Otvoriť hamburger menu'
+ user_profile_menu: 'p Otvor užívateľské menu'
+ show_incoming_updated_topics: '. Zobraz aktualizované témy'
+ search: '/ Hľadať'
+ help: '? Pomoc s klávesovými skratkami'
+ dismiss_new_posts: 'x, r Zahodiť Nové/Príspevky'
+ dismiss_topics: 'x, t Zahodiť témy'
+ log_out: 'shift+z shift+z Odhlásiť sa'
+ actions:
+ title: 'Akcie'
+ bookmark_topic: 'f Zmeniť tému záložky'
+ pin_unpin_topic: 'shift+p Pripnúť/Odopnúť tému'
+ share_topic: 'shift+s Zdielať tému'
+ share_post: 's Zdielať príspevok'
+ reply_as_new_topic: 't Odpoveď ako súvisiaca téma'
+ reply_topic: 'shift+r Odpovedať na tému'
+ reply_post: 'r Odpovedať na príspevok'
+ quote_post: 'q Citovať príspevok'
+ like: 'l Označiť príspevok "Páči sa"'
+ flag: '! Označiť príspevok '
+ bookmark: 'b Pridať príspevok do záložiek'
+ edit: 'e Editovat príspevok'
+ delete: 'd Zmazať príspevok'
+ mark_muted: 'm, m Umlčať tému'
+ mark_regular: 'm, r Obyčajná (preddefinovaná) téma'
+ mark_tracking: 'm, w Sledovať tému'
+ mark_watching: 'm, w Sledovať tému'
+ badges:
+ earned_n_times:
+ one: "Získal tento odkaz 1 krát"
+ few: "Získal tento odkaz %{count} krát"
+ other: "Získal tento odkaz %{count} krát"
+ title: Odznaky
+ badge_count:
+ one: "1 Odznak"
+ few: "%{count} Odznaky"
+ other: "%{count} Odznakov"
+ more_badges:
+ one: "+1 Viac"
+ few: "+%{count} Viac"
+ other: "+%{count} Viac"
+ granted:
+ one: "1 povolené"
+ few: "%{count} povolené"
+ other: "%{count} povolených"
+ select_badge_for_title: Vyberte odznak, ktorý chcete použiť ako Váš titul
+ none: "Vyhľadávať pomocou Google
+
diff --git a/config/locales/client.sq.yml b/config/locales/client.sq.yml index caed2c2f490..2f97296d433 100644 --- a/config/locales/client.sq.yml +++ b/config/locales/client.sq.yml @@ -100,6 +100,8 @@ sq: x_years: one: "1 year later" other: "%{count} years later" + previous_month: 'Muaji i Kaluar' + next_month: 'Muaji Tjetër' share: topic: 'shpërnda një lidhje tek kjo temë' post: 'postim #%{postNumber}' @@ -108,8 +110,39 @@ sq: facebook: 'shpërndaje këtë lidhje ne Facebook' google+: 'shpërndaje këtë lidhje në Google+' email: 'dërgo këtë lidhje me email' + action_codes: + split_topic: "ndaje këtë teme %{when}" + invited_user: "ftuar %{who} %{when}" + removed_user: "hequr %{who} %{when}" + autoclosed: + enabled: 'mbyllur %{when}' + disabled: 'hapur %{when}' + closed: + enabled: 'mbyllur %{when}' + disabled: 'hapur %{when}' + archived: + enabled: 'arkivuar %{when}' + disabled: 'ç''arkivuar %{when}' + pinned: + enabled: 'mbërthyer %{when}' + disabled: 'ç''mbërthyer %{when}' + pinned_globally: + enabled: 'mbërthyer globalisht %{when}' + disabled: 'ç''mbërthyer %{when}' + visible: + enabled: 'listuar %{when}' + disabled: 'ç''listuar %{when}' topic_admin_menu: "topic admin actions" emails_are_disabled: "All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent." + s3: + regions: + us_east_1: "US East (N. Virginia)" + us_west_1: "US West (N. California)" + us_west_2: "US West (Oregon)" + us_gov_west_1: "AWS GovCloud (US)" + eu_west_1: "EU (Ireland)" + eu_central_1: "EU (Frankfurt)" + ap_southeast_1: "Asia Pacific (Singapore)" edit: 'redakto titullin dhe kategorinë e kësaj teme' not_implemented: "Kjo veçori nuk është implementuar akoma, na vjen keq!" no_value: "Jo" @@ -123,6 +156,7 @@ sq: admin_title: "Admin" flags_title: "Flags" show_more: "trego më shumë" + show_help: "opsione" links: "Lidhjet" links_lowercase: one: "lidhje" @@ -141,6 +175,8 @@ sq: more: "Më shumë" less: "Më pak" never: "asnjëher" + every_30_minutes: "çdo 30 minuta" + every_hour: "çdo orë" daily: "ditore" weekly: "javore" every_two_weeks: "çdo dy javë" @@ -152,6 +188,7 @@ sq: other: "{{count}} karakterë" suggested_topics: title: "Temat e Sugjeruara" + pm_title: "Mesazhet e Sygjeruara" about: simple_title: "Rreth" title: "Rreth %{title}" @@ -199,6 +236,7 @@ sq: saved: "U ruajt!" upload: "Ngarko" uploading: "Duke nga ngarkuar..." + uploading_filename: "Duke Ngarkuar {{filename}}..." uploaded: "U ngarkua!" enable: "Aktivizo" disable: "Disaktivizo" @@ -206,6 +244,7 @@ sq: revert: "Rikthe" failed: "Dështojë" switch_to_anon: "Mënyrë Anonime" + switch_from_anon: "Dalja e Anonimit" banner: close: "Hiq këtë reklamë." edit: "Edit this banner >>" @@ -228,7 +267,7 @@ sq: one: "This topic has 1 post awaiting approval" other: "This topic has {{count}} posts awaiting approval" confirm: "Ruaj ndryshimet" - delete_prompt: "Are you sure you want to delete %{username}? This will remove all of their posts and block their email and ip address." + delete_prompt: "A jeni te sigurtë që doni të fshini %{username}? Ky veprim do të fshijë çdo shkrim të tyre dhe do bllokojë e-mailin dhe IP e tyre." approval: title: "Post Needs Approval" description: "We've received your new post but it needs to be approved by a moderator before it will appear. Please be patient." @@ -271,19 +310,47 @@ sq: one: "1 user" other: "%{count} users" groups: + empty: + posts: "Nuk ka postim nga anëtarët e këtij grupi." + members: "Nuk ka asnjë anëtar në këtë grup." + mentions: "Nuk ka përmendje në këtë grup." + messages: "Nuk ka mesazhe për këtë grup." + topics: "Nuk ka asnjë temë nga anëtarët e këtij grupi." + add: "Shto" + selector_placeholder: "Shto anëtarë" + owner: "pronar" visible: "Grupi është i dukshëm për të gjithë përdoruesit" title: one: "grupë" other: "grupet" members: "Anëtarë" + topics: "Tema" posts: "Postime" + mentions: "Përmendje" + messages: "Nesazhe" alias_levels: - title: "Kush mund ta përdori këtë grup si një nofkë?" + title: "Kush mund ti bëjë mesazh dhe @permendje këtij grupi?" nobody: "Asnjëri" only_admins: "Vetëm adminët" mods_and_admins: "Vetëm moderatorët dhe Adminët" members_mods_and_admins: "Vetëm anëtarët e grupit, moderatorët dhe administratorët" everyone: "Të gjithë" + trust_levels: + title: "Niveli i besimit automatikisht shtohet për anëtarët e grupit:" + none: "Asnje" + notifications: + watching: + title: "Duke Parë" + description: "Ju do të njoftoheni në çdo postim të ri, dhe numburi i ri i përgjigjeve do të tregohet." + tracking: + title: "Ndjekje" + description: "Ju do të njoftoheni në qoftë se dikush ju pëmend me @emri ose ju përgjigjet, gjithashtu numbri i përgjigjeve do të tregohet." + regular: + title: "Normale" + description: "Ju do të njoftoheni në qoftë se dikush ju përmend me @emrin ose ju përgjigjet." + muted: + title: "Heshtur" + description: "Ju asnjëherë nuk do të njoftoheni për cdo gjë qe mund të ndodhë në këtë teme të këtij grupi." user_action_groups: '1': "Pëlqime të Dhëna" '2': "Pëlqime të marra" @@ -293,7 +360,6 @@ sq: '6': "Responses" '7': "Përmendje" '9': "Citim" - '10': "Shënuar" '11': "Redaktuar" '12': "Sent Items" '13': "Inbox" @@ -303,6 +369,15 @@ sq: all_subcategories: "të gjitha" no_subcategory: "asnjë" category: "Kategori" + category_list: "Trego listen e kateogorive" + reorder: + title: "Rendit Kategoritë" + title_long: "Ri-organizo listën e kategorive" + fix_order: "Rregullo Pozicionet" + fix_order_tooltip: "Jo të gjitha kategoritë kanë një numbë pozicioni unik, kjo mund të shkaktojë rezultate të pa vlefshme." + save: "Ruaje Renditjen" + apply_all: "Apliko" + position: "Pozicioni" posts: "Postime" topics: "Tema" latest: "Të fundit" @@ -345,21 +420,20 @@ sq: private_messages: "Mesazhet" activity_stream: "Aktiviteti" preferences: "Preferencat" + expand_profile: "Shpalos" bookmarks: "Të Preferuarat" bio: "Rreth meje" invited_by: "Të ftuar nga unë" trust_level: "Niveli Besimit" notifications: "Njoftimet" + statistics: "Statistikat" desktop_notifications: label: "Desktop Notifications" not_supported: "Notifications are not supported on this browser. Sorry." perm_default: "Turn On Notifications" perm_denied_btn: "Permission Denied" - perm_denied_expl: "You have denied permission for notifications. Use your browser to enable notifications, then click the button when done. (Desktop: The leftmost icon in the address bar. Mobile: 'Site Info'.)" disable: "Disable Notifications" - currently_enabled: "(currently enabled)" enable: "Enable Notifications" - currently_disabled: "(currently disabled)" each_browser_note: "Note: You have to change this setting on every browser you use." dismiss_notifications: "Shënoj të gjitha si të lexuara" dismiss_notifications_tooltip: "Shëno njoftimet e palexuara si të lexuara" @@ -383,7 +457,6 @@ sq: tracked_categories: "Gjurmuar" tracked_categories_instructions: "You will automatically track all new topics in these categories. A count of new posts will appear next to the topic." muted_categories: "Heshtur" - muted_categories_instructions: "You will not be notified of anything about new topics in these categories, and they will not appear on your unread tab." delete_account: "Fshi Llogarin Time" delete_account_confirm: "Are you sure you want to permanently delete your account? This action cannot be undone!" deleted_yourself: "Llogaria juaj u fshi me sukses." @@ -401,8 +474,6 @@ sq: warnings_received: "paralajmërimet" messages: all: "Të gjithë" - mine: "Mine" - unread: "Palexuar" change_password: success: "(email u dërgua)" in_progress: "(duke dërguar emailin)" @@ -447,10 +518,6 @@ sq: ok: "We will email you to confirm" invalid: "Please enter a valid email address" authenticated: "Your email has been authenticated by {{provider}}" - frequency: - zero: "We'll email you immediately if you haven't read the thing we're emailing you about." - one: "We'll only email you if we haven't seen you in the last minute." - other: "We'll only email you if we haven't seen you in the last {{count}} minutes." name: title: "Emri" instructions: "Emri i Plotë (fakultativ)" @@ -488,6 +555,7 @@ sq: email_settings: "Email" email_digests: title: "When I don't visit here, send an email digest of what's new:" + every_30_minutes: "çdo 30 minuta" daily: "ditore" every_three_days: "çdo 3 ditë" weekly: "javore" @@ -505,11 +573,12 @@ sq: auto_track_options: never: "asnjëherë" immediately: "menjëherë" + after_30_seconds: "pas 30 sekonda" + after_1_minute: "pas 1 minute" invited: search: "shkruaj për të kërkuar ftesat..." title: "Ftesa" user: "Anëtarët e Ftuar" - truncated: "Shfaq {{count}} ftesat e para." redeemed: "Ridërgo ftesat" redeemed_tab: "Redeemed" redeemed_at: "Redeemed" @@ -540,6 +609,8 @@ sq: same_as_email: "Your password is the same as your email." ok: "Fjalëkalimi është i pranueshëm." instructions: "Të paktën %{count} karaktere." + summary: + stats: "Statistikat" associated_accounts: "Logins" ip_address: title: "Adresa IP e Fundit" @@ -565,6 +636,7 @@ sq: server: "Gabim në Server" forbidden: "Ndalohet Hyrja" unknown: "Gabim" + not_found: "Faqja nuk u gjet" desc: network: "Ju lutemi, kontrolloni lidhjen me Internetin." network_fixed: "Duket sikur u ktheve." @@ -580,7 +652,6 @@ sq: logout: "Ju jeni shkëputur!" refresh: "Rifresko" read_only_mode: - enabled: "Read-only mode is enabled. You can continue to browse the site but interactions may not work." login_disabled: "Login is disabled while the site is in read only mode." learn_more: "mëso më shumë..." year: 'vit' @@ -598,10 +669,10 @@ sq: replies_lowercase: one: përgjigje other: përgjigje + signup_cta: + hide_forever: "jo faleminderit" summary: enabled_description: "You're viewing a summary of this topic: the most interesting posts as determined by the community." - description: "Janë {{count}} përgjigje." - description_time: "There are {{count}} replies with an estimated read time of {{readingTime}} minutes." enable: 'Përmbidhë këtë Diskutim' disable: 'Shfaq të gjithë Postimet' deleted_filter: @@ -655,6 +726,7 @@ sq: admin_not_allowed_from_ip_address: "You can't log in as admin from that IP address." resend_activation_email: "Click here to send the activation email again." sent_activation_email_again: "We sent another activation email to you at {{currentEmail}}. It might take a few minutes for it to arrive; be sure to check your spam folder." + to_continue: "Ju lutem, Identifikohuni" google: title: "me Google" message: "Authenticating with Google (make sure pop up blockers are not enabled)" @@ -677,8 +749,13 @@ sq: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + more_emoji: "më shumë..." + options: "Opsione" add_warning: "This is an official warning." posting_not_on_topic: "Which topic do you want to reply to?" saving_draft_tip: "duke e ruajtur..." @@ -707,7 +784,7 @@ sq: edit_reason_placeholder: "pse jeni duke e redaktuar?" show_edit_reason: "(arsye redaktimit)" view_new_post: "Shikoni postimin tuaj te ri." - saving: "Duke ruajtur..." + saving: "Duke e ruajtur" saved: "U Ruajt!" saved_draft: "Post draft in progress. Select to resume." uploading: "Duke nga ngarkuar..." @@ -734,10 +811,10 @@ sq: heading_title: "Heading" heading_text: "Heading" hr_title: "Horizontal Rule" - undo_title: "Rikthe" - redo_title: "Ribëj" help: "Markdown Editing Help" toggler: "hide or show the composer panel" + modal_ok: "OK" + modal_cancel: "Anulo" admin_options_title: "Optional staff settings for this topic" auto_close: label: "Auto-close topic time:" @@ -756,7 +833,6 @@ sq: mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -766,6 +842,9 @@ sq: moved_post: "
{{username}} moved {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
Earned '{{description}}'
" + alt: + quoted: "Cituar nga" + posted: "Postim nga" popup: mentioned: '{{username}} mentioned you in "{{topic}}" - {{site_title}}' quoted: '{{username}} quoted you in "{{topic}}" - {{site_title}}' @@ -779,14 +858,13 @@ sq: from_my_computer: "Nga çdo paisje" from_the_web: "Nga web" remote_tip: "lidhje tek imazhi" - remote_tip_with_attachments: "lidhje për tek imazhi ose skedari ({{authorized_extensions}})" local_tip: "select images from your device" - local_tip_with_attachments: "select images or files from your device ({{authorized_extensions}})" hint: "(you can also drag & drop into the editor to upload them)" uploading: "Duke ngarkaur" select_file: "Select File" image_link: "link your image will point to" search: + sort_by: "Rendit sipas" title: "search topics, posts, users, or categories" no_results: "Nuk i gjet asnjë rezultat." no_more_results: "No more results found." @@ -798,6 +876,7 @@ sq: category: "Kërko tek kategoria \"{{category}}\"" topic: "Kërko tek kjo temë" private_messages: "Search messages" + new_item: "e re" go_back: 'kthehu mbrapa' not_logged_in_user: 'user page with summary of current activity and preferences' current_user: 'go to your user page' @@ -805,10 +884,6 @@ sq: bulk: reset_read: "Reseto Leximet" delete: "Delete Topics" - dismiss_posts: "Dismiss Posts" - dismiss_posts_tooltip: "Clear unread counts on these topics but continue to show them on my unread list when new posts are made" - dismiss_topics: "Dismiss Topics" - dismiss_topics_tooltip: "Stop showing these topics in my unread list when new posts are made" dismiss_new: "Dismiss New" toggle: "toggle bulk selection of topics" actions: "Bulk Actions" @@ -831,9 +906,6 @@ sq: category: "Nuk ka {{category}} tema." top: "Nuk ka tema të populluara." search: "There are no search results." - educate: - new: '
Your new topics appear here.
By default, topics are considered new and will show a new indicator if they were created in the last 2 days.
You can change this in your preferences.
' - unread: '
Your unread topics appear here.
By default, topics are considered unread and will show unread counts 1 if you:
Or if you have explicitly set the topic to Tracked or Watched via the notification control at the bottom of each topic.
You can change this in your preferences.
' bottom: latest: "Nuk ka më tema së fundmi." hot: "Nuk ka më tema të populluara." @@ -939,15 +1011,16 @@ sq: title: "Tracking" description: "A count of new replies will be shown for this topic. You will be notified if someone mentions your @name or replies to you. " regular: + title: "Normal" description: "You will be notified if someone mentions your @name or replies to you." regular_pm: + title: "Normal" description: "You will be notified if someone mentions your @name or replies to you." muted_pm: title: "Muted" description: "You will never be notified of anything about this message." muted: title: "Muted" - description: "You will never be notified of anything about this topic, and it will not appear on your unread tab." actions: recover: "Un-Delete Topic" delete: "Fshi Diskutimin" @@ -988,25 +1061,14 @@ sq: unpin: "Remove this topic from the top of the {{categoryLink}} category." unpin_until: "Remove this topic from the top of the {{categoryLink}} category or wait until %{until}." pin_note: "Users can unpin the topic individually for themselves." - already_pinned: - zero: "There are no topics pinned in {{categoryLink}}." - one: "Topics currently pinned in {{categoryLink}}: 1." - other: "Topics currently pinned in {{categoryLink}}: {{count}}." pin_globally: "Make this topic appear at the top of all topic lists until" confirm_pin_globally: "You already have {{count}} globally pinned topics. Too many pinned topics may be a burden for new and anonymous users. Are you sure you want to pin another topic globally?" unpin_globally: "Remove this topic from the top of all topic lists." unpin_globally_until: "Remove this topic from the top of all topic lists or wait until %{until}." global_pin_note: "Users can unpin the topic individually for themselves." - already_pinned_globally: - zero: "There are no topics pinned globally." - one: "Topics currently pinned globally: 1." - other: "Topics currently pinned globally: {{count}}." make_banner: "Make this topic into a banner that appears at the top of all pages." remove_banner: "Remove the banner that appears at the top of all pages." banner_note: "Users can dismiss the banner by closing it. Only one topic can be bannered at any given time." - already_banner: - zero: "There is no banner topic." - one: "There is currently a banner topic." inviting: "Inviting..." automatically_add_to_groups_optional: "This invite also includes access to these groups: (optional, admin only)" automatically_add_to_groups_required: "This invite also includes access to these groups: (Required, admin only)" @@ -1106,10 +1168,6 @@ sq: has_likes_title: one: "1 person liked this post" other: "{{count}} people liked this post" - has_likes_title_you: - zero: "ju pëlqeni këtë post" - one: "ju dhe 1 person tjetër pëlqeni këtë post" - other: "you and {{count}} other people liked this post" errors: create: "Na vjen keq, por ndodhi një gabim gjatë hapjes së temës. Provojeni përsëri." edit: "Na vjen keq, ndodhi një gabim gjatë redaktimit të temës. Provojeni përsëri." @@ -1127,8 +1185,6 @@ sq: no_value: "Jo, mbaji" yes_value: "Po, braktise" via_email: "this post arrived via email" - wiki: - about: "this post is a wiki; basic users can edit it" archetypes: save: 'Ruaj Opsionet' controls: @@ -1176,18 +1232,6 @@ sq: bookmark: "Undo bookmark" like: "Anulo pëlqimin" vote: "Rikthe votën" - people: - off_topic: "{{icons}} flagged this as off-topic" - spam: "{{icons}} flagged this as spam" - spam_with_url: "{{icons}} flagged this as spam" - inappropriate: "{{icons}} flagged this as inappropriate" - notify_moderators: "{{icons}} notified moderators" - notify_moderators_with_url: "{{icons}} notified moderators" - notify_user: "{{icons}} sent a message" - notify_user_with_url: "{{icons}} sent a message" - bookmark: "{{icons}} bookmarked this" - like: "{{icons}} liked this" - vote: "{{icons}} voted for this" by_you: off_topic: "You flagged this as off-topic" spam: "You flagged this as spam" @@ -1247,10 +1291,6 @@ sq: vote: one: "1 person voted for this post" other: "{{count}} people voted for this post" - edits: - one: 1 redaktim - other: "{{count}} edits" - zero: no edits delete: confirm: one: "Are you sure you want to delete that post?" @@ -1328,19 +1368,15 @@ sq: notifications: watching: title: "Watching" - description: "You will automatically watch all new topics in these categories. You will be notified of all new posts and topics, and a count of new replies will appear for these topics." tracking: title: "Tracking" - description: "You will automatically track all new topics in these categories. A count of new replies will appear for these topics." regular: - title: "Regular" + title: "Normal" description: "You will be notified if someone mentions your @name or replies to you." muted: title: "Muted" - description: "You will not be notified of anything about new topics in these categories, and they will not appear on your unread tab." flagging: title: 'Faleminderit për ndihmën që i jepni këtij komuniteti!' - private_reminder: 'flags are private, only visible to staff' action: 'Flag Post' take_action: "Take Action" notify_action: 'Mesazh' @@ -1388,7 +1424,6 @@ sq: help: "This topic is unpinned for you; it will display in regular order" pinned_globally: title: "Pinned Globally" - help: "This topic is pinned globally; it will display at the top of all lists" pinned: title: "Pinned" help: "This topic is pinned for you; it will display at the top of its category" @@ -1431,10 +1466,6 @@ sq: with_topics: "%{filter} topics" with_category: "%{filter} %{category} topics" latest: - title: - zero: "Latest" - one: "Të fundit (1)" - other: "Të fundit ({{count}})" help: "temat me postime të fundit" hot: title: "Kryesoret" @@ -1450,23 +1481,11 @@ sq: title_in: "Category - {{categoryName}}" help: "all topics grouped by category" unread: - title: - zero: "Palexuar" - one: "Palexuar (1)" - other: "Palexuar ({{count}})" + title: "Palexuar " help: "topics you are currently watching or tracking with unread posts" - lower_title_with_count: - one: "1 pa lexuar" - other: "{{count}} unread" new: - lower_title_with_count: - one: "1 e re" - other: "{{count}} të ri" lower_title: "e re" - title: - zero: "Tema të Reja" - one: "Tema të Reja (1)" - other: "Të Reja ({{count}})" + title: "I Ri" help: "topics created in the last few days" posted: title: "Postimet e Mia" @@ -1475,10 +1494,6 @@ sq: title: "Bookmarks" help: "topics you have bookmarked" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}} (1)" - other: "{{categoryName}} ({{count}})" help: "latest topics in the {{categoryName}} category" top: title: "Kryesoret" @@ -1720,11 +1735,9 @@ sq: is_disabled: "Restore is disabled in the site settings." label: "Rikthe" title: "Restore the backup" - confirm: "Are your sure you want to restore this backup?" rollback: label: "Rollback" title: "Rollback the database to previous working state" - confirm: "Are your sure you want to rollback the database to the previous working state?" export_csv: user_archive_confirm: "Are you sure you want to download your posts?" success: "Export initiated, you will be notified via message when the process is complete." @@ -1818,13 +1831,9 @@ sq: love: name: 'love' description: "The like button's color." - wiki: - name: 'wiki' - description: "Base color used for the background of wiki posts." email: - title: "Email" settings: "Rregullimet" - all: "Të gjithë" + preview_digest: "Preview Digest" sending_test: "Sending test Email..." error: "ERROR - %{server_error}" test_error: "There was a problem sending the test email. Please double-check your mail settings, verify that your host is not blocking mail connections, and try again." @@ -1839,7 +1848,6 @@ sq: send_test: "Send Test Email" sent_test: "u dërgua!" delivery_method: "Delivery Method" - preview_digest: "Preview Digest" refresh: "Rifresko" format: "Formati" html: "html" @@ -1971,9 +1979,6 @@ sq: pending: 'Users Pending Review' newuser: 'Users at Trust Level 0 (New User)' basic: 'Users at Trust Level 1 (Basic User)' - regular: 'Users at Trust Level 2 (Member)' - leader: 'Users at Trust Level 3 (Regular)' - elder: 'Users at Trust Level 4 (Leader)' staff: "Stafi" admins: 'Admin Users' moderators: 'Moderators' @@ -2083,7 +2088,6 @@ sq: unlock_trust_level: "Unlock Trust Level" tl3_requirements: title: "Requirements for Trust Level 3" - table_title: "Në 100 ditët e fundit:" value_heading: "Vlera" requirement_heading: "Requirement" visits: "Vizita" @@ -2144,8 +2148,8 @@ sq: confirm: 'Confirmation' dropdown: "Dropdown" site_text: - none: "Choose a type of content to begin editing." title: 'Text Content' + edit: 'redakto' site_settings: show_overriden: 'Only show overridden' title: 'Rregullimet' @@ -2232,10 +2236,6 @@ sq: bad_count_warning: header: "KUJDES!" text: "There are missing grant samples. This happens when the badge query returns user IDs or post IDs that do not exist. This may cause unexpected results later on - please double-check your query." - grant_count: - zero: "No badges to be assigned." - one: "1 badge to be assigned." - other: "%{count} badges to be assigned." sample: "Shëmbull:" grant: with: %{username} @@ -2249,6 +2249,8 @@ sq: name: "Name" image: "Imazh" delete_confirm: "Are you sure you want to delete the :%{name}: emoji?" + embedding: + edit: "redakto" permalink: title: "Permalinks" url: "URL" @@ -2317,8 +2319,6 @@ sq: mark_watching: 'm, w Watch topic' badges: title: Badges - allow_title: "can be used as a title" - multiple_grant: "can be awarded multiple times" badge_count: one: "1 Badge" other: "%{count} Badges" @@ -2341,85 +2341,3 @@ sq: name: Other posting: name: Posting - badge: - editor: - name: Editor - description: First post edit - basic_user: - name: Basic - description: Granted all essential community functions - member: - name: Member - description: Granted invitations - regular: - name: Regular - description: Granted recategorize, rename, followed links and lounge - leader: - name: Leader - description: Granted global edit, pin, close, archive, split and merge - welcome: - name: Welcome - description: Received a like - autobiographer: - name: Autobiographer - description: Filled user profile information - anniversary: - name: Përvjetori - description: Active member for a year, posted at least once - nice_post: - name: Nice Post - description: Received 10 likes on a post. This badge can be granted multiple times - good_post: - name: Good Post - description: Received 25 likes on a post. This badge can be granted multiple times - great_post: - name: Great Post - description: Received 50 likes on a post. This badge can be granted multiple times - nice_topic: - name: Nice Topic - description: Received 10 likes on a topic. This badge can be granted multiple times - good_topic: - name: Good Topic - description: Received 25 likes on a topic. This badge can be granted multiple times - great_topic: - name: Great Topic - description: Received 50 likes on a topic. This badge can be granted multiple times - nice_share: - name: Nice Share - description: Shared a post with 25 unique visitors - good_share: - name: Good Share - description: Shared a post with 300 unique visitors - great_share: - name: Great Share - description: Shared a post with 1000 unique visitors - first_like: - name: Pëlqimi i Parë - description: Liked a post - first_flag: - name: First Flag - description: Flagged a post - promoter: - name: Promoter - description: Invited a user - campaigner: - name: Campaigner - description: Invited 3 basic users (trust level 1) - champion: - name: Champion - description: Invited 5 members (trust level 2) - first_share: - name: First Share - description: Shared a post - first_link: - name: First Link - description: Added an internal link to another topic - first_quote: - name: Citimi i Parë - description: Quoted a user - read_guidelines: - name: Read Guidelines - description: Read the community guidelines - reader: - name: Lexues - description: Read every post in a topic with more than 100 posts diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml index b2608010cec..f91320f6982 100644 --- a/config/locales/client.sv.yml +++ b/config/locales/client.sv.yml @@ -8,6 +8,9 @@ sv: js: number: + format: + separator: "." + delimiter: "," human: storage_units: format: '%n %u' @@ -19,12 +22,17 @@ sv: kb: KB mb: MB tb: TB + short: + thousands: "{{number}}k" + millions: "{{number}}M" dates: time: "h:mm a" long_no_year: "MMM D h:mm a" long_no_year_no_time: "MMM D" + full_no_year_no_time: "MMMM Do" long_with_year: "D MMM, YYYY h:mm a" long_with_year_no_time: "D MMM, YYYY" + full_with_year_no_time: "MMMM Do, YYYY" long_date_with_year: "D MMM, 'YY LT" long_date_without_year: "D MMM, LT" long_date_with_year_without_time: "D MMM, 'YY" @@ -75,10 +83,10 @@ sv: medium_with_ago: x_minutes: one: "1 min sedan" - other: "%{count} min sedan" + other: "%{count} minuter sedan" x_hours: one: "1 timme sedan" - other: "%{count} tim sedan" + other: "%{count} timmar sedan" x_days: one: "1 dag sedan" other: "%{count} dagar sedan" @@ -101,6 +109,7 @@ sv: google+: 'dela denna länk på Google+' email: 'skicka denna länk i ett email' action_codes: + split_topic: "Dela den här tråden %{when}" autoclosed: enabled: 'stängdes %{when}' disabled: 'öppnades %{when}' @@ -112,7 +121,7 @@ sv: disabled: 'avarkiverades %{when}' pinned: enabled: 'klistrades %{when}' - topic_admin_menu: "ämne admin åtgärder" + topic_admin_menu: "ämne administratörs åtgärder" emails_are_disabled: "All utgående e-post har blivit globalt deaktiverad av en administratör. Inga e-postnotifikationer av något slag kommer att skickas ut." edit: 'redigera titel och kategori för denna tråd' not_implemented: "Denna funktion har inte implementerats än, vi beklagar!" @@ -127,6 +136,7 @@ sv: admin_title: "Admin" flags_title: "Flaggningar" show_more: "visa mer" + show_help: "alternativ" links: "Länkar" links_lowercase: one: "länk" @@ -203,6 +213,7 @@ sv: saved: "Sparat!" upload: "Ladda upp" uploading: "Laddar upp..." + uploading_filename: "Laddar upp {{filename}}..." uploaded: "Uppladdad!" enable: "Aktivera" disable: "Avaktivera" @@ -232,7 +243,6 @@ sv: one: "Detta ämne har 1 ämne som inväntar godkännande" other: "Detta ämne har {{count}} inlägg som inväntar godkännande" confirm: "Spara ändringar" - delete_prompt: "Är du säker på att du vill ta bort %{username}? Detta kommer ta bort all deras poster och blockera deras epostadresser samt IP-adresser." approval: title: "Inlägget behöver godkännande" description: "Vi har mottagit ditt nya inlägg men det behöver bli godkänt av en moderator innan det kan visas. Ha tålamod." @@ -275,6 +285,9 @@ sv: one: "1 användare" other: "%{count} användare" groups: + add: "Lägg till" + selector_placeholder: "Lägg till medlemmar" + owner: "ägare" visible: "Gruppen är synlig för alla användare" title: one: "grupp" @@ -282,7 +295,6 @@ sv: members: "Medlemmar" posts: "Inlägg" alias_levels: - title: "Vem kan använda denna grupp som ett alias?" nobody: "Ingen" only_admins: "Bara administratörer" mods_and_admins: "Bara moderatorer och administratörer" @@ -290,6 +302,11 @@ sv: everyone: "Alla" trust_levels: none: "Inga" + notifications: + regular: + title: "Normal" + muted: + title: "Tystad" user_action_groups: '1': "Gillningar givna" '2': "Gillningar mottagna" @@ -299,7 +316,6 @@ sv: '6': "Svar" '7': "Omnämnanden" '9': "Citat" - '10': "Stjärnmärkt" '11': "Redigeringar" '12': "Skickade föremål" '13': "Inkorg" @@ -309,6 +325,7 @@ sv: all_subcategories: "alla" no_subcategory: "ingen" category: "Kategori" + category_list: "Visa kategori-lista" reorder: title: "Sortera kategorier" title_long: "Sortera litan av katergorier" @@ -343,6 +360,8 @@ sv: topics_entered: "besökta ämnen" post_count: "# inlägg" confirm_delete_other_accounts: "Är du säker på att du vill ta bort dessa här konton?" + user_fields: + none: "(välj ett alternativ)" user: said: "{{username}}:" profile: "Profil" @@ -354,11 +373,14 @@ sv: private_messages: "Meddelanden" activity_stream: "Aktivitet" preferences: "Inställningar" + expand_profile: "Expandera" bookmarks: "Bokmärken" bio: "Om mig" invited_by: "Inbjuden Av" trust_level: "Förtroendenivå" notifications: "Notifieringar" + desktop_notifications: + perm_denied_btn: "Behörighet saknas" dismiss_notifications: "Markera alla som lästa" dismiss_notifications_tooltip: "Markera alla olästa aviseringar som lästa" disable_jump_reply: "Hoppa inte till mitt inlägg efter att jag har svarat" @@ -381,7 +403,6 @@ sv: tracked_categories: "Bevakade" tracked_categories_instructions: "Du kommer automatiskt att följa alla nya ämnen i dessa kategorier. Antalet nya inlägg visas bredvid ämnet." muted_categories: "Tystad" - muted_categories_instructions: "Du kommer inte att få notifieringar om nya ämnen inom dessa kategorier, och de kommer inte att visas under din \"oläst\"-flik." delete_account: "Radera mitt konto" delete_account_confirm: "Är du säker på att du vill ta bort ditt konto permanent? Denna åtgärd kan inte ångras!" deleted_yourself: "Ditt konto har tagits bort." @@ -399,8 +420,13 @@ sv: warnings_received: "varningar" messages: all: "Alla" - mine: "Mina" - unread: "Olästa" + inbox: "Inkorg" + sent: "Skickat" + archive: "Arkiv" + groups: "Mina Grupper" + bulk_select: "Välj meddelanden" + move_to_inbox: "Flytta till inkorg" + select_all: "Markera alla" change_password: success: "(e-brev skickat)" in_progress: "(skickar e-brev)" @@ -444,8 +470,8 @@ sv: ok: "Vi skickar e-post till dig för bekräftelse" invalid: "Vänligen ange en giltig e-postadress" authenticated: "Din e-postadress har blivit verifierad av {{provider}}" + frequency_immediately: "Vi kommer att skicka e-post till dig omedelbart om du inte har läst det som vi skickar e-post till dig om." frequency: - zero: "Vi kommer att skicka e-post till dig omedelbart om du inte har läst det som vi skickar e-post till dig om." one: "Vi skickar bara e-post om du inte synts till den senaste minuten." other: "Vi skickar bara e-post om du inte synts till de senaste {{count}} minuterna." name: @@ -500,15 +526,23 @@ sv: after_1_day: "skapade de senaste dagarna" after_2_days: "skapade de senaste 2 dagarna" after_1_week: "skapade den senaste veckan" + after_2_weeks: "skapade de senaste 2 veckorna" auto_track_topics: "Följ automatiskt nya ämnen jag går in i" auto_track_options: never: "aldrig" immediately: "genast" + after_30_seconds: "efter 30 sekunder" + after_1_minute: "efter 1 minut" + after_2_minutes: "efter 2 minuter" + after_3_minutes: "efter 3 minuter" + after_4_minutes: "efter 4 minuter" + after_5_minutes: "efter 5 minuter" + after_10_minutes: "efter 10 minuter" invited: search: "sök efter inbjudningar..." title: "Inbjudningar" user: "Inbjuden Användare" - truncated: "Visar de första {{count}} inbjudningarna." + sent: "skickat" redeemed: "Inlösta Inbjudnignar" redeemed_at: "Inlöst" pending: "Avvaktande Inbjudningar" @@ -577,7 +611,6 @@ sv: logout: "Du loggades ut." refresh: "Uppdatera" read_only_mode: - enabled: "Skrivskyddat läge är aktiverat. Du kan fortsätta visa sidan men interaktioner kanske inte fungerar." login_disabled: "Det går inte att logga in medan siten är i skrivskyddat läge." learn_more: "lär dig mer..." year: 'år' @@ -595,10 +628,10 @@ sv: replies_lowercase: one: svar other: svar + signup_cta: + hide_forever: "Nej tack" summary: enabled_description: "Sammanfattning över de inlägg som användarna tycker är mest intressanta." - description: "Det finns {{count}} svar." - description_time: "Det finns {{count}} svar med en uppskattad lästid på {{readingTime}} minuter." enable: 'Sammanfatta detta ämne' disable: 'Visa alla inlägg' deleted_filter: @@ -651,6 +684,7 @@ sv: admin_not_allowed_from_ip_address: "Du kan inte logga in som admin från den IP-adressen." resend_activation_email: "Klicka här för att skicka aktiveringsmailet igen." sent_activation_email_again: "Vi har skickat ännu ett aktiveringsmail till dig via {{currentEmail}}. Det kan ta ett par minuter för det att komma fram; var noga med att kolla din skräppost." + to_continue: "Var vänligen och logga in" google: title: "med Google" message: "Autentiserar med Google (kolla så att pop up-blockare inte är aktiverade)" @@ -673,8 +707,12 @@ sv: google: "Google" twitter: "Twitter" emoji_one: "Emoji Ett" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + more_emoji: "mer..." add_warning: "Det här är en officiell varning" posting_not_on_topic: "Vilket ämne vill du svara på?" saving_draft_tip: "sparar…" @@ -703,7 +741,7 @@ sv: edit_reason_placeholder: "varför redigerar du?" show_edit_reason: "(lägg till anledningar för redigering)" view_new_post: "Visa ditt nya inlägg." - saving: "Sparar..." + saving: "sparar" saved: "Sparat!" saved_draft: "Utkast för inlägg. Välj för att fortsätta." uploading: "Laddar upp..." @@ -718,6 +756,7 @@ sv: link_description: "skriv en länkbeskrivning här" link_dialog_title: "Infoga Hyperlänk" link_optional_text: "valfri titel" + link_placeholder: "http://example.com \"valfri text\"" quote_title: "Citat" quote_text: "Citat" code_title: "Förformaterad text" @@ -730,10 +769,10 @@ sv: heading_title: "Rubrik" heading_text: "Rubrik" hr_title: "Horisontell linje" - undo_title: "Ångra" - redo_title: "Återställ" help: "Markdown Redigeringshjälp" toggler: "Dölj eller visa composer-panelen" + modal_ok: "OK" + modal_cancel: "Avbryt" admin_options_title: "Valfria personalinställningar för detta ämne" auto_close: label: "Stäng automatiskt ämnet efter:" @@ -752,7 +791,6 @@ sv: mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -762,6 +800,13 @@ sv: moved_post: "
{{username}} flyttade {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
Fötjänade '{{description}}'
" + alt: + posted: "Postat av" + liked: "Gillade ditt inlägg" + private_message: "Privat meddelande från" + invitee_accepted: "Inbjudan accepterades av" + moved_post: "Ditt inlägg blev flyttad av" + linked: "Länk till ditt inlägg" popup: mentioned: '{{username}} nämnde dig i "{{topic}}" - {{site_title}}' quoted: '{{username}} citerade dig i "{{topic}}" - {{site_title}}' @@ -775,14 +820,20 @@ sv: from_my_computer: "Från min enhet" from_the_web: "Från webben" remote_tip: "länk till bild" - remote_tip_with_attachments: "länk till bild eller fil ({{authorized_extensions}})" + remote_tip_with_attachments: "länk till bild eller fil {{authorized_extensions}}" + local_tip: "välj bilder från din enhet" hint: "(du kan också dra & släppa in i redigeraren för att ladda upp dem)" uploading: "Laddar upp bild" select_file: "Välj fil" image_link: "länk dit din bild ska peka" search: + sort_by: "Sortera efter" + latest_post: "Senaste inlägg" + select_all: "Markera Alla" title: "sök efter ämnen, inlägg, användare, eller kategorier" no_results: "Inga resultat hittades." + no_more_results: "Inga fler resultat hittades." + search_help: Sökhjälp searching: "Söker ..." post_format: "#{{post_number}} av {{username}}" context: @@ -790,6 +841,7 @@ sv: category: "Sök i kategorin \"{{category}}\"" topic: "Sök i denna diskussion" private_messages: "Sök meddelanden" + new_item: "ny" go_back: 'gå tillbaka' not_logged_in_user: 'användarsida med sammanställning av aktuell aktivitet och inställningar' current_user: 'gå till din användarsida' @@ -797,10 +849,6 @@ sv: bulk: reset_read: "Återställ Lästa" delete: "Ta bort diskussioner" - dismiss_posts: "Avfärda inlägg" - dismiss_posts_tooltip: "Nollställ räknaren för olästa i dessa diskussioner men fortsätt visa mig dem på min olästalista när nya inlägg har gjorts. " - dismiss_topics: "Avfärda Diskussioner" - dismiss_topics_tooltip: "Sluta visa mig dessa diskussioner i min olästalista när nya inlägg har gjorts" dismiss_new: "Avfärda Nya" toggle: "toggla val av multipla ämnen" actions: "Massändringar" @@ -823,9 +871,6 @@ sv: category: "Det finns inga ämnen i {{category}}." top: "Det finns inga toppämnen." search: "Inga sökresultat hittades." - educate: - new: '
Dina nya ämnen hamnar här.
Som standard är ämnen sedda som nya och kommer att visa en ny indikator om de skapats de senaste 2 dagarna.
Du kan ändra detta i dina inställningar.
' - unread: '
Dina olästa ämnen hamnar här
Som standard är ämnen sedda som olästa och kommer att visa antal olästa 1 om du:
Eller om du explicit har satt ämnet till Följd eller Sedd via notifieringspanelen längst ned i varje ämne.
Du kan ändra detta i dina inställningar.
' bottom: latest: "Det finns inga fler senaste ämnen." hot: "Det finns inga fler heta ämnen." @@ -931,15 +976,16 @@ sv: title: "Följer" description: "En räknare över antal nya svar visas för detta ämne. Du notifieras om någon nämner ditt @namn eller svarar dig." regular: + title: "Normal" description: "Du kommer att få en notifiering om någon nämner ditt @namn eller svarar dig." regular_pm: + title: "Normal" description: "Du kommer att notifieras om någon nämner ditt @namn eller svarar dig." muted_pm: title: "tystade" description: "Du kommer aldrig bli notifierad om något gällande detta meddelande." muted: title: "Dämpad" - description: "Du kommer aldrig meddelas om detta ämne alls, och den kommer inte visas i din \"oläst\"-flik." actions: recover: "Återställ ämne" delete: "Radera ämne" @@ -978,23 +1024,12 @@ sv: confirm_pin: "Du har redan {{count}} klistrade ämnen. För många klistrade ämnen kan vara störande för nya och anonyma användare. Är du säker på att du vill klistra ytterligare ett ämne i denna kategori?" unpin: "Ta bort detta ämne från toppen av kategorin {{categoryLink}}." pin_note: "Användare kan avklistra ämnet individuellt för sig själva." - already_pinned: - zero: "Det finns inga klistrade ämnen i {{categoryLink}}." - one: "Klistrade ämnen i {{categoryLink}} just nu: 1." - other: "Klistrade ämnen i {{categoryLink}} just nu: {{count}}." confirm_pin_globally: "Du har redan {{count}} globalt klistrade ämnen. För många klistrade ämnen kan vara störande för nya och anonyma användare. Är du säker på att du vill klistra ytterligare ett ämne globalt?" unpin_globally: "Ta bort detta ämne från toppen av alla ämneslistor." global_pin_note: "Användare kan avklistra ämnet individuellt för sig själva." - already_pinned_globally: - zero: "Det finns inga globalt klistrade ämnen." - one: "Globalt klistrade ämnen just nu: 1." - other: "Globalt klistrade ämnen just nu: {{count}}." make_banner: "Gör detta ämne till en banner som dyker upp i toppen av alla sidor." remove_banner: "Ta bort bannern som dyker upp i toppen av alla sidor." banner_note: "Användare kan avfärda bannern genom att stänga det. Endast ett ämne kan agera banner åt gången." - already_banner: - zero: "Inget ämne är banner." - one: "Det är förnärvarande ett ämne som banner." inviting: "Bjuder in..." automatically_add_to_groups_optional: "Denna inbjudan inkluderar även tillgång till dessa grupper: (valfritt, enbart för administratörer)" automatically_add_to_groups_required: "Denna inbjudan inkluderar även tillgång till dessa grupper: (Krävs, enbart för admninistörer)" @@ -1091,10 +1126,6 @@ sv: has_likes_title: one: "1 person gillade detta inlägg" other: "{{count}} personer gillade detta inlägg" - has_likes_title_you: - zero: "Du gillade detta inlägg" - one: "du och 1 annan person gillade detta inlägg" - other: "du och {{count}} andra personer gillade detta inlägg" errors: create: "Tyvärr, det uppstod ett fel under skapandet av ditt inlägg. Var god försök igen." edit: "Tyvärr, det uppstod ett fel under ändringen av ditt inlägg. Var god försök igen." @@ -1112,8 +1143,6 @@ sv: no_value: "nej, behåll" yes_value: "Ja, överge" via_email: "det här inlägget har gjorts via epost" - wiki: - about: "det här inlägget är en wiki; vanliga användare kan redigera det" archetypes: save: 'Spara Inställningar' controls: @@ -1161,18 +1190,6 @@ sv: bookmark: "Ångra bokmärkning" like: "Ångra gillning" vote: "Ångra röstning" - people: - off_topic: "{{icons}} flaggade det här som off-topic" - spam: "{{icons}} flaggade det här som spam" - spam_with_url: "{{icons}} flaggade detta som skräp" - inappropriate: "{{icons}} flaggade det här som olämpligt" - notify_moderators: "{{icons}} notifierade moderatorer" - notify_moderators_with_url: "{{icons}} notifierade moderatorer" - notify_user: "{{icons}} skickade ett meddelande" - notify_user_with_url: "{{icons}} skickade ett meddelande" - bookmark: "{{icons}} bokmärkte detta" - like: "{{icons}} gillade detta" - vote: "{{icons}} röstade för detta" by_you: off_topic: "Du flaggade detta som off-topic" spam: "Du flaggade detta som spam" @@ -1232,10 +1249,6 @@ sv: vote: one: "1 person röstade för detta inlägg" other: "{{count}} personer röstade för detta inlägg" - edits: - one: 1 ändring - other: "{{count}} ändringar" - zero: inga ändringar delete: confirm: one: "Är du säker på att du vill radera detta inlägg?" @@ -1311,19 +1324,15 @@ sv: notifications: watching: title: "Bevakar" - description: "Du kommer automatiskt bevaka alla nya ämnen i dessa kategorier. Du notifieras om alla nya inlägg och ämnen, och en räknare över antalet nya svar visas för dessa ämnen." tracking: title: "Följer" - description: "Du kommer automatiskt att följa alla nya ämnen i dessa kategorier. Antalet olästa inlägg kommer att synas för dessa ämnen." regular: - title: "Vanlig" + title: "Normal" description: "Du notifieras om någon nämner ditt @namn eller svarar på ditt inlägg." muted: title: "Tystad" - description: "Du kommer inte att notifieras om något som rör nya ämnen i de här kategorierna, och de kommer inte att dyka upp i din olästa tabb." flagging: title: 'Tack för att du hjälper till att hålla vår gemenskap civiliserad!' - private_reminder: 'flaggor är privata, endast synliga för funktionärer' action: 'Flagga Inlägg' take_action: "Åtgärda" notify_action: 'Meddelande' @@ -1371,7 +1380,6 @@ sv: help: "Detta ämne är oklistrat för dig. Det visas i vanlig ordning" pinned_globally: title: "Klistrat Globalt" - help: "Det här ämnet är klistrat globalt; det kommer att visas högst upp i alla listor" pinned: title: "Klistrat" help: "Detta ämne är klistrat för dig. Det visas i toppen av dess kategori" @@ -1414,10 +1422,6 @@ sv: with_topics: "%{filter} ämnen" with_category: "%{filter} %{category} ämnen" latest: - title: - zero: "Senaste" - one: "Senaste (1)" - other: "Senaste ({{count}})" help: "ämnen med nya inlägg" hot: title: "Hett" @@ -1433,23 +1437,9 @@ sv: title_in: "Kategori - {{categoryName}}" help: "alla ämnen grupperade efter kategori" unread: - title: - zero: "Olästa" - one: "Olästa (1)" - other: "Olästa ({{count}})" help: "ämnen som du bevakar eller följer med olästa inlägg" - lower_title_with_count: - one: "1 oläst" - other: "{{count}} olästa" new: - lower_title_with_count: - one: "1 ny" - other: "{{count}} nya" lower_title: "ny" - title: - zero: "Nya" - one: "Nya (1)" - other: "Nya ({{count}})" help: "ämnen skapade de senaste dagarna" posted: title: "Mina Inlägg" @@ -1458,10 +1448,6 @@ sv: title: "Bokmärken" help: "Ämnen du har bokmärkt" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}} (1)" - other: "{{categoryName}} ({{count}})" help: "senaste ämnena i kategorin {{categoryName}}" top: title: "Topp" @@ -1694,11 +1680,9 @@ sv: is_disabled: "Återställ är inaktiverat i sidans inställningar." label: "Återställ" title: "återställ säkerhetskopian" - confirm: "Är du säker på att du vill återställa denna säkerhetskopia?" rollback: label: "Tillbakarullning" title: "Gör rollback på databasen till ett tidigare fungerande tillstånd." - confirm: "Är du säker på att du vill göra rollback på databasen till det tidigare fungerande tillståndet?" export_csv: user_archive_confirm: "Är du säker på att du vill ladda ner dina inlägg?" success: "Export påbörjad, du får en notis via meddelande när processen är genomförd." @@ -1792,13 +1776,9 @@ sv: love: name: 'älska' description: "Gillaknappens färg." - wiki: - name: 'wiki' - description: "Huvudfärg som används som bakgrund till wikiinlägg." email: - title: "E-postloggar" settings: "Inställningar" - all: "alla" + preview_digest: "Sammandrag" sending_test: "Skickar testmail..." error: "ERROR - %{server_error}" test_error: "Det uppstod ett problem med att skicka test meddelandet. Dubbelkolla dina e-postinställningar, verifiera att din host inte blockerar e-postkopplingar, och försök igen." @@ -1813,7 +1793,6 @@ sv: send_test: "Skicka Test Mail" sent_test: "skickat!" delivery_method: "Leveransmetod" - preview_digest: "Sammandrag" refresh: "Uppdatera" format: "Format" html: "html" @@ -1839,6 +1818,7 @@ sv: ip_address: "IP" topic_id: "Ämnes-ID" post_id: "Inlägg ID" + category_id: "Kategori ID" delete: 'Radera' edit: 'Redigera' save: 'Spara' @@ -1878,6 +1858,8 @@ sv: delete_post: "ta bort inlägg" impersonate: "imitera" anonymize_user: "Anonymisera användare" + delete_category: "radera kategori" + create_category: "skapa kategori" screened_emails: title: "Kontrollerade email" description: "När någon försöker skapa ett nytt konto, kommer följande emailadresser att kontrolleras och registrationen blockeras, eller någon annan åtgärd vidtas." @@ -1940,9 +1922,6 @@ sv: pending: 'Användare under granskning' newuser: 'Användare på Förtroendenivå 0 (ny användare)' basic: 'Användare på Förtroendenivå 1 (grundnivå)' - regular: 'Användare på förtroendenivå 2 (Medlem)' - leader: 'Användare på förtroendenivå 3 (Stammis)' - elder: 'Användare på förtroendenivå 4 (ledare)' staff: "Medarbetare" admins: 'Admin-användare' moderators: 'Moderatorer' @@ -2052,7 +2031,6 @@ sv: unlock_trust_level: "Lås upp förtroendenivå" tl3_requirements: title: "Krav för Förtroendenivå 3" - table_title: "Under de senaste 100 dagarna:" value_heading: "värde" requirement_heading: "krav" visits: "besök" @@ -2109,7 +2087,6 @@ sv: text: 'Textfält' confirm: 'Bekräftelse' site_text: - none: "Välj typ av innehåll för att börja redigera." title: 'Textinnehåll' site_settings: show_overriden: 'Visa bara överskrivna' @@ -2130,6 +2107,7 @@ sv: files: 'Filer' trust: 'Förtroendenivå' security: 'Säkerhet' + onebox: "Onebox" seo: 'SEO' spam: 'Spam' rate_limits: 'Begränsningar' @@ -2185,10 +2163,6 @@ sv: link_text: "Förhandsvisa utfärdade utmärkelser" bad_count_warning: header: "VARNING!" - grant_count: - zero: "Inga utmärkelser som ska tilldelas." - one: "1 utmärkelse som ska tilldelas." - other: "%{count} utmärkelser som ska tilldelas." sample: "Exempel:" grant: with: %{username} @@ -2202,6 +2176,20 @@ sv: name: "Namn" image: "Bild" delete_confirm: "Är du säker på att du vill radera emoji-ikonen :%{name}:?" + embedding: + edit: "ändra" + permalink: + url: "URL" + topic_id: "Ämnes ID" + post_id: "Inlägg ID" + post_title: "Publicera" + category_id: "Kategori ID" + category_title: "Kategori" + external_url: "Extern URL" + form: + label: "Ny:" + add: "Lägg till" + filter: "Sök (URL eller Extern URL)" lightbox: download: "ladda ned" search_help: @@ -2217,6 +2205,8 @@ sv: categories: 'g, c Kategorier' top: 'g, t Upp till toppen' bookmarks: 'g, b Bokmärken' + profile: 'g, p Profil' + messages: 'g, m Meddelande' navigation: title: 'Navigering' jump: '# Gå till inlägg #' @@ -2225,6 +2215,7 @@ sv: open: 'ö eller Välj Öppna valt ämne' next_prev: 'shift+j/shift+k Nästa/föregående avsnitt' application: + title: 'Applikation' create: 's Skapa ett nytt ämne' notifications: 'n Öppna notifikationer' user_profile_menu: 'p Öppna användarmeny' @@ -2253,8 +2244,6 @@ sv: mark_watching: 'm, w Bevaka ämne' badges: title: Utmärkelser - allow_title: "kan användas som titel" - multiple_grant: "kan tilldelas flera gånger" badge_count: one: "1 Utmärkelse" other: "%{count} Utmärkelser" @@ -2269,81 +2258,11 @@ sv: badge_grouping: getting_started: name: Komma igång + community: + name: Community trust_level: name: Förtroendenivå other: name: Övrigt posting: name: Inlägg - badge: - basic_user: - name: Grundläggande - member: - name: Medlem - regular: - name: Vanligt - leader: - name: Ledare - welcome: - name: Välkommen - description: Fick en gilla - autobiographer: - name: Självbiograf - description: Fyllde ut sin profilinformation - anniversary: - name: Årsdag - description: Aktiv medlem ett år, har skrivit minst en gång - nice_post: - name: Bra inlägg - description: Fick 10 gilla på ett inlägg. Denna utmärkelse kan utfärdas flera gånger. - good_post: - name: Jättebra inlägg - description: Fick 25 gilla på ett inlägg. Denna utmärkelse kan utfärdas flera gånger. - great_post: - name: Fantastiskt inlägg - description: Fick 50 gilla på ett inlägg. Denna utmärkelse kan utfärdas flera gånger. - nice_topic: - name: Bra ämne - description: Fick 10 gilla på ett ämne. Denna utmärkelse kan utfärdas flera gånger. - good_topic: - name: Jättebra ämne - description: Fick 25 gilla på ett ämne. Denna utmärkelse kan utfärdas flera gånger. - great_topic: - name: Fantastiskt ämne - description: Fick 50 gilla på ett ämne. Denna utmärkelse kan utfärdas flera gånger. - nice_share: - name: Bra delning - description: Delade ett inlägg med 25 unika besökare - good_share: - name: Jättebra delning - description: Delade ett inlägg med 300 unika besökare - great_share: - name: Fantastisk delning - description: Delade ett inlägg med 1000 unika besökare - first_like: - name: Första gillning - description: Gillade ett inlägg - first_flag: - name: Första flaggning - description: Flaggade ett inlägg - promoter: - description: Bjöd in en användare - first_share: - name: Första delning - description: Delade ett inlägg - first_link: - name: Första länk - description: Länkade internt till ett annat ämne - first_quote: - name: Första citation - description: Citerade en användare - read_guidelines: - name: Läst riktlinjer - description: Läste forumets riktlinjer - reader: - name: Läsare - description: Läs varje inlägg i en diskussion med över 100 inlägg - popular_link: - name: Populär länk - hot_link: - name: Het länk diff --git a/config/locales/client.te.yml b/config/locales/client.te.yml index e9726bc6b37..6710bcdefb7 100644 --- a/config/locales/client.te.yml +++ b/config/locales/client.te.yml @@ -220,7 +220,6 @@ te: members: "సభ్యులు" posts: "టపాలు" alias_levels: - title: "ఈ గుంపును మారుపేరుతో ఎవరు వాడవచ్చు?" nobody: "ఎవరూకాదు" only_admins: "కేవలం అధికారులే" mods_and_admins: "కేవలం అధికారులు మరియు నిర్వాహకులు మాత్రమే" @@ -233,7 +232,6 @@ te: '4': "విషయాలు" '7': "ప్రస్తావనలు" '9': "కోట్ లు" - '10': "నక్షత్రపు" '11': "సవరణలు" '12': "పంపిన అంశాలు" '13': "ఇన్ బాక్స్" @@ -303,7 +301,6 @@ te: watched_categories: "ఒకకన్నేసారు" tracked_categories: "గమనించారు" muted_categories: "నిశ్శబ్దం" - muted_categories_instructions: "ఈ వర్గాలలోని ఏ కొత్త విషయాల గురించీ మీకు ప్రకటనలు రావు. ఇంకా అవి చదవని ట్యాబులో కనిపించవు." delete_account: "నా ఖాతా తొలగించు" delete_account_confirm: "నిజ్జంగా మీరు మీ ఖాతాను శాస్వతంగా తొలగించాలనుకుంటున్నారా? ఈ చర్య రద్దుచేయలేరు సుమా! " deleted_yourself: "మీ ఖాతా విజయవంతంగా తొలగించబడింది. " @@ -319,8 +316,6 @@ te: warnings_received: "హెచ్చరికలు" messages: all: "అన్నీ" - mine: "నావి" - unread: "చదవని" change_password: success: "(ఈమెయిల్ పంపిన)" in_progress: "(ఈమెయిల్ పంపుతోన్నాం)" @@ -361,10 +356,6 @@ te: ok: "ద్రువపరుచుటకు మీకు ఈమెయిల్ పంపాము" invalid: "దయచేసి చెల్లుబాటులోని ఈమెయిల్ చిరునామా రాయండి" authenticated: "మీ ఈమెయిల్ {{provider}} చేత ద్రువీకరించబడింది" - frequency: - zero: "మీకు వెంటనే ఈమెయిల్ చేసాము, మీరు ఈమెయిల్ విషయం చదవకపోతే. " - one: "గత నిమిషంలో మీరు కనిపించకపోతే మేము ఈమెయిల్ చేస్తాము" - other: "గత {{count}} నిమిషాల్లో మీరు ఇక్కడ కనిపించకపోతేనే మేము ఈమెయిల్ చేస్తాము." name: title: "పేరు" instructions: "మీ పూర్తి పేరు (ఐచ్చికం)" @@ -418,7 +409,6 @@ te: search: "ఆహ్వానాలను వెతకడానికి రాయండి ... " title: "ఆహ్వానాలు" user: "ఆహ్వానించిన సభ్యుడు" - truncated: "తొలి {{count}} ఆహ్వానాలను చూపుతున్నాము." redeemed: "మన్నించిన ఆహ్వానాలు" redeemed_at: "మన్నించిన" pending: "పెండింగులోని ఆహ్వానాలు" @@ -499,8 +489,6 @@ te: last_post: చివరి టపా summary: enabled_description: "మీరు ఈ విషయపు సారాంశము చదువుతున్నారు. ఆసక్తికర టపాలు కమ్యునిటీ ఎంచుకుంటుంది. " - description: "అక్కడ మొత్తం {{count}} జవాబులు ఉన్నాయి" - description_time: "అక్కడ మొత్తం {{count}} జవాబులు ఉన్నాయి. వీటిని చదవడానికి సుమారుగా {{readingTime}} నిమిషాలు పడ్తాయి." enable: 'ఈ విషయాన్ని సంగ్రహించు' disable: 'అన్ని టపాలూ చూపు' deleted_filter: @@ -573,7 +561,6 @@ te: twitter: "ట్విట్టరు" emoji_one: "ఇమెజి వన్" composer: - emoji: "Emoji :smile:" add_warning: "ఇది ఒక అధికారిక హెచ్చరిక" posting_not_on_topic: "ఏ విషయానికి మీరు జవాబివ్వాలనుకుంటున్నారు? " saved_draft_tip: "భద్రం" @@ -598,7 +585,6 @@ te: edit_reason_placeholder: "మీరెందుకు సవరిస్తున్నారు?" show_edit_reason: "(సవరణ కారణం రాయండి)" view_new_post: "మీ కొత్త టపా చూడండి" - saving: "భద్రమవుతోంది..." saved: "భద్రం!" saved_draft: "టపా చిత్తుప్రతి నడుస్తోంది. కొనసాగించుటకు ఎంచుకోండి." uploading: "ఎగుమతవుతోంది..." @@ -625,8 +611,6 @@ te: heading_title: "తలకట్టు" heading_text: "తలకట్టు" hr_title: "అడ్డు గీత" - undo_title: "రద్దు" - redo_title: "తిద్దు" help: "మార్క్ డైన్ సవరణ సహాయం" toggler: "దాచు లేదా చూపు కంపోజరు ఫలకం" admin_options_title: "ఈ విషయానికి ఐచ్చిక సిబ్బంది అమరికలు" @@ -645,7 +629,6 @@ te: total_flagged: "మొత్తం కేతనించిన టపాలు" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -660,7 +643,6 @@ te: from_my_computer: "నా పరికరం నుండి" from_the_web: "జాలం నుండి" remote_tip: "బొమ్మకు లంకె" - remote_tip_with_attachments: "బొమ్మకు లేదా దస్త్రానికి లంకె ({{authorized_extensions}})" hint: "(మీరు వాటిని ఎడిటరులోకి లాగి వదిలెయ్యటు ద్వారా కూడా ఎగుమతించవచ్చు)" uploading: "ఎగుమతవుతోంది" image_link: "మీ బొమ్మ చూపే లంకె" @@ -680,10 +662,6 @@ te: bulk: reset_read: "రీలోడ్ రీసెట్" delete: "విషయాలు తొలగించు" - dismiss_posts: "టపాలు తుడువు" - dismiss_posts_tooltip: "ఈ విషయాలపే చదవని సంఖ్యను తుడువు, కానీ కొత్తగా వచ్చే టపాలను నా చదవని సంఖ్యలో చూపుటు కొనసాగించు" - dismiss_topics: "విషయాలు తుడువు" - dismiss_topics_tooltip: "కొత్త టపాలు వచ్చినా, నా చదవని జాబితాలో ఈ విషయాలు నుండి చూపుటు ఆపు. " dismiss_new: "కొత్తవి తుడువు" toggle: "విషయాల బహుళ ఎంపికలు అటుఇటుచేయి" actions: "బహుళ చర్యలు" @@ -705,9 +683,6 @@ te: bookmarks: "మీకింకా ఎట్టి పేజీక విషయాలూ లేవు." category: "ఎట్టి {{category}} విషయాలూ లేవు" top: "ఎట్టి అగ్ర విషయాలూ లేవు." - educate: - new: '
మీ కొత్త విషయాలు ఇక్కడ వస్తాయి.
అప్రమేయంగా 2 రోజులలోపు సృష్టించిన అన్ని విషయాలూ కొత్తగా భావించబడతాయి మరియు కొత్త ఇండికేటరు తో చూపబడతాయి.
మీరు దీన్ని మీ అభీష్టాలులో మార్చుకోవచ్చు.
' - unread: '
మీరు చదవని విషయాలు ఇక్కడ కనబడుతాయి.
అప్రమేయంగా, విషయాలు చదవని వాటిగా పరిశీలించబడతాయి మరియు చదవని వాటి సంఖ్య మీకు చూపబడతాయి 1 మీరు:
లేదా మీరు స్పష్టముగా విషయం అమర్చినట్లయితే ప్రతి విషయానికి క్రింది భాగంలో నియంత్రణ ప్రకటన ద్వారా గమనించబడుతుంది లేదా కనిపెడుతూ ఉంటుంది .
మీరు ఇది మార్చగలరు మీ preferences లో.
' bottom: latest: "ఇంకా కొత్త విషయాలు లేవు." hot: "ఇంకా వేడివేడి విషయాలు లేవు." @@ -806,7 +781,6 @@ te: title: "నిశ్శబ్దం" muted: title: "నిశ్శబ్దం" - description: "ఈ ప్రైవేటు సందేశం నుండి మీకు అస్సలు ప్రకటనలు రావు. ఇంకా చదవని సంఖ్య కనిపించదు." actions: recover: "విషయం తొలగింపు రద్దుచేయి" delete: "విషయం తొలగించు" @@ -919,8 +893,6 @@ te: no_value: "లేదు, ఉంచండి" yes_value: "అవును. వదిలేయండి" via_email: "ఈ టపా ఈమెయిల్ ద్వారా వచ్చింది" - wiki: - about: "ఈ టపా వికీ: ప్రాథమిక సభ్యులు దీన్ని సవరించలేరు" archetypes: save: 'భద్రపరుచు ఐచ్చికాలు' controls: @@ -968,16 +940,6 @@ te: bookmark: "పేజీక రద్దు" like: "ఇష్టం రద్దు" vote: "ఓటు రద్దు" - people: - off_topic: "{{icons}} దీన్ని విషయాంతరంగా కేతనించాయి" - spam: "{{icons}} దీన్ని స్పాముగా కేతనించాయి" - spam_with_url: "{{ప్రతీకలు}} స్పామ్ లా కేతనించు" - inappropriate: "{{icons}} దీన్ని అసమంజసంగా కేతనించాయి" - notify_moderators: "{{icons}} దీన్ని నిర్వాహకుల దృష్టికి తెచ్చాయి" - notify_moderators_with_url: "{{icons}} నిర్వాహకుల దృష్టికి తెచ్చారు" - bookmark: "{{icons}} పేజీక ఉంచారు" - like: "{{icons}} ఇష్టపడ్డారు" - vote: "{{icons}} దీనికి ఓటు వేసారు" by_you: off_topic: "మీరు దీన్ని విషయాంతరంగా కేతనించారు" spam: "మీరు దీన్ని స్పాముగా కేతనించారు" @@ -1030,10 +992,6 @@ te: vote: one: "ఒకరు దీనికి ఓటు వేశారు" other: "{{count}} గురు దీనికి ఓటు వేసారు" - edits: - one: 1 సవరణ - other: "{{count}} సవరణలు" - zero: ఎట్టి సవరణలూ లేవు delete: confirm: one: "మీరు నిజ్జంగా ఈ టపాను తొలగించాలనుకుంటున్నారా?" @@ -1110,14 +1068,10 @@ te: title: "కన్నేసారు" tracking: title: "గమనిస్తున్నారు" - regular: - title: "రెగ్యులర్" muted: title: "నిశ్శబ్దం" - description: "ఈ వర్గాల్లో కొత్త విషయాల గురించి మీకు ప్రకటన రాదు. ఇంకా చదవి సంఖ్యలు కనిపించవు." flagging: title: 'మా కమ్యునిటీని నాగరికంగా ఉంచుటలో సహాయానికి ధన్యవాదములు' - private_reminder: 'కేతనాలు ప్రైవేటు. కేవలం సిబ్బందికి మాత్రమే కనిపిస్తాయి' action: 'టపాను కేతనించు' take_action: "చర్య తీసుకో" delete_spammer: "స్పామరును తొలగించు" @@ -1161,7 +1115,6 @@ te: help: "ఈ విషయం మీకు అగ్గుచ్చబడింది. ఇది ఇహ క్రమ వరుసలోనే కనిపిస్తుంది" pinned_globally: title: "సార్వత్రికంగా గుచ్చారు" - help: "ఈ విషయం సార్వత్రికంగా గుచ్చారు; అన్ని వరుసల్లోనూ ఇది అగ్రభాగాన కనిపిస్తుంది." pinned: title: "గుచ్చారు" help: "ఈ విషయం మీకు గుచ్చబడింది. దాని వర్గంలో అది అగ్రభాగాన కనిపిస్తుంది." @@ -1201,23 +1154,9 @@ te: title_in: "వర్గం - {{categoryName}}" help: "వర్గాల వారీగా జట్టు కట్టిన అన్ని విషయాలూ" unread: - title: - zero: "చదవని" - one: "చదవని (1)" - other: "చదవని ({{count}})" help: "మీరు ప్రస్తుతం కన్నేసిన లేదా గమనిస్తున్న చదవని టపాలతో ఉన్న విషయాలు " - lower_title_with_count: - one: "1 చదవని" - other: "{{count}} చదవని" new: - lower_title_with_count: - one: "1 కొత్త " - other: "{{count}} కొత్త" lower_title: "కొత్త" - title: - zero: "కొత్త" - one: "కొత్త (1)" - other: "కొత్త ({{count}})" help: "గత కొద్ది రోజులలో సృష్టించిన టపాలు" posted: title: "నా టపాలు" @@ -1226,10 +1165,6 @@ te: title: "పేజీకలు" help: "మీరు పేజీక ఉంచిన విషయాలు" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}} (1)" - other: "{{categoryName}} ({{count}})" help: "{{categoryName}} వర్గంలోని కొత్త విషయాలు" top: title: "అగ్ర" @@ -1433,10 +1368,8 @@ te: restore: is_disabled: "సైటు అమరికల్లో రీస్టోరు అచేతనమైంది. " title: "బ్యాకప్ ను రీస్టోరు చేయి" - confirm: "మీరు నిజంగానే ఈ బ్యాకప్ ను రీస్టోరు చేయాలనుకుంటున్నారా?" rollback: title: "డాటాబేసును గత పనిచేసే స్థితికి రోల్ బ్యాక్ చేయి" - confirm: "మీరు నిజంగానే డాటాబేసును గత పనిచేసే స్థితికి రోల్ బ్యాక్ చేయాలనుకుంటున్నారా?" export_csv: user_archive_confirm: "మీరు నిజంగా మీ టపాల దిగుమతి కోరుకుంటున్నారా ?" failed: "ఎగుమతి విఫలమైంది. దయచేసి లాగులు చూడంది. " @@ -1525,13 +1458,9 @@ te: love: name: 'ప్రేమ' description: "ఇష్ఠ బటను రంగు." - wiki: - name: 'వికీ' - description: "వికీ టపాలు వెనుతలంకు ప్రాథమిక రంగు" email: - title: "ఈమెయిల్" settings: "అమరికలు" - all: "అన్నీ" + preview_digest: "డైజెస్టు మునుజూపు" sending_test: "పరీక్షా ఈమెయిల్ పంపుతున్నామ్..." error: "దోషం - %{server_error}" test_error: "టెస్ట్ మెయిల్ పంపడంలో ఒక సమస్య ఉంది.దయచేసి మీ మెయిల్ సెట్టింగ్స్ రెండోసారి తనిఖీ చేసి,మీ హోస్ట్ మెయిల్ కనెక్షన్ నిరోధించుటలేదని నిర్ధారించుకోండి, మరియు తిరిగి ప్రయత్నించండి." @@ -1546,7 +1475,6 @@ te: send_test: "పరీక్షా మెయిల్ పంపారు" sent_test: "పంపారు!" delivery_method: "డెలివరీ పద్దతి" - preview_digest: "డైజెస్టు మునుజూపు" refresh: "తాజాపరుచు" format: "రూపు" html: "హెచ్ టీయంయల్" @@ -1672,9 +1600,6 @@ te: pending: 'రివ్యూ పెండింగులో ఉన్న సభ్యులు' newuser: 'నమ్మకం స్థాయి 0 సభ్యులు (కొత్త సభ్యుడు)' basic: 'నమ్మకపు స్థాయి 1 వినియోగదారులు (ప్రాధమిక వినియోగదారు)' - regular: 'నమ్మకపు స్థాయి 2 వినియోగదారులు (సభ్యులు)' - leader: 'నమ్మకపు స్థాయి 3 వినియోగదారులు (నిత్యం)' - elder: 'నమ్మకపు స్థాయి 4 వినియోగదారులు (నాయకుడు)' staff: "సిబ్బంది" admins: 'అధికారి సభ్యులు' moderators: 'నిర్వాహకులు' @@ -1770,7 +1695,6 @@ te: unlock_trust_level: "నమ్మకపు స్థాయిని వదిలేయి" tl3_requirements: title: "నమ్మకపు స్థాయి 3 అవసరాలు" - table_title: "గత 100 రోజుల్లో:" value_heading: "విలువ" requirement_heading: "అవసరం" visits: "సందర్శనాలు" @@ -1829,7 +1753,6 @@ te: text: 'పాఠ్య క్షేత్రం' confirm: 'ఖాయము' site_text: - none: "సవరణను ప్రారంభించడానికి విషయం రకాన్ని ఎంచుకోండి." title: 'పాఠ్య కాంటెంటు' site_settings: show_overriden: 'ప్రాబల్యం ఉన్న వాటిని మాత్రమే చూపించు' @@ -1908,10 +1831,6 @@ te: sql_error_header: "ప్రశ్నతో దోషం ఉంది." bad_count_warning: header: "హెచ్చరిక!" - grant_count: - zero: "ఏ చిహ్నాలు కేటాయించలేదు." - one: "1 కేటాయించిన చిహ్నం." - other: "%{లెక్క} కేటాయించిన చిహ్నాలు." sample: "నమూనా:" grant: with: %{వినియోగదారు పేరు} @@ -1971,8 +1890,6 @@ te: mark_watching: 'm, w చూసిన విషయం' badges: title: బ్యాడ్జీలు - allow_title: "శీర్షికగా కూడా వాడవచ్చు" - multiple_grant: "పలుమార్లు బహూకరించవచ్చు" more_badges: one: "+%{count} కంటే" other: "+%{count} ఇంకా" @@ -1992,74 +1909,3 @@ te: name: ఇతర posting: name: రాస్తున్నారు - badge: - editor: - name: ఎడిటరు - description: తొలి టపా సవరణ - basic_user: - name: ప్రాథమిక - description: మంజూరు చేసిన అన్ని ఆవశ్యక సామాజిక చర్యలు - member: - name: సభ్యుడు - description: మంజూరు చేసిన ఆహ్వానాలు - regular: - name: రెగ్యులరు - leader: - name: లీడరు - welcome: - name: సుస్వాగతం - description: ఒక ఇష్టాన్ని అందుకున్నారు - autobiographer: - name: ఆత్మకధావాది - description: వినియోగదారు నింపిన ఫ్రొపైల్ సమాచారం - anniversary: - name: వార్షికోత్సవం - description: ఒక సంవత్సరం నుండి చురుకైన సభ్యుడు, కనీసం ఒకసారి టపా చేశాడు - nice_post: - name: మంచి టపా - description: ఒక టపా 10 ఇష్టాలు స్వీకరిస్తే , ఈ చిహ్నం అనేక సార్లు మంజూరు అవుతుంది - good_post: - name: చాలా మంచి టపా - description: ఒక టపా 25 ఇష్టాలు స్వీకరిస్తే , ఈ చిహ్నం అనేక సార్లు మంజూరు అవుతుంది - great_post: - name: బహుమంచి టపా - description: ఒక టపా 50 ఇష్టాలు స్వీకరిస్తే , ఈ చిహ్నం అనేక సార్లు మంజూరు అవుతుంది - nice_topic: - name: మంచి విషయం - description: ఒక విషయం 10 ఇష్టాలు స్వీకరిస్తే , ఈ చిహ్నం అనేక సార్లు మంజూరు అవుతుంది - good_topic: - name: చాలా మంచి విషయం - description: ఒక విషయం 25 ఇష్టాలు స్వీకరిస్తే , ఈ చిహ్నం అనేక సార్లు మంజూరు అవుతుంది - great_topic: - name: బహుమంచి విషయం - description: ఒక విషయం 50 ఇష్టాలు స్వీకరిస్తే , ఈ చిహ్నం అనేక సార్లు మంజూరు అవుతుంది - nice_share: - name: మంచి పంపకం - description: ఒక టపాను 25మంది సభ్యులతో పంచుకున్నారు - good_share: - name: చాలామంచి పంపకం - description: ఒక టపాను 300మంది సభ్యులతో పంచుకున్నారు - great_share: - name: బహుమంచి పంపకం - description: ఒక టపాను 1000 మంది సభ్యులతో పంచుకున్నారు - first_like: - name: తొలి ఇష్టం - description: టపాను ఇష్టపడ్డారు - first_flag: - name: తొలి కేతనం - description: ఒక టపాను కేతనించారు - first_share: - name: తొలి పంపకం - description: ఒక టపాను పంచారు - first_link: - name: తొలి లంకె - description: వేరొక విషయానికి అంతర్గతంగా లంకె కలిపారు - first_quote: - name: తొలి కోట్ - description: ఒక సభ్యుడిని కోట్ చేసారు - read_guidelines: - name: మార్గదర్శకాలు చదువు - description: కమ్యునిటీ మార్గదర్శకాలు చదవండి - reader: - name: చదువరి - description: 100 టపాల కన్నా ఎక్కువ ఉన్న అంశంలో ప్రతి టపా చదవండి diff --git a/config/locales/client.tr_TR.yml b/config/locales/client.tr_TR.yml index 7089f540297..9dead2c81b8 100644 --- a/config/locales/client.tr_TR.yml +++ b/config/locales/client.tr_TR.yml @@ -81,6 +81,8 @@ tr_TR: other: "%{count} ay sonra" x_years: other: "%{count} yıl sonra" + previous_month: 'Önceki Ay' + next_month: 'Sonraki Ay' share: topic: 'bu konunun bağlantısını paylaşın' post: '#%{postNumber} nolu gönderiyi paylaşın' @@ -90,6 +92,9 @@ tr_TR: google+: 'bu bağlantıyı Google+''da paylaşın' email: 'bu bağlantıyı e-posta ile gönderin' action_codes: + split_topic: "bu konuyu ayır %{when}" + invited_user: "%{when} %{who} davet edildi" + removed_user: "%{when} %{who} silindi" autoclosed: enabled: '%{when} kapatıldı' disabled: '%{when} açıldı' @@ -110,6 +115,19 @@ tr_TR: disabled: '%{when} listelenmedi' topic_admin_menu: "konuyla alakalı yönetici işlemleri" emails_are_disabled: "Tüm giden e-postalar yönetici tarafından evrensel olarak devre dışı bırakıldı. Herhangi bir e-posta bildirimi gönderilmeyecek." + s3: + regions: + us_east_1: "US East (N. Virginia)" + us_west_1: "US West (N. California)" + us_west_2: "US West (Oregon)" + us_gov_west_1: "AWS GovCloud (US)" + eu_west_1: "EU (Ireland)" + eu_central_1: "EU (Frankfurt)" + ap_southeast_1: "Asia Pacific (Singapore)" + ap_southeast_2: "Asia Pacific (Sydney)" + ap_northeast_1: "Asia Pacific (Tokyo)" + ap_northeast_2: "Asia Pacific (Seoul)" + sa_east_1: "South America (Sao Paulo)" edit: 'bu konunun başlığını ve kategorisini düzenleyin' not_implemented: "Bu özellik henüz geliştirilmedi, üzgünüz!" no_value: "Hayır" @@ -141,6 +159,8 @@ tr_TR: more: "Daha fazla" less: "Daha az" never: "asla" + every_30_minutes: "30 dakikada bir" + every_hour: "her saat" daily: "günlük" weekly: "haftalık" every_two_weeks: "her iki haftada bir" @@ -151,6 +171,7 @@ tr_TR: other: "{{count}} karakter" suggested_topics: title: "Önerilen Konular" + pm_title: "Önerilen Mesajlar" about: simple_title: "Hakkında" title: "%{title} Hakkında" @@ -203,6 +224,7 @@ tr_TR: revert: "Eski Haline Getir" failed: "Başarısız oldu" switch_to_anon: "Anonim Ol" + switch_from_anon: "Anonim Modundan Çık" banner: close: "Bu manşeti yoksay." edit: "Bu manşeti düzenle >>" @@ -224,7 +246,7 @@ tr_TR: has_pending_posts: other: "Bu konuda {{count}} sayıda onay bekleyen gönderi var" confirm: "Düzenlemeleri Kaydet" - delete_prompt: "%{username} kullanıcısını silmek istediğinize emin misiniz? Bu işlem kullanıcının tüm gönderilerini silecek, e-posta ve ip adresini engelleyecek." + delete_prompt: "%{username} kullanıcısını silmek istediğinize emin misiniz? Bunu yaparsanız tüm gönderileri silinecek, eposta adresi ve IP adresi bloklanacak." approval: title: "Gönderi Onay Gerektirir" description: "Gönderinizi aldık fakat gösterilmeden önce bir moderatör tarafından onaylanması gerekiyor. Lütfen sabırlı olun." @@ -265,13 +287,25 @@ tr_TR: total_rows: other: "%{count} kullanıcı" groups: + empty: + posts: "Bu grubun üyelerinden mesaj yok." + members: "Bu grupta üye yok." + mentions: "Bu gruptan söz edilmemiş." + messages: "Bu grup için bir mesaj yok." + topics: "Bu grubun üyelerinden konu yok." + add: "Ekle" + selector_placeholder: "Üye ekle" + owner: "sahip" visible: "Grup tüm kullanıcılar tarafından görüntülenebiliyor" title: other: "gruplar" members: "Üyeler" + topics: "Konular" posts: "Gönderiler" + mentions: "Atıflar" + messages: "Mesajlar" alias_levels: - title: "Kimler bu grubu ikinci adı olarak kullanabilir?" + title: "Kimler bu gruba mesaj gönderebilir ve gruptan @bahsedebilir?" nobody: " Hiç Kimse" only_admins: "Sadece Yöneticiler" mods_and_admins: "Sadece Moderatörler ve Yöneticiler" @@ -280,6 +314,16 @@ tr_TR: trust_levels: title: "Eklendiklerinde üyelere otomatik olarak güven seviyesi verilir:" none: "Hiç" + notifications: + watching: + title: "Gözleniyor" + tracking: + title: "Takip ediliyor" + regular: + title: "Normal" + muted: + title: "Susturuldu" + description: "Bu gruptan herhangi yeni konuyla ilgili asla bildirim almayacaksınız" user_action_groups: '1': "Verilen Beğeniler" '2': "Alınan Beğeniler" @@ -289,7 +333,6 @@ tr_TR: '6': "Yanıtlar" '7': "Bahsedenler" '9': "Alıntılar" - '10': "Yıldızlılar" '11': "Düzenlemeler" '12': "Yollanmış ögeler" '13': "Gelen Kutusu" @@ -299,6 +342,7 @@ tr_TR: all_subcategories: "hepsi" no_subcategory: "hiçbiri" category: "Kategori" + category_list: "Kategori ekranı listesi" reorder: title: "Kategorileri Yeniden Sırala" title_long: "Kategori listesini yeniden yapılandır" @@ -353,16 +397,14 @@ tr_TR: invited_by: "Tarafından Davet Edildi" trust_level: "Güven Seviyesi" notifications: "Bildirimler" + statistics: "istatistikler" desktop_notifications: label: "Masaüstü Bildirimleri" not_supported: "Bildirimler bu tarayıcıda desteklenmiyor. Üzgünüz." perm_default: "Bildirimleri Etkinleştirin" perm_denied_btn: "Erişim İzni Reddedildi" - perm_denied_expl: "Bildirimler için gerekli izne sahip değilsiniz. Bildirimleri etkinleştirmek için tarayıcınızı kullanın, işlem tamamlandığında tuşa basın. (Masaüstü: Adres çubuğunda en soldaki simge. Mobil: 'Site Bilgisi'.)" disable: "Bildirimleri Devre Dışı Bırakın" - currently_enabled: "(şu anda etkin)" enable: "Bildirimleri Etkinleştirin" - currently_disabled: "(şu anda devre dışı)" each_browser_note: "Not: Bu ayarı kullandığınız her tarayıcıda değiştirmelisiniz." dismiss_notifications: "Hepsini okunmuş olarak işaretle" dismiss_notifications_tooltip: "Tüm okunmamış bildirileri okunmuş olarak işaretle" @@ -386,7 +428,7 @@ tr_TR: tracked_categories: "Takip edildi" tracked_categories_instructions: "Bu kategorilerdeki tüm yeni konuları otomatik olarak takip edeceksiniz. Okunmamış ve yeni gönderilerin sayısı ilgili konunun yanında belirecek." muted_categories: "Susturuldu" - muted_categories_instructions: "Bu kategorideki yeni konular okunmamışlar sekmenizde belirmeyecek, ve haklarında hiçbir bildirim almayacaksınız." + muted_categories_instructions: "Bu kategorilerdeki yeni konular hakkında herhangi bir bildiri almayacaksınız ve en son gönderilerde belirmeyecekler. " delete_account: "Hesabımı Sil" delete_account_confirm: "Hesabınızı kalıcı olarak silmek istediğinize emin misiniz? Bu işlemi geri alamazsınız!" deleted_yourself: "Hesabınız başarıyla silindi." @@ -396,6 +438,7 @@ tr_TR: users: "Kullanıcılar" muted_users: "Susturuldu" muted_users_instructions: "Bu kullanıcılardan gelen tüm bildirileri kapa." + muted_topics_link: "Sessize alınmış konuları göster" staff_counters: flags_given: "yararlı bayraklar" flagged_posts: "bayraklanan gönderiler" @@ -404,8 +447,15 @@ tr_TR: warnings_received: "uyarılar" messages: all: "Hepsi" - mine: "Benimkiler" - unread: "Okunmamışlar" + inbox: "Gelen Kutusu" + sent: "Gönderildi" + archive: " Arşiv" + groups: "Gruplarım" + bulk_select: "Mesajları seçin" + move_to_inbox: "Gelen kutusuna taşı" + move_to_archive: " Arşiv" + failed_to_move: "Seçilen mesajları taşımak başarısız oldu (muhtemelen ağınız çöktü)" + select_all: "Tümünü seç" change_password: success: "(e-posta gönderildi)" in_progress: "(e-posta yollanıyor)" @@ -450,9 +500,8 @@ tr_TR: ok: "Onay için size e-posta atacağız" invalid: "Lütfen geçerli bir e-posta adresini giriniz" authenticated: "E-posta adresiniz {{provider}} tarafından doğrulanmıştır" + frequency_immediately: "Eğer yollamak üzere olduğumuz şeyi okumadıysanız size direk e-posta yollayacağız." frequency: - zero: "Eğer yollamak üzere olduğumuz şeyi okumadıysanız size direk e-posta yollayacağız." - one: "Sadece son bir dakika içinde sizi görmediysek e-posta yollayacağız." other: "Sadece son {{count}} dakika içinde sizi görmediysek e-posta yollayacağız." name: title: "İsim" @@ -489,8 +538,18 @@ tr_TR: title: "Kullanıcı Kartı Rozeti" website: "Web Sayfası" email_settings: "E-posta" + like_notification_frequency: + title: "Beğenildiğinde bildir" + always: "Her zaman" + never: "Asla" + email_previous_replies: + unless_emailed: "daha önce gönderilmediyse" + always: "her zaman" + never: "asla" email_digests: title: "Burayı ziyaret etmediğim zamanlarda bana yeni şeylerin özetini içeren bir email yolla:" + every_30_minutes: "30 dakikada bir" + every_hour: "saatte bir" daily: "günlük" every_three_days: "her üç günde bir" weekly: "haftalık" @@ -525,7 +584,8 @@ tr_TR: user: "Davet Edilen Kullanıcı" sent: "Gönderildi" none: "Bekleyen davet yok." - truncated: "İlk {{count}} davetler gösteriliyor." + truncated: + other: "ilk {{count}} davet gösteriliyor." redeemed: "Kabul Edilen Davetler" redeemed_tab: "Kabul Edildi" redeemed_tab_with_count: "İtfa edilmiş ({{count}})" @@ -560,6 +620,15 @@ tr_TR: same_as_email: "Şifreniz e-posta adresinizle aynı." ok: "Parolanız uygun gözüküyor." instructions: "En az %{count} karakter." + summary: + title: "Özet" + stats: "İstatistikler" + top_replies: "Başlıca Yanıtları" + more_replies: "Diğer Yanıtları" + top_topics: "Başlıca Konuları" + more_topics: "Diğer Konuları" + top_badges: "Başlıca Rozetleri" + more_badges: "Diğer Rozetleri" associated_accounts: "Girişler" ip_address: title: "Son IP Adresi" @@ -585,11 +654,13 @@ tr_TR: server: "Sunucu Hatası" forbidden: "Erişim Reddedildi" unknown: "Hata" + not_found: "Sayfa Bulunamadı" desc: network: "Lütfen bağlantınızı kontrol edin." network_fixed: "Geri döndü gibi gözüküyor." server: "Hata kodu : {{status}}" forbidden: "Bunu görüntülemeye izniniz yok." + not_found: "Hoppala, uygulama var olmayan bir URL'i yüklemeye çalıştı." unknown: "Bir şeyler ters gitti." buttons: back: "Geri Dönün" @@ -600,8 +671,12 @@ tr_TR: logout: "Çıkış yapıldı." refresh: "Yenile" read_only_mode: - enabled: "Salt-okunur modu etkin. Siteyi gezmeye devam edebilirsiniz fakat etkileşimler çalışmayabilir." + enabled: "Bu site salt okunur modda. Lütfen gezinmeye devam edin, ancak yanıt yazma, beğenme ve diğer aksiyonlar şu an için devre dışı durumda." login_disabled: "Site salt-okunur modda iken oturum açma devre dışı bırakılır ." + logout_disabled: "Site salt okunur modda iken oturum kapatma işlemi yapılamaz." + too_few_topics_and_posts_notice: "Hadi bu tartışmayı başlatalım! Şu anda %{currentTopics} / %{requiredTopics} konu ve %{currentPosts} / %{requiredPosts} gönderi var. Yeni ziyaretçiler okumak ve yanıtlamak için birkaç tartışmaya ihtiyaç duyarlar." + too_few_topics_notice: "Hadi bu tartışmayı başlatalım! Şu anda %{currentTopics} / %{requiredTopics} konu var. Yeni ziyaretçiler okumak ve yanıtlamak için birkaç tartışmaya ihtiyaç duyarlar." + too_few_posts_notice: "Hadi bu tartışmayı başlatalım! Şu anda %{currentPosts} / %{requiredPosts} gönderi var. Yeni ziyaretçiler okumak ve yanıtlamak için birkaç tartışmaya ihtiyaç duyarlar." learn_more: "daha fazlasını öğren..." year: 'yıl' year_desc: 'son 365 günde oluşturulan konular' @@ -617,10 +692,17 @@ tr_TR: last_reply_lowercase: son cevap replies_lowercase: other: cevap + signup_cta: + sign_up: "Üye Ol" + hide_session: "Yarın bana hatırlat" + hide_forever: "hayır teşekkürler" + hidden_for_session: "Tamamdır, yarın tekrar soracağım. İstediğiniz zaman 'Giriş' yaparak da hesap oluşturabilirsiniz." + intro: "Nabersin! heart_eyes: Görüneşe göre tartışmaların keyfini çıkaryorsun, fakat henüz bir hesap almak için kayıt olmamışsın." + value_prop: "Bir hesap oluşturduğunuzda, tam olarak neyi okuyor olduğunuzu hatırlarız, böylece her zaman okumayı bırakmış olduğunuz yere geri gelirsiniz. Ayrıca burada, yeni gönderiler yağıldığında email yoluyla bildirim alırsınız. Ve sevgiyi paylaşmak için gönderileri beğenebilirsiniz. :heartbeat:" summary: enabled_description: "Bu konunun özetini görüntülemektesiniz: topluluğun en çok ilgisini çeken gönderiler" - description: "{{count}} sayıda cevap var." - description_time: "Tahmini okunma süresi {{readingTime}} dakika olan {{count}} sayıda cevap var." + description: "{{replyCount}} adet yanıt var." + description_time: "Tahmini okuma süresi {{readingTime}} dakika olan {{replyCount}} yanıt var." enable: 'Bu Konuyu Özetle.' disable: 'Tüm Gönderileri Göster' deleted_filter: @@ -674,6 +756,9 @@ tr_TR: admin_not_allowed_from_ip_address: "Bu IP adresinden yönetici olarak oturum açamazsınız." resend_activation_email: "Etkinleştirme e-postasını tekrar yollamak için buraya tıklayın. " sent_activation_email_again: "{{currentEmail}} adresine yeni bir etkinleştirme e-postası yolladık. Bu e-postanın size ulaşması bir kaç dakika sürebilir; spam klasörüzü kontrol etmeyi unutmayın." + to_continue: "Lütfen Giriş Yap" + preferences: "Seçeneklerinizi değiştirebilmek için giriş yapmanız gerekiyor." + forgot: "Hesap bilgilerimi hatırlamıyorum" google: title: "Google ile" message: "Google ile kimlik doğrulaması yapılıyor (pop-up engelleyicilerin etkinleştirilmediğinden emin olun)" @@ -683,6 +768,9 @@ tr_TR: twitter: title: "Twitter ile" message: "Twitter ile kimlik doğrulaması yapılıyor (pop-up engelleyicilerin etkinleştirilmediğinden emin olun)" + instagram: + title: "Instagram ile" + message: "Instagram ile kimlik doğrulaması yapılıyor (pop-up engelleyicilerin etkinleştirilmediğinden emin olun)" facebook: title: "Facebook ile" message: "Facebook ile kimlik doğrulaması yapılıyor (pop-up engelleyicilerin etkinleştirilmediğinden emin olun)" @@ -696,15 +784,24 @@ tr_TR: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + emoji: "Emoji :)" + more_emoji: "dahası..." + options: "Seçenekler" + whisper: "fısıltı" add_warning: "Bu resmi bir uyarıdır." + toggle_whisper: "Fısıldamayı Göster/Gizle" posting_not_on_topic: "Hangi konuyu cevaplamak istiyorsun?" saving_draft_tip: "kaydediliyor..." saved_draft_tip: "kaydedildi" saved_local_draft_tip: "yerele kaydedildi" similar_topics: "Konunuz şunlara çok benziyor..." drafts_offline: "çevrimdışı taslaklar" + group_mentioned: "{{group}} adlı grubu kullanarak, {{count}} kişiye bildirim göndermek üzeresiniz." error: title_missing: "Başlık gerekli" title_too_short: "Başlık en az {{min}} karakter olmalı" @@ -727,7 +824,7 @@ tr_TR: show_edit_reason: "(düzenleme sebebi ekle)" reply_placeholder: "Buraya yazın. Biçimlendirmek için Markdown, BBCode ya da HTML kullanabilirsin. Resimleri sürükleyebilir ya da yapıştırabilirsin." view_new_post: "Yeni gönderinizi görüntüleyin." - saving: "Kaydediliyor..." + saving: "Kaydediliyor" saved: "Kaydedildi!" saved_draft: "Gönderi taslağı işleniyor. Geri almak için seçin. " uploading: "Yükleniyor..." @@ -742,6 +839,7 @@ tr_TR: link_description: "buraya bağlantı açıklamasını girin" link_dialog_title: "Bağlantı ekle" link_optional_text: "opsiyonel başlık" + link_placeholder: "http://example.com \"isteğe bağlı yazı\"" quote_title: "Blok-alıntı" quote_text: "Blok-alıntı" code_title: "Önceden biçimlendirilmiş yazı" @@ -754,10 +852,11 @@ tr_TR: heading_title: "Başlık" heading_text: "Başlık" hr_title: "Yatay Çizgi" - undo_title: "Geri Al" - redo_title: "Tekrarla" help: "Markdown Düzenleme Yardımı" toggler: "yazım alanını gizle veya göster" + modal_ok: "Tamam" + modal_cancel: "İptal" + cant_send_pm: "Üzgünüz, %{username} kullanıcısına mesaj gönderemezsiniz." admin_options_title: "Bu konu için opsiyonel görevli ayarları" auto_close: label: "Başlığı otomatik kapatma zamanı:" @@ -774,11 +873,15 @@ tr_TR: more: "daha eski bildirimleri görüntüle" total_flagged: "tüm bayraklanan gönderiler" mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" + posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" + liked_2: "
{{username}}, {{username2}} {{description}}
" + liked_many: + other: "
{{username}}, {{username2}} ve diğer {{count}} kişi {{description}}
" private_message: "
{{username}} {{description}}
" invited_to_private_message: "
{{username}} {{description}}
" invited_to_topic: "
{{username}} {{description}}
" @@ -786,6 +889,8 @@ tr_TR: moved_post: "
{{username}} taşıdı {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
{{description}} rozeti kazandınız!
" + group_message_summary: + other: "
{{group_name}} isimli grubunuzun gelen kutusunda {{count}} adet mesaj var
" alt: mentioned: "Bahsedildi, şu kişi tarafından" quoted: "Alıntılandı, şu kişi tarafından" @@ -800,8 +905,10 @@ tr_TR: moved_post: "Gönderiniz taşındı, şu kişi tarafından" linked: "Gönderinize bağlantı" granted_badge: "Rozet alındı" + group_message_summary: "Grup gelen kutusundaki mesajlar" popup: mentioned: '{{username}}, "{{topic}}" başlıklı konuda sizden bahsetti - {{site_title}}' + group_mentioned: '{{username}} sizden bahsetti "{{topic}}" - {{site_title}}' quoted: '{{username}}, "{{topic}}" başlıklı konuda sizden alıntı yaptı - {{site_title}}' replied: '{{username}}, "{{topic}}" başlıklı konuda size cevap verdi - {{site_title}}' posted: '{{username}}, "{{topic}}" başlıklı konuya yazdı - {{site_title}}' @@ -813,17 +920,24 @@ tr_TR: from_my_computer: "Kendi cihazımdan" from_the_web: "Webden" remote_tip: "resme bağlantı ver" - remote_tip_with_attachments: "resme ya da dosyaya ({{authorized_extensions}}) bağlantı ver" + remote_tip_with_attachments: "dosya yada imaj linki {{authorized_extensions}}" local_tip: "cihazınızdan resimler seçin" - local_tip_with_attachments: "cihazınızdan resim veya dosyalar seçin ({{authorized_extensions}})" + local_tip_with_attachments: "cihaınızdan imaj yada dosya seçin {{authorized_extensions}}" hint: "(editöre sürekle & bırak yaparak da yükleyebilirsiniz)" hint_for_supported_browsers: "ayrıca resimleri düzenleyiciye sürükleyip bırakabilir ya da yapıştırabilirsiniz" uploading: "Yükleniyor" select_file: "Dosya seçin" image_link: "resminizin yönleneceği bağlantı" search: + sort_by: "Sırala" + relevance: "Alaka" + latest_post: "Son Gönderi" + most_viewed: "En Çok Görüntülenen" + most_liked: "En Çok Beğenilen" select_all: "Tümünü Seç" clear_all: "Tümünü Temizle" + result_count: + other: "\"{{term}}\" için sonuçlar {{count}}" title: "konu, gönderi, kullanıcı veya kategori ara" no_results: "Hiç bir sonuç bulunamadı." no_more_results: "Başka sonuç yok." @@ -842,12 +956,14 @@ tr_TR: current_user: 'kendi kullanıcı sayfana git' topics: bulk: + unlist_topics: "Konuları Listeleme" reset_read: "Okunmuşları Sıfırla" delete: "Konuları Sil" - dismiss_posts: "Gönderileri Yoksay" - dismiss_posts_tooltip: "Bu konulardaki okunmamışların sayısını sıfırla ama yeni gönderiler oluşturulduğunda okunmamışlar listemde göster" - dismiss_topics: "Konuları Yoksay" - dismiss_topics_tooltip: "Bu konularda yeni gönderiler oluşturulunca okunmamış listemde gösterme" + dismiss: "Yoksay" + dismiss_read: "Okumadıklarını yoksay" + dismiss_button: "Yoksay..." + dismiss_tooltip: "Yeni gönderileri görmezden gel yada konuları izlemeyi bırak" + also_dismiss_topics: "Bana, tekrar okunmamış olarak gösterilmemesi için bu konuları izlemeyi bırak." dismiss_new: "Yenileri Yoksay" toggle: "konuların toplu seçimini aç/kapa" actions: "Toplu İşlemler" @@ -869,9 +985,6 @@ tr_TR: category: "{{category}} konusu yok." top: "Popüler bir konu yok." search: "Arama sonuçları yok." - educate: - new: '
Yeni konularınız burada belirir.
Varsayılan ayarlarda, son 2 gün içerisinde açılan konular yeni sayılır ve yeni işaretiyle gösterilir.
Dilerseniz bu seçeneği ayarlar sayfanızdan düzenleyebilirsiniz.
' - unread: '
Okunmamış konularınız burada belirecek.
Varsayılan ayarlarda, şu durumlarda konular okunmamış sayılır ve okunmamışların sayısı 1 gösterilir:
Ya da, konunun altında bulunan bildirim kontrol bölümünden, konuyu Takip Edildi veya Gözlendi diye işaretlediyseniz.
Bu ayarları ayarlar sayfasından değiştirebilirsiniz.
' bottom: latest: "Daha fazla son konu yok." hot: "Daha fazla sıcak bir konu yok." @@ -891,6 +1004,12 @@ tr_TR: create: 'Yeni Konu' create_long: 'Yeni bir konu oluştur' private_message: 'Mesajlaşma başlat' + archive_message: + help: 'Mesajı arşivine taşı' + title: ' Arşiv' + move_to_inbox: + title: 'Gelen kutusuna taşı' + help: 'Mesajı yeniden gelen kutusuna taşı' list: 'Konular' new: 'yeni konu' unread: 'okunmamış' @@ -921,7 +1040,7 @@ tr_TR: options: "Konu Seçenekleri" show_links: "Bu konunun içindeki bağlantıları göster. " toggle_information: "konu ayrıntılarını aç/kapa" - read_more_in_category: "Daha fazlası için {{catLink}} kategorisine göz atabilir ya da {{latestLink}}bilirsiniz." + read_more_in_category: "Daha fazlası için {{catLink}} kategorisine göz atabilir ya da {{latestLink}}yebilirsiniz." read_more: "Daha fazla okumak mı istiyorsunuz? {{catLink}} ya da {{latestLink}}." read_more_MF: "Kalan { UNREAD, plural, =0 {} one { 1 okunmamış } other { # okunmamış } } { NEW, plural, =0 {} one { {BOTH, select, true{ve} false {} other{}} 1 yeni konu} other { {BOTH, select, true{and } false {} other{}} # yeni konu} } var, veya {CATEGORY, select, true { {catLink}} false {{latestLink}} kategorilerindeki diğer {} konulara göz atabilirsiniz }" browse_all_categories: Bütün kategorilere göz at @@ -935,6 +1054,7 @@ tr_TR: auto_close_title: 'Otomatik Kapatma Ayarları' auto_close_save: "Kaydet" auto_close_remove: "Bu Konuyu Otomatik Olarak Kapatma" + auto_close_immediate: "Son konudaki mesaj %{hours} saat olmuş, bu yüzden konu hemen kapanacak" progress: title: konu gidişatı go_top: "en üst" @@ -984,7 +1104,7 @@ tr_TR: description: "Bu mesajlaşmayla ilgili hiç bir bildirim almayacaksınız." muted: title: "Susturuldu" - description: "Bu konu okunmamışlar sekmenizde belirmeyecek, ve hakkında hiç bir bildirim almayacaksınız." + description: "Bu konu en son gönderilerde belirmeyecek, ve hakkında hiçbir bildirim almayacaksınız." actions: recover: "Konuyu Geri Getir" delete: "Konuyu Sil" @@ -1026,25 +1146,22 @@ tr_TR: unpin_until: "Bu konuyu {{categoryLink}} kategorisinin başından kaldır ya da şu zamana kadar bekle: %{until}." pin_note: "Kullanıcılar kendileri için konunun başa tutturulmasını kaldırabilir." pin_validation: "Bu konuyu sabitlemek için bir tarih gerekli." + not_pinned: " {{categoryLink}} kategorisinde başa tutturulan herhangi bir konu yok." already_pinned: - zero: " {{categoryLink}} kategorisinde başa tutturulan herhangi bir konu yok." - one: "Şu an {{categoryLink}} kategorisinde başa tutturulan konular: 1." other: "Şu an {{categoryLink}} kategorisinde başa tutturulan konular: {{count}}." pin_globally: "Şu zamana kadar bu konunun bütün konu listelerinin başında yer almasını sağla" confirm_pin_globally: "Zaten her yerde başa tutturulan {{count}} konunuz var. Çok fazla konuyu başa tutturmak yeni ve anonim kullanıcılara sıkıntı çektirebilir. Bir konuyu daha her yerde başa tutturmak istediğinizden emin misiniz?" unpin_globally: "Bu konuyu tüm konu listelerinin en üstünden kaldır." unpin_globally_until: "Bu konuyu bütün konu listelerinin başından kaldır ya da şu zamana kadar bekle: %{until}." global_pin_note: "Kullanıcılar kendileri için konunun başa tutturulmasını kaldırabilir." + not_pinned_globally: "Her yerde başa tutturulan herhangi bir konu yok." already_pinned_globally: - zero: "Her yerde başa tutturulan herhangi bir konu yok." - one: "Şu an her yerde başa tutturulan konular: 1." other: "Şu an her yerde başa tutturulan konular: {{count}}." make_banner: "Bu konuyu tüm sayfaların en üstünde görünecek şekilde manşetleştir." remove_banner: "Tüm sayfaların en üstünde görünen manşeti kaldır." banner_note: "Kullanıcılar bu manşeti kapatarak yoksayabilirler. Herhangi bir zamanda sadece bir konu manşetlenebilir." - already_banner: - zero: "Manşet konusu yok." - one: "Şu an bir manşet konusu var." + no_banner_exists: "Manşet konusu yok." + banner_exists: "Şu an bir manşet konusu var." inviting: "Davet Ediliyor..." automatically_add_to_groups_optional: "Bu davet şu gruplara erişimi de içerir: (opsiyonel, sadece yöneticiler için)" automatically_add_to_groups_required: "Bu davet şu gruplara erişimi de içerir: (Gerekli, sadece yöneticiler için)" @@ -1056,6 +1173,7 @@ tr_TR: success: "O kullanıcıyı bu mesajlaşmaya davet ettik." error: "Üzgünüz, kullanıcı davet edilirken bir hata oluştu." group_name: "grup adı" + controls: "Konu Kontrolleri" invite_reply: title: 'Davet Et' username_placeholder: "kullanıcıadı" @@ -1140,9 +1258,8 @@ tr_TR: other: "{{count}} Beğeni" has_likes_title: other: "{{count}} kişi bu gönderiyi beğendi" + has_likes_title_only_you: "bu gönderiyi beğendiniz" has_likes_title_you: - zero: "bu gönderiyi beğendiniz" - one: "siz ve diğer 1 kişi bu gönderiyi beğendi" other: "siz ve {{count}} diğer kişi bu gönderiyi beğendi" errors: create: "Üzgünüz, gönderiniz oluşturulurken bir hata oluştu. Lütfen tekrar deneyin." @@ -1163,7 +1280,7 @@ tr_TR: via_email: "bu gönderi e-posta ile iletildi" whisper: "bu gönderi yöneticiler için özel bir fısıltıdır" wiki: - about: "bu gönderi bir wiki; acemi kullanıcılar düzenleyebilir" + about: "bu gönderi bir wiki" archetypes: save: 'Seçenekleri kaydet' controls: @@ -1190,6 +1307,7 @@ tr_TR: revert_to_regular: "Görevli Rengini Kaldır" rebake: "HTML'i Yeniden Yapılandır" unhide: "Gizleme" + change_owner: "sahipliğini değiştir" actions: flag: 'Bayrakla' defer_flags: @@ -1210,17 +1328,14 @@ tr_TR: like: "Beğenini geri al" vote: "Oyunu geri al" people: - off_topic: "{{icons}} konu dışı olarak bayrakladı" - spam: "{{icons}} spam olarak bayrakladı" - spam_with_url: "{{icons}} bu linki spam olarak bayrakladı" - inappropriate: "{{icons}} uygunsuz olarak bayrakladı" - notify_moderators: "{{icons}} bildirim gönderilen moderatörler" - notify_moderators_with_url: "{{icons}} bildirim gönderilen moderatörler" - notify_user: "{{icons}} mesaj yolladı" - notify_user_with_url: "{{icons}} mesaj yolladı" - bookmark: "{{icons}} bunu işaretledi" - like: "{{icons}} bunu beğendi" - vote: "{{icons}} bunun için oyladı" + off_topic: "konu dışı olarak bayrakladı" + spam: "spam olarak bayrakladı" + inappropriate: "uygunsuz olarak bayrakladı" + notify_moderators: "moderatörler bilgilendirdi" + notify_user: "mesaj gönderdi" + bookmark: "işaretledi" + like: "beğendi" + vote: "oyladı" by_you: off_topic: "Bunu konu dışı olarak bayrakladınız" spam: "Bunu spam olarak bayrakladınız" @@ -1264,10 +1379,6 @@ tr_TR: other: "{{count}} kişi bunu beğendi" vote: other: "{{count}} kişi bu gönderiyi oyladı" - edits: - one: 1 düzenleme - other: "{{count}} düzenleme" - zero: hiç bir düzenleme delete: confirm: other: "Tüm bu gönderileri silmek istediğinize emin misiniz?" @@ -1347,19 +1458,18 @@ tr_TR: notifications: watching: title: "Gözleniyor" - description: "Bu kategorilerdeki tüm yeni konuları otomatik olarak gözleyeceksiniz. Tüm yeni gönderi ve konularla ilgili bildiri alacaksınız, ayrıca okunmamış ve yeni gönderilerin sayısı ilgili konunun yanında belirecek." + description: "Bu kategorilerdeki tüm yeni konuları otomatik olarak gözleyeceksiniz. Tüm yeni gönderi ve konular size bildirilecek. Ayrıca, okunmamış ve yeni gönderilerin sayısı ilgili konunun yanında belirecek." tracking: title: "Takip Ediliyor" - description: "Bu kategorilerdeki tüm yeni konuları otomatik olarak takip edeceksiniz. Okunmamış ve yeni gönderilerin sayısı ilgili konunun yanında belirecek." + description: "Bu kategorilerdeki tüm yeni konuları otomatik olarak gözleyeceksiniz. Biri @isim şeklinde sizden bahsederse ya da gönderinize cevap verirse bildirim alacaksınız. Ayrıca, okunmamış ve yeni cevapların sayısı ilgili konunun yanında belirecek." regular: - title: "Standart" + title: "Normal" description: "Birisi @isim şeklinde sizden bahsederse ya da gönderinize cevap verirse bildirim alacaksınız." muted: title: "Susturuldu" - description: "Bu kategorilerdeki yeni konular hakkında herhangi bir bildiri almayacaksınız ve okunmamışlar sekmenizde belirmeyecek. " + description: "Bu kategorilerdeki yeni konular hakkında herhangi bir bildiri almayacaksınız ve en son gönderilerde belirmeyecekler. " flagging: title: 'Topluluğumuzun medeni kalmasına yardımcı olduğunuz için teşekkürler!' - private_reminder: 'bayraklar özeldir, sadece görevlilere gözükür' action: 'Gönderiyi Bayrakla' take_action: "Harekete Geç" notify_action: 'Mesaj' @@ -1371,6 +1481,7 @@ tr_TR: submit_tooltip: "Özel bayrağı gönder" take_action_tooltip: "Topluluğunuzdan daha fazla bayrak beklemek yerine bunu siz hızlıca yaparak eşiğe erişebilirsiniz" cant: "Üzgünüz, şu an bu gönderiyi bayraklayamazsınız." + notify_staff: 'Yetkililere özel olarak bildir' formatted_name: off_topic: "Konu Dışı" inappropriate: "Uygunsuz" @@ -1408,7 +1519,7 @@ tr_TR: help: "Bu konu sizin için başa tutturulmuyor; normal sıralama içerisinde görünecek" pinned_globally: title: "Her Yerde Başa Tutturuldu" - help: "Bu konu her yerde başa tutturuldu; tüm listelerin başında görünecek" + help: "Bu konu her yerde başa tutturuldu; gönderildiği kategori ve en son gönderilerin en üstünde görünecek" pinned: title: "Başa Tutturuldu" help: "Bu konu sizin için başa tutturuldu; kendi kategorisinin en üstünde görünecek" @@ -1448,9 +1559,8 @@ tr_TR: with_topics: "%{filter} konular" with_category: "%{filter} %{category} konular" latest: - title: - zero: "En Son" - one: "En Son (1)" + title: "En son" + title_with_count: other: "En Son ({{count}})" help: "yakın zamanda gönderi alan konular" hot: @@ -1467,22 +1577,18 @@ tr_TR: title_in: "Kategori - {{categoryName}}" help: "kategori bazında tüm konular" unread: - title: - zero: "Okunmamış" - one: "Okunmamış (1)" + title: "Okunmamış" + title_with_count: other: "Okunmamış ({{count}})" help: "okunmamış gönderiler bulunan gözlediğiniz ya da takip ettiğiniz konular" lower_title_with_count: - one: "1 okunmamış" other: "{{count}} okunmamış" new: lower_title_with_count: - one: "1 yeni" other: "{{count}} yeni" lower_title: "yeni" - title: - zero: "Yeni" - one: "Yeni (1)" + title: "Yeni" + title_with_count: other: "Yeni ({{count}}) " help: "son birkaç günde oluşturulmuş konular" posted: @@ -1492,9 +1598,8 @@ tr_TR: title: "İşaretlenenler" help: "işaretlediğiniz konular" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}} (1)" + title: "{{categoryName}}" + title_with_count: other: "{{categoryName}} ({{count}})" help: "{{categoryName}} kategorisindeki en son konular" top: @@ -1575,6 +1680,7 @@ tr_TR: refresh_report: "Raporu Yenile" start_date: "Başlangıç tarihi" end_date: "Bitiş Tarihi" + groups: "Tüm gruplar" commits: latest_changes: "En son değişiklikler: lütfen sık güncelleyin!" by: "tarafından" @@ -1650,15 +1756,24 @@ tr_TR: delete_confirm: "Grup silinsin mi?" delete_failed: "Grup silinemedi. Bu otomatik oluşturulmuş bir grup ise, yok edilemez." delete_member_confirm: "'%{username}' adlı kullanıcıyı '%{group}' grubundan çıkart?" + delete_owner_confirm: "'%{username}' için sahiplik imtiyazı kaldırılsın mı?" name: "Ad" add: "Ekle" add_members: "Üye ekle" custom: "Özel" + bulk_complete: "Kullanıcılar gruba eklendi." + bulk: "Topluca Gruba Ekle" + bulk_paste: "Kullanıcı adı yada eposta listesini yapıştırın, her satıra bir tane gelecek:" + bulk_select: "(bir grup seçin)" automatic: "Otomatik" automatic_membership_email_domains: "Bu listedeki bir e-posta alan adıyla kaydolan kullanıcılar otomatik olarak bu gruba eklenecekler:" automatic_membership_retroactive: "Varolan kayıtlı kullanıcıları eklemek için aynı e-posta alan adı kuralını uygula" default_title: "Bu gruptaki tüm kullanıcılar için varsayılan başlık" primary_group: "Otomatik olarak ana grup yap" + group_owners: Sahipler + add_owners: Sahiplik ekle + incoming_email: "Özel gelen e-posta adresi" + incoming_email_placeholder: "e-posta adresi girin" api: generate_master: "Ana API Anahtarı Üret" none: "Şu an etkin API anahtarı bulunmuyor." @@ -1732,11 +1847,11 @@ tr_TR: is_disabled: "Geri getirme site ayarlarında devredışı bırakılmış." label: "Geri Yükle" title: "Yedeği geri getir" - confirm: "Yedeği geri getirmek istediğinize emin misiniz?" + confirm: "Bu yedekten geri dönmek istediğinize emin misiniz?" rollback: label: "Geri al" title: "Veritabanını calışan son haline geri al." - confirm: "Veri tabanını çalışan bir önceki versyonuna geri almak istediğinizden emin misiniz?" + confirm: "Veritabanını çalışan son haline döndürmek istediğinize emin misiniz?" export_csv: user_archive_confirm: "Gönderilerinizi indirmek istediğinize emin misiniz ?" success: "Dışarı aktarma başlatıldı, işlem tamamlandığında mesajla bilgilendirileceksiniz." @@ -1787,6 +1902,14 @@ tr_TR: color: "Renk" opacity: "Opaklık" copy: "Kopyala" + email_templates: + title: "E-posta Şablonları" + subject: "Konu" + multiple_subjects: "Bu e-posta şablonunda birden fazla konu mevcut." + body: "İçerik" + none_selected: "Düzenlemeye başlamak için içerik tipi seçin. " + revert: "Değişiklikleri Sıfırla" + revert_confirm: "Değişiklikleri sıfırlamak istediğinize emin misiniz?" css_html: title: "CSS/HTML" long_title: "CSS ve HTML Özelleştirmeleri" @@ -1831,18 +1954,18 @@ tr_TR: love: name: 'sevgi' description: "Beğen butonunun rengi." - wiki: - name: 'wiki' - description: "wiki gönderilerinin arka plan rengi." email: - title: "E-posta" + title: "E-postalar" settings: "Ayarlar" - all: "Hepsi" + templates: "Şablonlar" + preview_digest: "Özeti Önizle" sending_test: "Test e-postası gönderiliyor..." error: "HATA - %{server_error}" test_error: "Test e-postasının gönderilmesinde sorun yaşandı. Lütfen e-posta ayarlarınızı tekrar kontrol edin, yer sağlayıcınızın e-posta bağlantılarını bloke etmediğinden emin olun, ve tekrar deneyin." sent: "Gönderildi" skipped: "Atlandı" + received: "Alındı" + rejected: "Reddedildi" sent_at: "Gönderildiği Zaman" time: "Zaman" user: "Kullanıcı" @@ -1852,7 +1975,6 @@ tr_TR: send_test: "Test E-postası Gönder" sent_test: "gönderildi!" delivery_method: "Gönderme Metodu" - preview_digest: "Özeti Önizle" preview_digest_desc: "Durgun kullanıcılara gönderilen özet e-postaların içeriğini önizle." refresh: "Yenile" format: "Format" @@ -1861,6 +1983,25 @@ tr_TR: last_seen_user: "Son Görülen Kullanıcı:" reply_key: "Cevapla Tuşu" skipped_reason: "Nedeni Atla" + incoming_emails: + from_address: "Gönderen" + to_addresses: "Kime" + cc_addresses: "Cc" + subject: "Konu" + error: "Hata" + none: "Gelen e-posta yok." + modal: + title: "Gelen E-posta Detayları" + error: "Hata" + subject: "Konu" + body: "İçerik" + rejection_message: "Ret E-postası" + filters: + from_placeholder: "from@example.com" + to_placeholder: "to@example.com" + cc_placeholder: "cc@example.com" + subject_placeholder: "Konu..." + error_placeholder: "Hata" logs: none: "Hiç bir kayıt bulunamadı." filters: @@ -1879,6 +2020,7 @@ tr_TR: ip_address: "IP" topic_id: "Konu IDsi" post_id: "Gönderi IDsi" + category_id: "Kategori ID" delete: 'Sil' edit: 'Düzenle' save: 'Kaydet' @@ -1909,6 +2051,7 @@ tr_TR: change_site_setting: "websitesi ayarlarını değiştir" change_site_customization: "websitesinin özelleştirmesini değiştir" delete_site_customization: "websitesinin özelleştirmesini sil" + change_site_text: "site metnini değiştir" suspend_user: "kullanıcıyı uzaklaştır" unsuspend_user: "kullanıcıyı uzaklaştırma" grant_badge: "rozet ver" @@ -1919,6 +2062,16 @@ tr_TR: impersonate: "rolüne gir" anonymize_user: "kullanıcıyı anonimleştir" roll_up: "IP bloklarını topla" + change_category_settings: "kategori ayarlarını değiştir" + delete_category: "kategoriyi sil" + create_category: "kategori oluştur" + block_user: "kullanıcıyı blokla" + unblock_user: "kullanıcı engelini kaldır" + grant_admin: "yönetici yetkisi ver" + revoke_admin: "yönetici yetkisini kaldır" + grant_moderation: "moderasyon yetkisi ver" + revoke_moderation: "moderasyon yetkisini kaldır" + backup_operation: "yedek operasyonu" screened_emails: title: "Taranmış E-postalar" description: "Biri yeni bir hesap oluşturmaya çalıştığında, aşağıdaki e-posta adresleri kontrol edilecek ve kayıt önlenecek veya başka bir aksiyon alınacak." @@ -1983,9 +2136,9 @@ tr_TR: pending: 'Gözden Geçirilmeyi Bekleyen Kullanıcılar' newuser: 'Güven seviyesi 0 (Yeni kullanıcı) olan kullanıcılar' basic: 'Güven seviyesi 1 (Acemi kullanıcı) olan kullanıcılar' - regular: 'Güven seviyesi 2 (Üye) olan kullanıcılar' - leader: 'Güven seviyesi 3 (Müdavim) olan kullanıcılar' - elder: 'Güven seviyesi 4 (Lider) olan kullanıcılar' + member: 'Güven seviyesi 2 (Üye) olan kullanıcılar' + regular: 'Güven seviyesi 3 (Müdavim) olan kullanıcılar' + leader: 'Güven seviyesi 4 (Lider) olan kullanıcılar' staff: "Görevli" admins: 'Yöneticiler' moderators: 'Moderatörler' @@ -2077,6 +2230,8 @@ tr_TR: deactivate_failed: "Kullanıcı deaktive edilirken bir sorun yaşandı." unblock_failed: 'Kullanıcının engeli kaldırılırken bir sorun yaşandı.' block_failed: 'Kullanıcı engellenirken bir sorun yaşandı.' + block_confirm: 'Bu kullanıcıyı bloklamak istediğinize emin misiniz? Bunu yaparsanız yeni başlık ya da gönderi oluşturamayacak.' + block_accept: 'Evet, bu kullanıcıyı blokla' deactivate_explanation: "Deaktive edilmiş bir kullanıcı e-postasını tekrar doğrulamalı." suspended_explanation: "Uzaklaştırılmış kullanıcılar sistemde oturum açamaz." block_explanation: "Engellenmiş bir kullanıcı gönderi oluşturamaz veya konu başlatamaz." @@ -2090,7 +2245,7 @@ tr_TR: unlock_trust_level: "Güvenlik Seviyesi Kilidini Aç" tl3_requirements: title: "Güven Seviyesi 3 için Gerekenler" - table_title: "Son 100 günde:" + table_title: "Son %{time_period} günde" value_heading: "Değer" requirement_heading: "Gereksinim" visits: "Ziyaretler" @@ -2151,8 +2306,15 @@ tr_TR: confirm: 'Onay' dropdown: "Açılır liste" site_text: - none: "Düzenlemeye başlamak için içerik tipi seçin." + description: "Forumunuzdaki herhangi bir metni özelleştirebilirsiniz. Lütfen aşağıda arayarak başlayın: " + search: "Düzenlemek istediğiniz metni arayın" title: 'Yazı İçeriği' + edit: 'düzenle' + revert: "Değişiklikleri Sıfırla" + revert_confirm: "Değişiklikleri sıfırlamak istediğinize emin misiniz?" + go_back: "Aramaya geri dön" + recommended: "İzleyen metni ihtiyaçlarınıza uygun şekilde özelleştimenizi öneririz:" + show_overriden: 'Sadece değiştirdiklerimi göster' site_settings: show_overriden: 'Sadece değiştirdiklerimi göster' title: 'Ayarlar' @@ -2240,9 +2402,8 @@ tr_TR: bad_count_warning: header: "UYARI!" text: "Bazı veriliş örnekleri bulunamıyor. Bu durum, rozet sorgusundan varolmayan kullanıcı IDsi veya gönderi IDsi dönünce gerçekleşir. İleride beklenmedik sonuçlara sebep olabilir - lütfen sorgunuzu tekrar kontrol edin." + no_grant_count: "Verilecek rozet bulunmuyor." grant_count: - zero: "Verilecek rozet bulunmuyor." - one: "1 rozet verilecek." other: "%{count} rozet verilecek." sample: "Örnek:" grant: @@ -2351,9 +2512,9 @@ tr_TR: mark_tracking: 'm, t Konuyu takip et' mark_watching: 'm, w Konuyu gözle' badges: + earned_n_times: + other: "Bu rozet %{count} defa kazanılmış" title: Rozetler - allow_title: "ünvan olarak kullanılabilir" - multiple_grant: "birden fazla kez verilebilir" badge_count: other: "%{count} Rozet" more_badges: @@ -2373,97 +2534,6 @@ tr_TR: name: Diğer posting: name: Gönderiler - badge: - editor: - name: Editör - description: İlk gönderi düzenleme - basic_user: - name: Acemi - description: Tüm temel topluluk işlevleri için hak verildi - member: - name: Üye - description: Davetiye gönderebilme hakkı verildi - regular: - name: Müdavim - description: Konuların isimlerini ve kategorilerini değiştirebilme, follow'lu bağlantı paylaşabilme ve lobiye girebilme hakları verildi - leader: - name: Lider - description: 'Tüm gönderileri düzenleyebilme, konuları başa tutturabilme, kapatabilme, arşivleyebilme, bölebilme ve birleştirebilme hakları verildi ' - welcome: - name: Hoş geldiniz - description: Bir beğeni aldı - autobiographer: - name: Otobiyografi Yazarı - description: Kullanıcı profil bilgilerini doldurmuş - anniversary: - name: Yıldönümü - description: Bir yıldır aktif kullanıcı, en az bir kere gönderi oluşturmuş. - nice_post: - name: Güzel Gönderi - description: Bir gönderiden 10 beğeni alındı. Bu rozet birden fazla defa verilebilir. - good_post: - name: İyi Gönderi - description: Bir gönderiden 25 beğeni alındı. Bu rozet birden fazla defa verilebilir. - great_post: - name: Harika Gönderi - description: Bir gönderiden 50 beğeni alındı. Bu rozet birden fazla defa verilebilir. - nice_topic: - name: Güzel Konu - description: Bir konuda 10 beğeni almış. Bu rozet birden çok kez kazanılabilir. - good_topic: - name: İyi Konu - description: Bir konuda 25 beğeni almış. Bu rozet birden çok kez kazanılabilir. - great_topic: - name: Harika Konu - description: Bir konuda 50 beğeni almış. Bu rozet birden çok kez kazanılabilir. - nice_share: - name: Güzel Paylaşım - description: 25 tekil kullanıcı ile bir gönderiyi paylaşmış - good_share: - name: İyi Paylaşım - description: 300 tekil kullanıcı ile bir gönderiyi paylaşmış - great_share: - name: Harika Paylaşım - description: 1000 tekil kullanıcı ile bir gönderiyi paylaşmış - first_like: - name: İlk beğeni - description: Bir gönderi beğendi - first_flag: - name: İlk Bayrak - description: Bir gönderiyi bayrakladı - promoter: - name: Destekçi - description: Kullanıcı davet etti - campaigner: - name: Katılanlar - description: 3 normal kullanıcı davet etti (Güven seviyesi 1) - champion: - name: Şampiyon - description: 5 kullanıcı davet etti (Güven seviyesi 2) - first_share: - name: İlk paylaşım - description: Bir gönderi paylaştı - first_link: - name: İlk bağlantı - description: Başka bir konuya iç bağlantı eklendi - first_quote: - name: İlk alıntı - description: Bir kullanıcıyı alıntıladı - read_guidelines: - name: Yönergeler okundu - description: Topluluk yönergelerini oku - reader: - name: Okuyucu - description: 100'den fazla gönderiye sahip bir konudaki tüm gönderileri oku - popular_link: - name: Gözde Bağlantı - description: En az 50 kere tıklanmış harici bir bağlantı gönderildi - hot_link: - name: Sıcak Bağlantı - description: En az 300 kere tıklanmış harici bir bağlantı gönderildi - famous_link: - name: Ünlü Bağlantı - description: En az 1000 kere tıklanmış harici bir bağlantı gönderildi google_search: |
diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml
index 1c30b782732..70a90f241c0 100644
--- a/config/locales/client.uk.yml
+++ b/config/locales/client.uk.yml
@@ -212,7 +212,6 @@ uk:
members: "Учасники"
posts: "Дописи"
alias_levels:
- title: "Хто може використовувати цю групу як аліас?"
nobody: "Ніхто"
only_admins: "Лише адміністратори"
mods_and_admins: "Лише модератори та адміністратори"
@@ -226,7 +225,6 @@ uk:
'5': "Відповіді"
'7': "Згадки"
'9': "Цитати"
- '10': "Позначені зірочкою"
'11': "Редагування"
'12': "Надіслані"
'13': "Вхідні"
@@ -277,9 +275,7 @@ uk:
perm_default: "Ввімкнути сповіщення"
perm_denied_btn: "Немає доступу"
disable: "Вимкнути сповіщення"
- currently_enabled: "(зараз увімкнено)"
enable: "Увімкнути сповіщення"
- currently_disabled: "(зараз вимкнено)"
dismiss_notifications: "Позначити все як прочитане"
dismiss_notifications_tooltip: "Позначити всі сповіщення як прочитані"
disable_jump_reply: "Не перескакувати до мого допису коли я відповім"
@@ -299,7 +295,6 @@ uk:
watched_categories: "Відслідковувані"
tracked_categories: "Відстежувані"
muted_categories: "Ігноровані"
- muted_categories_instructions: "Ви не будете отримувати жодних сповіщень про нові теми у цих категоріях, і вони не з'являтимуться у вкладці Непрочитані."
delete_account: "Delete My Account"
delete_account_confirm: "Are you sure you want to permanently delete your account? This action cannot be undone!"
deleted_yourself: "Your account has been deleted successfully."
@@ -314,8 +309,6 @@ uk:
warnings_received: "попередження"
messages:
all: "Всі"
- mine: "Мої"
- unread: "Непрочитані"
change_password:
success: "(лист надіслано)"
in_progress: "(надсилання листа)"
@@ -396,7 +389,6 @@ uk:
search: "шукати запрошення..."
title: "Запрошення"
user: "Запрошений користувач"
- truncated: "Показано перші {{count}} запрошень."
redeemed: "Прийняті запрошення"
redeemed_at: "Прийнято"
pending: "Запрошення, що очікують"
@@ -466,7 +458,6 @@ uk:
unmute: Unmute
last_post: Останній допис
summary:
- description: "Тут {{count}} відповідей."
enable: 'Підсумувати цю тему'
disable: 'Показати всі дописи'
deleted_filter:
@@ -548,7 +539,6 @@ uk:
edit_reason_placeholder: "чому Ви редагуєте допис?"
show_edit_reason: "(додати причину редагування)"
view_new_post: "Перегляньте свій новий допис."
- saving: "Збереження..."
saved: "Збережено!"
uploading: "Завантаження..."
show_preview: 'попередній перегляд »'
@@ -573,8 +563,6 @@ uk:
heading_title: "Заголовок"
heading_text: "Заголовок"
hr_title: "Горизонтальна лінія"
- undo_title: "Скасувати"
- redo_title: "Повернути"
help: "Markdown Editing Help"
toggler: "показати або сховати панель редагування"
admin_options_title: "Необов'язкові налаштування персоналу для цієї теми"
@@ -690,7 +678,6 @@ uk:
title: "Ігнорувати"
muted:
title: "Ігнорувати"
- description: "Ви ніколи не будете отримувати жодних сповіщень з цієї теми, і вона не буде відображатися у Вашій вкладці \"Непрочитані\"."
actions:
recover: "Відкликати видалення теми"
delete: "Видалити тему"
@@ -811,12 +798,6 @@ uk:
bookmark: "Скасувати закладку"
like: "Скасувати вподобання"
vote: "Відкликати голос"
- people:
- notify_moderators: "Звернули увагу модераторів: {{icons}}"
- notify_moderators_with_url: "Звернули увагу модераторів: {{icons}}"
- bookmark: "Лишили тут закладку: {{icons}}"
- like: "Вподобали це: {{icons}}"
- vote: "Проголосували за це: {{icons}}"
by_you:
off_topic: "Ви поскаржилися на це як на недотичне до теми"
spam: "Ви поскаржилися на це як на спам"
@@ -825,9 +806,6 @@ uk:
bookmark: "Ви лишили тут закладку"
like: "Ви це вподобали"
vote: "Ви проголосували за цей допис"
- edits:
- one: '{{count}} редагування'
- other: "без редагувань"
delete:
confirm:
one: "Ви впевнені, що хочете видалити цей допис?"
@@ -889,8 +867,6 @@ uk:
title: "Слідкувати"
tracking:
title: "Стежити"
- regular:
- title: "Звичайний"
muted:
title: "Ігноровані"
flagging:
@@ -946,28 +922,14 @@ uk:
title: "Категорії"
title_in: "Категорія - {{categoryName}}"
help: "всі теми, згруповані за категоріями"
- unread:
- title:
- one: "Непрочитані ({{count}})"
- other: "Непрочитані"
new:
- lower_title_with_count:
- one: "{{count}} new"
lower_title: "new"
- title:
- zero: "Новий"
- one: "Нові ({{count}})"
- other: "Нові"
posted:
title: "Мої дописи"
help: "теми, в які Ви дописували"
bookmarks:
title: "Закладки"
category:
- title:
- zero: "{{categoryName}}"
- one: "{{categoryName}} ({{count}})"
- other: "{{categoryName}}"
help: "Останні теми в категорії {{categoryName}}"
top:
title: "Top"
@@ -1109,10 +1071,8 @@ uk:
restore:
is_disabled: "Restore is disabled in the site settings."
title: "Restore the backup"
- confirm: "Are your sure you want to restore this backup?"
rollback:
title: "Rollback the database to previous working state"
- confirm: "Are your sure you want to rollback the database to the previous working state?"
customize:
title: "Customize"
long_title: "Site Customizations"
@@ -1155,9 +1115,8 @@ uk:
love:
description: "Колір кнопки \"Подобається\"."
email:
- title: "Електронна пошта"
settings: "Налаштування"
- all: "All"
+ preview_digest: "Стислий виклад новин"
sent: "Sent"
skipped: "Skipped"
sent_at: "Надіслано"
@@ -1169,7 +1128,6 @@ uk:
send_test: "Надіслати Тестовий Email"
sent_test: "надіслано!"
delivery_method: "Спосіб доставки"
- preview_digest: "Стислий виклад новин"
refresh: "Оновити"
format: "Формат"
html: "html"
@@ -1334,7 +1292,6 @@ uk:
trust_level_3_requirements: "Вимоги для Рівня довіри 3"
tl3_requirements:
title: "Вимоги для Рівня довіри 3"
- table_title: "Протягом останніх 100 днів:"
value_heading: "Значення"
requirement_heading: "Вимога"
visits: "Відвідини"
@@ -1447,28 +1404,3 @@ uk:
name: Спільнота
other:
name: Інше
- badge:
- editor:
- name: Редактор
- basic_user:
- description: Надані всі основні функції спільноти
- welcome:
- name: Ласкаво просимо
- autobiographer:
- name: Автобіографіст
- anniversary:
- name: Річниця
- nice_topic:
- name: Непогана тема
- good_topic:
- name: Хороша тема
- great_topic:
- name: Чудова тема
- first_link:
- name: Перше посилання
- first_quote:
- name: Перша цитата
- read_guidelines:
- name: Читати інструкції
- reader:
- name: Читач
diff --git a/config/locales/client.vi.yml b/config/locales/client.vi.yml
new file mode 100644
index 00000000000..bc56262eae2
--- /dev/null
+++ b/config/locales/client.vi.yml
@@ -0,0 +1,2502 @@
+# encoding: utf-8
+#
+# Never edit this file. It will be overwritten when translations are pulled from Transifex.
+#
+# To work with us on translations, join this project:
+# https://www.transifex.com/projects/p/discourse-org/
+
+vi:
+ js:
+ number:
+ format:
+ separator: "."
+ delimiter: ","
+ human:
+ storage_units:
+ format: '%n %u'
+ units:
+ byte:
+ other: Byte
+ gb: GB
+ kb: KB
+ mb: MB
+ tb: TB
+ short:
+ thousands: "{{number}}k"
+ millions: "{{number}}M"
+ dates:
+ time: "h:mm a"
+ long_no_year: "MMM D h:mm a"
+ long_no_year_no_time: "MMM D"
+ full_no_year_no_time: "MMMM Do"
+ long_with_year: "MMM D, YYYY h:mm a"
+ long_with_year_no_time: "MMM D, YYYY"
+ full_with_year_no_time: "MMMM Do, YYYY"
+ long_date_with_year: "MMM D, 'YY LT"
+ long_date_without_year: "MMM D, LT"
+ long_date_with_year_without_time: "MMM D, 'YY"
+ long_date_without_year_with_linebreak: "MMM D
LT"
+ long_date_with_year_with_linebreak: "MMM D, 'YY
LT"
+ tiny:
+ half_a_minute: "< 1m"
+ less_than_x_seconds:
+ other: "< %{count}s"
+ x_seconds:
+ other: "%{count}s"
+ less_than_x_minutes:
+ other: "< %{count}m"
+ x_minutes:
+ other: "%{count}m"
+ about_x_hours:
+ other: "%{count}h"
+ x_days:
+ other: "%{count}d"
+ about_x_years:
+ other: "%{count}y"
+ over_x_years:
+ other: "> %{count}y"
+ almost_x_years:
+ other: "%{count}y"
+ date_month: "MMM D"
+ date_year: "MMM 'YY"
+ medium:
+ x_minutes:
+ other: "%{count} phút"
+ x_hours:
+ other: "%{count} giờ"
+ x_days:
+ other: "%{count} ngày"
+ date_year: "MMM D, 'YY"
+ medium_with_ago:
+ x_minutes:
+ other: " %{count} phút trước"
+ x_hours:
+ other: "%{count} giờ trước"
+ x_days:
+ other: "%{count} ngày trước"
+ later:
+ x_days:
+ other: "còn %{count} ngày"
+ x_months:
+ other: "còn %{count} tháng"
+ x_years:
+ other: "còn %{count} năm"
+ previous_month: 'Tháng Trước'
+ next_month: 'Tháng Sau'
+ share:
+ topic: 'chia sẽ chủ đề này'
+ post: 'đăng #%{Bài đăng số}'
+ close: 'đóng lại'
+ twitter: 'chia sẽ lên Twitter'
+ facebook: 'chia sẽ lên Facebook'
+ google+: 'chia sẽ lên Google+'
+ email: 'Gửi liên kết này qua thư điện tử'
+ action_codes:
+ split_topic: "chìa chủ đề này lúc %{when}"
+ invited_user: "đã mời bởi %{who} %{when}"
+ removed_user: "loại bỏ bởi %{who} %{when}"
+ autoclosed:
+ enabled: 'đóng lúc %{when}'
+ disabled: 'mở lúc %{when}'
+ closed:
+ enabled: 'đóng lúc %{when}'
+ disabled: 'mở lúc %{when}'
+ archived:
+ enabled: 'lưu trữ %{when}'
+ disabled: 'bỏ lưu trữ %{when}'
+ pinned:
+ enabled: 'gắn lúc %{when}'
+ disabled: 'bỏ gim %{when}'
+ pinned_globally:
+ enabled: 'đã gắn toàn trang %{when}'
+ disabled: 'đã bỏ gắn %{when}'
+ visible:
+ enabled: 'đã lưu %{when}'
+ disabled: 'bỏ lưu %{when}'
+ topic_admin_menu: "quản lí chủ đề."
+ emails_are_disabled: "Ban quản trị đã chặn mọi email đang gửi. Sẽ không có bắt kỳ thông báo nào về email được gửi đi."
+ s3:
+ regions:
+ us_east_1: "US East (N. Virginia)"
+ us_west_1: "US West (N. California)"
+ us_west_2: "US West (Oregon)"
+ us_gov_west_1: "AWS GovCloud (US)"
+ eu_west_1: "EU (Ireland)"
+ eu_central_1: "EU (Frankfurt)"
+ ap_southeast_1: "Asia Pacific (Singapore)"
+ ap_southeast_2: "Asia Pacific (Sydney)"
+ ap_northeast_1: "Asia Pacific (Tokyo)"
+ ap_northeast_2: "Asia Pacific (Seoul)"
+ sa_east_1: "South America (Sao Paulo)"
+ edit: 'thay đổi tiêu đề và chuyên mục của chủ đề'
+ not_implemented: "Tính năng này chưa được hoàn thiện hết, xin lỗi!"
+ no_value: "Không"
+ yes_value: "Có"
+ generic_error: "Rất tiếc, đã có lỗi xảy ra."
+ generic_error_with_reason: "Đã xảy ra lỗi: %{error}"
+ sign_up: "Đăng ký"
+ log_in: "Đăng nhập"
+ age: "Độ tuổi"
+ joined: "Đã tham gia"
+ admin_title: "Quản trị"
+ flags_title: "Báo cáo"
+ show_more: "hiện thêm"
+ show_help: "lựa chọn"
+ links: "Liên kết"
+ links_lowercase:
+ other: "liên kết"
+ faq: "FAQ"
+ guidelines: "Hướng dẫn"
+ privacy_policy: "Chính sách riêng tư"
+ privacy: "Sự riêng tư"
+ terms_of_service: "Điều khoản dịch vụ"
+ mobile_view: "Xem ở chế độ di động"
+ desktop_view: "Xem ở chế độ máy tính"
+ you: "Bạn"
+ or: "hoặc"
+ now: "ngay lúc này"
+ read_more: 'đọc thêm'
+ more: "Nhiều hơn"
+ less: "Ít hơn"
+ never: "không bao giờ"
+ daily: "hàng ngày"
+ weekly: "hàng tuần"
+ every_two_weeks: "mỗi hai tuần"
+ every_three_days: "ba ngày một"
+ max_of_count: "tối đa của {{count}}"
+ alternation: "hoặc"
+ character_count:
+ other: "{{count}} ký tự"
+ suggested_topics:
+ title: "Chủ đề tương tự"
+ pm_title: "Tin nhắn gợi ý"
+ about:
+ simple_title: "Giới thiệu"
+ title: "Giới thiệu về %{title}"
+ stats: "Thống kê của trang"
+ our_admins: "Các quản trị viên"
+ our_moderators: "Các điều hành viên"
+ stat:
+ all_time: "Từ trước tới nay"
+ last_7_days: "7 ngày qua"
+ last_30_days: "30 ngày vừa qua"
+ like_count: "Lượt thích"
+ topic_count: "Các chủ đề"
+ post_count: "Các bài viết"
+ user_count: "Thành viên mới"
+ active_user_count: "Thành viên tích cực"
+ contact: "Contact Us"
+ contact_info: "Trong trường hợp có bất kỳ sự cố nào ảnh hưởng tới trang này, xin vui lòng liên hệ với chúng tôi theo địa chỉ %{contact_info}."
+ bookmarked:
+ title: "Bookmark"
+ clear_bookmarks: "Clear Bookmarks"
+ help:
+ bookmark: "Chọn bài viết đầu tiên của chủ đề cho vào bookmark"
+ unbookmark: "Chọn để xoá toàn bộ bookmark trong chủ đề này"
+ bookmarks:
+ not_logged_in: "rất tiếc, bạn phải đăng nhập để có thể đánh dấu bài viết"
+ created: "bạn đã đánh dấu bài viết này"
+ not_bookmarked: "bạn đã đọc bài viết này; nhấp chuột để đánh dấu"
+ last_read: "đây là bài viết cuối cùng bạn đã đọc; nhấp chuột để đánh dấu"
+ remove: "Xóa đánh dấu"
+ confirm_clear: "Bạn có chắc muốn xóa tất cả đánh dấu ở topic này?"
+ topic_count_latest:
+ other: "{{count}} chủ đề mới hoặc đã cập nhật."
+ topic_count_unread:
+ other: "{{count}} chủ đề chưa đọc."
+ topic_count_new:
+ other: "{{count}} chủ đề mới."
+ click_to_show: "Nhấp chuột để hiển thị."
+ preview: "xem trước"
+ cancel: "hủy"
+ save: "Lưu thay đổi"
+ saving: "Đang lưu ..."
+ saved: "Đã lưu!"
+ upload: "Tải lên"
+ uploading: "Đang tải lên..."
+ uploading_filename: "Đang tải lên {{filename}}..."
+ uploaded: "Đã tải lên!"
+ enable: "Kích hoạt"
+ disable: "Vô hiệu hóa"
+ undo: "Hoàn tác"
+ revert: "Phục hồi"
+ failed: "Thất bại"
+ switch_to_anon: "Chế độ Ẩn danh"
+ switch_from_anon: "Thoát ẩn danh"
+ banner:
+ close: "Xóa biểu ngữ này."
+ edit: "Sửa banner này >>"
+ choose_topic:
+ none_found: "Không tìm thấy chủ đề nào"
+ title:
+ search: "Tìm kiếm chủ đề dựa vào tên, url hoặc id:"
+ placeholder: "viết tiêu đề của chủ đề thảo luận ở đây"
+ queue:
+ topic: "Chủ đề"
+ approve: 'Phê duyệt'
+ reject: 'Từ chối'
+ delete_user: 'Xóa tài khoản'
+ title: "Cần phê duyệt"
+ none: "Không có bài viết nào để xem trước"
+ edit: "Sửa"
+ cancel: "Hủy"
+ view_pending: "xem bài viết đang chờ xử lý"
+ has_pending_posts:
+ other: "Chủ đề này có {{count}} bài viết cần phê chuẩn"
+ confirm: "Lưu thay đổi"
+ approval:
+ title: "Bài viết cần phê duyệt"
+ description: "Chúng tôi đã nhận được bài viết mới của bạn, nhưng nó cần phải được phê duyệt bởi admin trước khi được hiện. Xin hãy kiên nhẫn."
+ pending_posts:
+ other: "Bạn có {{count}} bài viết đang chờ xử lý."
+ ok: "OK"
+ user_action:
+ user_posted_topic: "{{user}} đăng chủ đề"
+ you_posted_topic: "Bạn đã đăng chủ đề"
+ user_replied_to_post: "{{user}} đã trả lời tới {{post_number}}"
+ you_replied_to_post: "Bạn đã trả lời tới {{post_number}}"
+ user_replied_to_topic: "{{user}} đã trả lời chủ đề"
+ you_replied_to_topic: "Bạn đã trả lời tới chủ đề"
+ user_mentioned_user: "{{user}} đã nhắc đến {{another_user}}"
+ user_mentioned_you: "{{user}} đã nhắc tới bạn"
+ you_mentioned_user: "Bạn đã đề cập {{another_user}}"
+ posted_by_user: "Được đăng bởi {{user}}"
+ posted_by_you: "Được đăng bởi bạn"
+ sent_by_user: "Đã gửi bởi {{user}}"
+ sent_by_you: "Đã gửi bởi bạn"
+ directory:
+ filter_name: "lọc theo tên đăng nhập"
+ title: "Thành viên"
+ likes_given: "Đưa ra"
+ likes_received: "Đã nhận"
+ topics_entered: "Được nhập"
+ topics_entered_long: "Chủ đề được nhập"
+ time_read: "Thời gian đọc"
+ topic_count: "Chủ đề"
+ topic_count_long: "Chủ đề đã được tạo"
+ post_count: "Trả lời"
+ post_count_long: "Trả lời đã được đăng"
+ no_results: "Không tìm thấy kết quả."
+ days_visited: "Ghé thăm"
+ days_visited_long: "Ngày đã ghé thăm"
+ posts_read: "Đọc"
+ posts_read_long: "Đọc bài viết"
+ total_rows:
+ other: "%{count} người dùng"
+ groups:
+ empty:
+ posts: "Không có chủ đề của các thành viên trong nhóm"
+ members: "Không có thành viên nào trong nhóm"
+ mentions: "Không có thành viên nào trong nhóm"
+ messages: "Không có tin nhắn nào trong nhóm"
+ topics: "Không có chủ đề của các thành viên trong nhóm"
+ add: "Thêm"
+ selector_placeholder: "Thêm thành viên"
+ owner: "chủ"
+ visible: "Mọi thành viên có thể nhìn thấy nhóm"
+ title:
+ other: "các nhóm"
+ members: "Các thành viên"
+ posts: "Các bài viết"
+ alias_levels:
+ title: "Ai có thể nhắn tin và @mention trong nhóm này?"
+ nobody: "Không ai cả"
+ only_admins: "Chỉ các quản trị viên"
+ mods_and_admins: "Chỉ có người điều hành và ban quản trị"
+ members_mods_and_admins: "Chỉ có thành viên trong nhóm, ban điều hành, và ban quản trị"
+ everyone: "Mọi người"
+ trust_levels:
+ title: "Cấp độ tin tưởng tự động tăng cho thành viên khi họ thêm:"
+ none: "Không có gì"
+ notifications:
+ watching:
+ title: "Đang xem"
+ description: "Bạn sẽ được thông báo khi có bài viết mới trong mỗi tin nhắn, và số lượng trả lời mới sẽ được hiển thị"
+ tracking:
+ title: "Đang theo dõi"
+ description: "Bạn sẽ được thông báo nếu ai đó đề cập đến @tên bạn hoặc trả lời bạn, và số lượng trả lời mới sẽ được hiển thị"
+ regular:
+ title: "Bình thường"
+ description: "Bạn sẽ được thông báo nếu ai đó đề cập đến @tên bạn hoặc trả lời bạn"
+ muted:
+ title: "Im lặng"
+ description: "Bạn sẽ không bao giờ được thông báo về bất cứ chủ đề mới nào trong nhóm này"
+ user_action_groups:
+ '1': "Lần thích"
+ '2': "Lần được thích"
+ '3': "Chỉ mục"
+ '4': "Các chủ đề"
+ '5': "Trả lời"
+ '6': "Phản hồi"
+ '7': "Được nhắc đến"
+ '9': "Lời trích dẫn"
+ '11': "Biên tập"
+ '12': "Bài đã gửi"
+ '13': "Hộp thư"
+ '14': "Đang chờ xử lý"
+ categories:
+ all: "tất cả chuyên mục"
+ all_subcategories: "Tất cả"
+ no_subcategory: "không có gì"
+ category: "Chuyên mục"
+ category_list: "Hiễn thị danh sách chuyên mục"
+ reorder:
+ title: "Sắp xếp lại danh mục"
+ title_long: "Tổ chức lại danh sách danh mục"
+ fix_order: "Vị trí cố định"
+ fix_order_tooltip: "Không phải tất cả danh mục có vị trí duy nhất, điều này có thể dẫn đến kết quả không mong muốn."
+ save: "Lưu thứ tự"
+ apply_all: "Áp dụng"
+ position: "Vị trí"
+ posts: "Bài viết"
+ topics: "Chủ đề"
+ latest: "Mới nhất"
+ latest_by: "mới nhất bởi"
+ toggle_ordering: "chuyển lệnh kiểm soát"
+ subcategories: "Phân loại phụ"
+ topic_stats: "Số lượng chủ đề mới"
+ topic_stat_sentence:
+ other: "%{count} số lượng chủ đề mới tỏng quá khứ %{unit}."
+ post_stats: "Số lượng bài viết mới"
+ post_stat_sentence:
+ other: "%{count} số lượng bài viết mới trong quá khứ %{unit}."
+ ip_lookup:
+ title: Tìm kiếm địa chỉ IP
+ hostname: Hostname
+ location: Vị trí
+ location_not_found: (không biết)
+ organisation: Công ty
+ phone: Điện thoại
+ other_accounts: "Tài khoản khác với địa chỉ IP này"
+ delete_other_accounts: "Xoá %{count}"
+ username: "tên đăng nhập"
+ trust_level: "TL"
+ read_time: "thời gian đọc"
+ topics_entered: "chủ để đã xem"
+ post_count: "# bài viết"
+ confirm_delete_other_accounts: "Bạn có muốn xóa những tài khoản này không?"
+ user_fields:
+ none: "(chọn một tùy chọn)"
+ user:
+ said: "{{username}}:"
+ profile: "Tiểu sử"
+ mute: "Im lặng"
+ edit: "Tùy chỉnh"
+ download_archive: "Tải bài viết về"
+ new_private_message: "Tin nhắn mới"
+ private_message: "Tin nhắn"
+ private_messages: "Các tin nhắn"
+ activity_stream: "Hoạt động"
+ preferences: "Tùy chỉnh"
+ expand_profile: "Mở"
+ bookmarks: "Theo dõi"
+ bio: "Về tôi"
+ invited_by: "Được mời bởi"
+ trust_level: "Độ tin tưởng"
+ notifications: "Thông báo"
+ statistics: "Thống kê"
+ desktop_notifications:
+ label: "Desktop Notifications"
+ not_supported: "Xin lỗi. Trình duyệt của bạn không hỗ trợ Notification."
+ perm_default: "Mở thông báo"
+ perm_denied_btn: "Không có quyền"
+ perm_denied_expl: "Bạn đã từ chối nhận thông báo, để nhận lại bạn cần thiết lập trình duyệt."
+ disable: "Khóa Notification"
+ enable: "Cho phép Notification"
+ each_browser_note: "Lưu ý: Bạn phải thay đổi trong cấu hình mỗi trình duyệt bạn sử dụng."
+ dismiss_notifications: "Đánh dấu đã đọc cho tất cả"
+ dismiss_notifications_tooltip: "Đánh dấu đã đọc cho tất cả các thông báo chưa đọc"
+ disable_jump_reply: "Đừng tới bài viết của tôi sau khi tôi trả lời"
+ dynamic_favicon: "Hiện số chủ đề mới / cập nhật vào biểu tượng trình duyệt"
+ edit_history_public: "Để thành viên khác xem những sửa chữa bài viết của bạn"
+ external_links_in_new_tab: "Mở tất cả liên kết bên ngoài trong thẻ mới"
+ enable_quoting: "Bật chế độ làm nổi bật chữ trong đoạn trích dẫn trả lời"
+ change: "thay đổi"
+ moderator: "{{user}} trong ban quản trị"
+ admin: "{{user}} là người điều hành"
+ moderator_tooltip: "Thành viên này là MOD"
+ admin_tooltip: "Thành viên này là admin"
+ blocked_tooltip: "Tài khoản này bị khóa"
+ suspended_notice: "Thành viên này bị đình chỉ cho đến ngày {{date}}. "
+ suspended_reason: "Lý do: "
+ github_profile: "Github"
+ mailing_list_mode: "Gửi email cho tôi mỗi bài viết mới (trừ khi tôi tắt chủ đề hoặc chuyên mục)"
+ watched_categories: "Xem"
+ watched_categories_instructions: "Bạn sẽ tự động xem tất cả các chủ đề mới trong các chuyên mục này. Bạn sẽ được thông báo về tất các các bài viết mới, và một số các bài viết mới cũng sẽ xuất hiện ở chủ đề kế tiếp."
+ tracked_categories: "Theo dõi"
+ tracked_categories_instructions: "Bạn sẽ tự động theo dõi tất cả các chủ đề trong các chuyên mục này. Một số bài viết mới sẽ xuất hiện ở chủ đề kế tiếp."
+ muted_categories: "Im lặng"
+ muted_categories_instructions: "Bạn sẽ không bao giờ được thông báo về bất cứ điều gì về các chủ đề mới trong các chuyên mục này, và chúng sẽ không hiển thị mới nhất"
+ delete_account: "Xoá Tài khoản của tôi"
+ delete_account_confirm: "Bạn có chắc chắn muốn xóa vĩnh viễn tài khoản của bạn? Hành động này không thể được hoàn tác!"
+ deleted_yourself: "Tài khoản của bạn đã được xóa thành công."
+ delete_yourself_not_allowed: "Bạn không thể xóa tài khoản của bạn ngay bây giờ. Liên lạc với admin để làm xóa tài khoản cho bạn."
+ unread_message_count: "Tin nhắn"
+ admin_delete: "Xoá"
+ users: "Thành viên"
+ muted_users: "Im lặng"
+ muted_users_instructions: "Ngăn chặn tất cả các thông báo từ những thành viên."
+ muted_topics_link: "Hiển thị chủ đề Im Lặng"
+ staff_counters:
+ flags_given: "cờ hữu ích"
+ flagged_posts: "bài viết gắn cờ"
+ deleted_posts: "bài viết bị xoá"
+ suspensions: "đình chỉ"
+ warnings_received: "cảnh báo"
+ messages:
+ all: "Tất cả"
+ inbox: "Hộp thư"
+ sent: "Đã gửi"
+ archive: "Lưu Trữ"
+ groups: "Nhóm của tôi"
+ bulk_select: "Chọn tin nhắn"
+ move_to_inbox: "Chuyển sang hộp thư"
+ move_to_archive: "Lưu trữ"
+ failed_to_move: "Lỗi khi chuyển các tin nhắn đã chọn (có thể do lỗi mạng)"
+ select_all: "Chọn tất cả"
+ change_password:
+ success: "(email đã gửi)"
+ in_progress: "(đang gửi email)"
+ error: "(lỗi)"
+ action: "Gửi lại mật khẩu tới email"
+ set_password: "Nhập Mật khẩu"
+ change_about:
+ title: "Thay đổi thông tin về tôi"
+ error: "Có lỗi khi thay đổi giá trị này."
+ change_username:
+ title: "Thay Username"
+ confirm: "Nếu bạn thay đổi tên đăng nhập, tất cả những câu nói của bạn ở bài viết trước và @tên bạn sẽ được đề cập sẽ bị phá vỡ. Bạn có chắc bạn muốn tiếp tục không?"
+ taken: "Xin lỗi, đã có username này."
+ error: "Có lỗi trong khi thay đổi username của bạn."
+ invalid: "Username này không thích hợp. Nó chỉ chứa các ký tự là chữ cái và chữ số. "
+ change_email:
+ title: "Thay đổi Email"
+ taken: "Xin lỗi, email này không dùng được. "
+ error: "Có lỗi xảy ra khi thay đổi email của bạn. Có thể địa chỉ email đã được sử dụng ?"
+ success: "Chúng tôi đã gửi email tới địa chỉ đó. Vui lòng làm theo chỉ dẫn để xác nhận lại."
+ change_avatar:
+ title: "Đổi ảnh đại diện"
+ gravatar: "dựa trên Gravatar"
+ gravatar_title: "Đổi ảnh đại diện của bạn trên website Gravatar"
+ refresh_gravatar_title: "Làm mới Gravatar của bạn"
+ letter_based: "Hệ thống xác định ảnh đại diện"
+ uploaded_avatar: "Chính sửa hình ảnh"
+ uploaded_avatar_empty: "Thêm một ảnh chỉnh sửa"
+ upload_title: "Upload hình ảnh của bạn"
+ upload_picture: "Úp hình"
+ image_is_not_a_square: "Cảnh báo: chúng tôi đã cắt hình ảnh của bạn; chiều rộng và chiều cao không bằng nhau."
+ cache_notice: "Hình hồ sở của bạn đã thay đổi thành công nhưng có thể thỉnh thoảng xuất hiện ảnh cũ bởi cache của trình duyệt."
+ change_profile_background:
+ title: "Hình nền trang hồ sơ"
+ instructions: "Hình nền trang hồ sơ sẽ ở giữa và có chiều rộng mặc định là 850px."
+ change_card_background:
+ title: "Hình nền Card"
+ instructions: "Hình nền sẽ ở giữa và có chiều rộng mặc định là 590px."
+ email:
+ title: "Email"
+ instructions: "Không bao giờ công khai"
+ ok: "Chúng tôi sẽ gửi thư điện tử xác nhận đến cho bạn"
+ invalid: "Vùi lòng nhập một thư điện tử hợp lệ"
+ authenticated: "Thư điện tử của bạn đã được xác nhận bởi {{provider}}"
+ frequency_immediately: "Chúng tôi sẽ gửi email cho bạn ngay lập tức nếu bạn đã chưa đọc những điều chúng tôi đã gửi cho bạn qua email."
+ frequency:
+ other: "Chúng tôi sẽ chỉ gửi email cho bạn nếu chúng tôi đã không nhìn thấy bạn trong {{count}} phút cuối."
+ name:
+ title: "Tên"
+ instructions: "Tên đầy đủ của bạn (tùy chọn)"
+ instructions_required: "Tên đầy đủ của bạn"
+ too_short: "Tên của bạn quá ngắn"
+ ok: "Tên của bạn có vẻ ổn"
+ username:
+ title: "Username"
+ instructions: "Duy nhất, không khoảng trắng"
+ short_instructions: "Mọi người có thể nhắc tới bạn bằng @{{username}}"
+ available: "Tên đăng nhập của bạn có sẵn"
+ global_match: "Email đúng với username đã được đăng ký"
+ global_mismatch: "Đã đăng ký rồi. Thử {{suggestion}}?"
+ not_available: "Chưa có sẵn. Thử {{suggestion}}?"
+ too_short: "Tên đăng nhập của bạn quá ngắn"
+ too_long: "Tên đăng nhập của bạn quá dài"
+ checking: "Đang kiểm tra username sẵn sàng để sử dụng...."
+ enter_email: 'Đã tìm được tên đăng nhập. Điền thư điện tử phù hợp.'
+ prefilled: "Thư điện tử trủng với tên đăng nhập này."
+ locale:
+ title: "Ngôn ngữ hiển thị"
+ instructions: "Ngôn ngữ hiển thị sẽ thay đổi khi bạn tải lại trang"
+ default: "(mặc định)"
+ password_confirmation:
+ title: "Nhập lại Password"
+ last_posted: "Bài viết cuối cùng"
+ last_emailed: "Đã email lần cuối"
+ last_seen: "được thấy"
+ created: "Đã tham gia"
+ log_out: "Log Out"
+ location: "Vị trí"
+ card_badge:
+ title: "Huy hiệu của thẻ thành viên"
+ website: "Web Site"
+ email_settings: "Email"
+ email_digests:
+ title: "Khi tôi không truy cập, gửi email gợi ý những cái mới cho tôi:"
+ daily: "hàng ngày"
+ every_three_days: "ba ngày một"
+ weekly: "hàng tuần"
+ every_two_weeks: "hai tuần một"
+ email_direct: "Gửi cho tôi một email khi có người trích dẫn, trả lời cho bài viết của tôi, đề cập đến @username của tôi, hoặc mời tôi đến một chủ đề"
+ email_private_messages: "Gửi cho tôi email khi có ai đó nhắn tin cho tôi"
+ email_always: "Gửi email thông báo cho tôi mỗi khi tôi kích hoạt trên website này"
+ other_settings: "Khác"
+ categories_settings: "Chuyên mục"
+ new_topic_duration:
+ label: "Để ý tới chủ đề mới khi"
+ not_viewed: "Tôi chưa từng xem họ"
+ last_here: "tạo ra kể từ lần cuối tôi ở đây"
+ after_1_day: "được tạo ngày hôm qua"
+ after_2_days: "được tạo 2 ngày trước"
+ after_1_week: "được tạo tuần trước"
+ after_2_weeks: "được tạo 2 tuần trước"
+ auto_track_topics: "Tự động theo dõi các chủ đề tôi tạo"
+ auto_track_options:
+ never: "không bao giờ"
+ immediately: "ngay lập tức"
+ after_30_seconds: "sau 30 giây"
+ after_1_minute: "sau 1 phút"
+ after_2_minutes: "sau 2 phút"
+ after_3_minutes: "sau 3 phút"
+ after_4_minutes: "sau 4 phút"
+ after_5_minutes: "sau 5 phút"
+ after_10_minutes: "sau 10 phút"
+ invited:
+ search: "gõ để tìm kiếm thư mời "
+ title: "Lời mời"
+ user: "User được mời"
+ sent: "Đã gửi"
+ none: "Không có thư mời nào đang chờ để hiển thị"
+ truncated:
+ other: "Hiện {{count}} thư mời đầu tiên"
+ redeemed: "Lời mời bù lại"
+ redeemed_tab: "Làm lại"
+ redeemed_tab_with_count: "Làm lại ({{count}})"
+ redeemed_at: "Nhận giải"
+ pending: "Lời mời tạm hoãn"
+ pending_tab: "Đang treo"
+ pending_tab_with_count: "Đang xử lý ({{count}})"
+ topics_entered: "Bài viết được xem "
+ posts_read_count: "Đọc bài viết"
+ expired: "Thư mời này đã hết hạn."
+ rescind: "Xoá"
+ rescinded: "Lời mời bị xóa"
+ reinvite: "Mời lại"
+ reinvited: "Gửi lại lời mời"
+ time_read: "Đọc thời gian"
+ days_visited: "Số ngày đã thăm"
+ account_age_days: "Thời gian của tài khoản theo ngày"
+ create: "Gửi một lời mời"
+ generate_link: "Chép liên kết Mời"
+ generated_link_message: '
Liên kết thư mời được tạo thành công!
Liên kết thư mời chỉ hợp lệ cho email này: %{invitedEmail}
' + bulk_invite: + none: "Bạn đã mời ai ở đây chưa. Bạn có thể mời một hoặc một nhóm bằng tải lên hàng loạt file mời." + text: "Mời hàng loạt bằng file" + uploading: "Uploading..." + success: "Tải lên thành công, bạn sẽ được thông báo qua tin nhắn khi quá trình hoàn tất." + error: "Có lỗi xảy ra khi upload '{{filename}}': {{message}}" + password: + title: "Mật khẩu" + too_short: "Mật khẩu của bạn quá ngắn." + common: "Mật khẩu quá đơn giản, rất dễ bị đoán ra" + same_as_username: "Mật khẩu của bạn trùng với tên đăng nhập." + same_as_email: "Mật khẩu của bạn trùng với email của bạn." + ok: "Mật khẩu của bạn có vẻ ổn." + instructions: "Ít nhất %{count} ký tự" + summary: + title: "Tóm tắt" + stats: "Thống kê" + top_replies: "Top trả lời" + more_replies: "Thêm trả lời" + top_topics: "Top chủ đề" + more_topics: "Thêm chủ đề" + top_badges: "Top huy hiệu" + more_badges: "Thêm huy hiệu" + associated_accounts: "Đăng nhập" + ip_address: + title: "Địa chỉ IP cuối cùng" + registration_ip_address: + title: "Địa chỉ IP đăng ký" + avatar: + title: "Ảnh đại diện" + header_title: "hồ sơ cá nhân, tin nhắn, đánh dấu và sở thích" + title: + title: "Tiêu đề" + filters: + all: "All" + stream: + posted_by: "Đăng bởi" + sent_by: "Gửi bởi" + private_message: "tin nhắn" + the_topic: "chủ đề" + loading: "Đang tải..." + errors: + prev_page: "trong khi cố gắng để tải" + reasons: + network: "Mạng Internet bị lỗi" + server: "Máy chủ đang có vấn đề" + forbidden: "Bạn không thể xem được" + unknown: "Lỗi" + not_found: "Không Tìm Thấy Trang" + desc: + network: "Hãy kiểm tra kết nối của bạn" + network_fixed: "Hình như nó trở lại." + server: "Mã lỗi : {{status}}" + forbidden: "Bạn không được cho phép để xem mục này" + not_found: "Oops, ứng dụng đang tải đường dẫn không tồn tại" + unknown: "Có một lỗi gì đó đang xảy ra" + buttons: + back: "Quay trở lại" + again: "Thử lại" + fixed: "Load lại trang" + close: "Đóng lại" + assets_changed_confirm: "Website đã được cập nhật bản mới. Bạn có thể làm mới lại trang để có thể sử dụng bản mới được cập nhật" + logout: "Bạn đã đăng xuất" + refresh: "Tải lại" + read_only_mode: + enabled: "Website đang ở chế độ chỉ đọc, bạn có thể duyệt xem nhưng không thể trả lời, likes, hay thực hiện các hành động khác." + login_disabled: "Chức năng Đăng nhập đã bị tắt khi website trong trạng thái chỉ đọc" + too_few_topics_and_posts_notice: "Hãy bắt đầu thảo luận! Hiện có %{currentTopics} / %{requiredTopics} chủ đề và %{currentPosts} / %{requiredPosts} bài viết. Khách ghé thăm cần một số chủ đề để đọc và trả lời." + too_few_topics_notice: "Hãy bắt đầu thảo luận! Hiện có %{currentTopics} / %{requiredTopics} chủ đề. Khách ghé thăm cần một số chủ đề để đọc và trả lời." + too_few_posts_notice: "Hãy bắt đầu thảo luận! Hiện có %{currentPosts} / %{requiredPosts} bài viết. Khách ghé thăm cần một số chủ đề để đọc và trả lời." + learn_more: "tìm hiểu thêm..." + year: 'năm' + year_desc: 'chủ đề được tạo ra trong 365 ngày qua' + month: 'tháng' + month_desc: 'chủ đề được tạo ra trong 30 ngày qua' + week: 'tuần' + week_desc: 'chủ đề được tạo ra trong 7 ngày qua' + day: 'ngày' + first_post: Bài viết đầu tiên + mute: Im lặng + unmute: Bỏ im lặng + last_post: Bài viết cuối cùng + last_reply_lowercase: trả lời cuối cùng + replies_lowercase: + other: trả lời + signup_cta: + sign_up: "Đăng ký" + hide_session: "Nhắc vào ngày mai" + hide_forever: "không, cảm ơn" + hidden_for_session: "OK, Tôi sẽ hỏi bạn vào ngày mai. Bạn có thể luôn luôn sử dụng chức năng đăng nhập để tạo tài khoản." + intro: "Xin chào! :heart_eyes: Có vẻ như bạn đang thích thú để thảo luận, nhưng bạn chưa đăng nhập." + value_prop: "Khi bạn tạo tài khoản, website nhớ chính xác những gì bạn đã đọc, vì vậy bạn sẽ luôn trở lại đúng nơi đã rời đi. Bạn cũng có thể nhận thông báo ở đây hoặc qua email mỗi khi có bài viết mới. Bạn cũng có thể like bài viết để chia sẻ cảm xúc của mình. :heartbeat:" + summary: + enabled_description: "Bạn đang xem một bản tóm tắt của chủ đề này: các bài viết thú vị nhất được xác định bởi cộng đồng." + enable: 'Tóm tắt lại chủ đề' + disable: 'HIển thị tất cả các bài viết' + deleted_filter: + enabled_description: "Chủ để này có chứa các bài viết bị xoá, chúng đã bị ẩn đi" + disabled_description: "Xoá các bài viết trong các chủ để được hiển thị" + enable: "Ẩn các bài viết bị xoá" + disable: "Xem các bài viết bị xoá" + private_message_info: + title: "Tin nhắn" + invite: "Mời người khác..." + remove_allowed_user: "Bạn thực sự muốn xóa {{name}} từ tin nhắn này?" + email: 'Email' + username: 'Username' + last_seen: 'Đã xem' + created: 'Tạo bởi' + created_lowercase: 'ngày tạo' + trust_level: 'Độ tin tưởng' + search_hint: 'username, email or IP address' + create_account: + title: "Tạo tài khoản mới" + failed: "Có gì đó không đúng, có thể email này đã được đăng ký, thử liên kết quên mật khẩu" + forgot_password: + title: "Đặt lại mật khẩu" + action: "Tôi đã quên mật khẩu của tôi" + invite: "Điền vào username của bạn hoặc địa chỉ email và chúng tôi sẽ gửi bạn email để khởi tạo lại mật khẩu" + reset: "Tạo lại mật khẩu" + complete_username: "Nếu một tài khoản phù hợp với tên thành viên % {username} b>, bạn sẽ nhận được một email với hướng dẫn về cách đặt lại mật khẩu của bạn trong thời gian ngắn." + complete_email: "Nếu một trận đấu tài khoản % {email} b>, bạn sẽ nhận được một email với hướng dẫn về cách đặt lại mật khẩu của bạn trong thời gian ngắn." + complete_username_found: "Chúng tôi tìm thấy một tài khoản phù hợp với tên thành viên % {username} b>, bạn sẽ nhận được một email với hướng dẫn về cách đặt lại mật khẩu của bạn trong thời gian ngắn." + complete_email_found: "Chúng tôi tìm thấy một tài khoản phù hợp với % {email} b>, bạn sẽ nhận được một email với hướng dẫn về cách đặt lại mật khẩu của bạn trong thời gian ngắn." + complete_username_not_found: "Không có tài khoản phù hợp với tên thành viên % {username} b>" + complete_email_not_found: "Không tìm thấy tài khoản nào tương ứng với %{email}" + login: + title: "Đăng nhập" + username: "Thành viên" + password: "Mật khẩu" + email_placeholder: "Email hoặc tên đăng nhập " + caps_lock_warning: "Phím Caps Lock đang được bật" + error: "Không xác định được lỗi" + rate_limit: "Xin đợi trước khi đăng nhập lại lần nữa." + blank_username_or_password: "Bạn phải nhập email hoặc username, và mật khẩu" + reset_password: 'Khởi tạo mật khẩu' + logging_in: "Đăng nhập..." + or: "Hoặc" + authenticating: "Đang xác thực..." + awaiting_confirmation: "Tài khoản của bạn đang đợi kích hoạt, sử dụng liên kết quên mật khẩu trong trường hợp kích hoạt ở 1 email khác." + awaiting_approval: "Tài khoản của bạn chưa được chấp nhận bới thành viên. Bạn sẽ được gửi một email khi được chấp thuận " + requires_invite: "Xin lỗi, bạn phải được mời để tham gia diễn đàn" + not_activated: "Bạn không thể đăng nhập. Chúng tôi đã gửi trước email kích hoạt cho bạn tại {{sentTo}}. Vui lòng làm theo hướng dẫn trong email để kích hoạt tài khoản của bạn." + not_allowed_from_ip_address: "Bạn không thể đăng nhập từ địa chỉ IP này" + admin_not_allowed_from_ip_address: "Bạn không thể đăng nhập với quyền quản trị từ địa chỉ IP đó." + resend_activation_email: "Bấm đây để gửi lại email kích hoạt" + sent_activation_email_again: "Chúng tôi gửi email kích hoạt tới cho bạn ở {{currentEmail}}. Nó sẽ mất vài phút để đến; bạn nhớ check cả hồm thư spam nhe. " + to_continue: "Vui lòng đăng nhập" + preferences: "Bạn cần phải đăng nhập để thay đổi cài đặt tài khoản." + forgot: "Tôi không thể nhớ lại chi tiết tài khoản của tôi." + google: + title: "với Google " + message: "Chứng thực với Google (Bạn hãy chắc chắn là chặn popup không bật)" + google_oauth2: + title: "với Google" + message: "Chứng thực với Google (chắc chắn rằng cửa sổ pop up blocker không được kích hoạt)" + twitter: + title: "với Twitter" + message: "Chứng thực với Twitter(hãy chắc chắn là chăn pop up không bật)" + facebook: + title: "với Facebook" + message: "Chứng thực với Facebook(chắc chắn là chặn pop up không bật)" + yahoo: + title: "với Yahoo" + message: "Chứng thực với Yahoo (Chắc chắn chặn pop up không bật)" + github: + title: "với GitHub" + message: "Chứng thực với GitHub (chắc chắn chặn popup không bật)" + apple_international: "Apple/International" + google: "Google" + twitter: "Twitter" + emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' + composer: + emoji: "Emoji :)" + more_emoji: "thêm..." + options: "Lựa chọn" + whisper: "nói chuyện" + add_warning: "Đây là một cảnh báo chính thức" + toggle_whisper: "Chuyển chế độ Nói chuyện" + posting_not_on_topic: "Bài viết nào bạn muốn trả lời " + saving_draft_tip: "đang lưu..." + saved_draft_tip: "Đã lưu" + saved_local_draft_tip: "Đã lưu locally" + similar_topics: "Bài viết của bạn tương tự với " + drafts_offline: "Nháp offline" + group_mentioned: "Bằng cách sử dụng {{group}}, bạn có thể thông báo tới {{count}} người." + error: + title_missing: "Tiêu đề là bắt buộc" + title_too_short: "Tiêu để phải có ít nhất {{min}} ký tự" + title_too_long: "Tiêu đề có tối đa {{max}} ký tự" + post_missing: "Bài viết không được bỏ trắng" + post_length: "Bài viết phải có ít nhất {{min}} ký tự" + try_like: 'Các bạn đã thử các nút ?' + category_missing: "Bạn phải chọn một phân loại" + save_edit: "Lưu chỉnh sửa" + reply_original: "Trả lời cho bài viết gốc" + reply_here: "Trả lời đây " + reply: "Trả lời " + cancel: "Huỷ" + create_topic: "Tạo chủ đề" + create_pm: "Tin nhắn" + title: "Hoặc nhất Ctrl+Enter" + users_placeholder: "Thêm thành viên " + title_placeholder: "Tóm tắt lại thảo luận này trong một câu ngắn gọn" + edit_reason_placeholder: "Tại sao bạn sửa" + show_edit_reason: "(thêm lý do sửa)" + reply_placeholder: "Gõ ở đây. Sử dụng Markdown, BBCode, hoặc HTML để định dạng. Kéo hoặc dán ảnh." + view_new_post: "Xem bài đăng mới của bạn. " + saving: "Đang lưu" + saved: "Đã lưu" + saved_draft: "Bài nháp đang lưu. Chọn để tiếp tục." + uploading: "Đang đăng " + show_preview: 'Xem trước »' + hide_preview: '«ẩn xem trước' + quote_post_title: "Trích dẫn cả bài viết" + bold_title: "In đậm" + bold_text: "chữ in đậm" + italic_title: "Nhấn mạnh" + italic_text: "văn bản nhấn mạnh" + link_title: "Liên kết" + link_description: "Nhập mô tả liên kết ở đây" + link_dialog_title: "Chèn liên kết" + link_optional_text: "tiêu đề tùy chọn" + link_placeholder: "http://example.com \"chữ tuỳ chọn\"" + quote_title: "Trích dẫn" + quote_text: "Trích dẫn" + code_title: "Văn bản định dạng trước" + code_text: "lùi đầu dòng bằng 4 dấu cách" + upload_title: "Tải lên" + upload_description: "Nhập mô tả tải lên ở đây" + olist_title: "Danh sách kiểu số" + ulist_title: "Danh sách kiểu ký hiệu" + list_item: "Danh sách các mục" + heading_title: "Tiêu đề" + heading_text: "Tiêu đề" + hr_title: "Căn ngang" + help: "Trợ giúp soạn thảo bằng Markdown" + toggler: "ẩn hoặc hiển thị bảng điều khiển soạn thảo" + modal_ok: "OK" + modal_cancel: "Hủy" + cant_send_pm: "Xin lỗi, bạn không thể gởi tin nhắn đến %{username}." + admin_options_title: "Tùy chọn quản trị viên cho chủ đề này" + auto_close: + label: "Thời gian tự khóa chủ đề:" + error: "Vui lòng nhập một giá trị hợp lệ." + based_on_last_post: "Không đóng cho đến khi bài viết cuối cùng trong chủ đề này trở thành bài cũ" + all: + examples: 'Nhập giờ (định dạng 24h), thời gian chính xác ( vd: 17:30) hoặc thời gian kèm ngày tháng (2013-11-22 14:00).' + limited: + units: "(# của giờ)" + examples: 'Nhập số giờ ( theo định dạng 24h)' + notifications: + title: "thông báo của @name nhắc đến, trả lời bài của bạn và chủ đề, tin nhắn, vv" + none: "Không thể tải các thông báo tại thời điểm này." + more: "xem thông báo cũ hơn" + total_flagged: "tổng số bài viết gắn cờ" + mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" + quoted: "
{{username}} {{description}}
" + replied: "
{{username}} {{description}}
" + edited: "
{{username}} {{description}}
" + liked: "
{{username}} {{description}}
" + private_message: "
{{username}} {{description}}
" + invited_to_private_message: "
{{username}} {{description}}
" + invited_to_topic: "
{{username}} {{description}}
" + invitee_accepted: "
{{username}} chấp nhận lời mời của bạn
" + moved_post: "
{{username}} chuyển {{description}}
" + linked: "
{{username}} {{description}}
" + granted_badge: "
Thu được '{{description}}'
" + group_message_summary: + other: "
{{count}} tin nhắn trong {{group_name}} của bạn
"
+ alt:
+ mentioned: "Được nhắc đến bởi"
+ quoted: "Trích dẫn bởi"
+ replied: "Đã trả lời"
+ posted: "Đăng bởi"
+ edited: "Bài viết của bạn được sửa bởi"
+ liked: "Bạn đã like bài viết"
+ private_message: "Tin nhắn riêng từ"
+ invited_to_private_message: "Lời mời thảo luận riêng từ"
+ invited_to_topic: "Lời mời tham gia chủ đề từ"
+ invitee_accepted: "Lời mời được chấp nhận bởi"
+ moved_post: "Bài viết của bạn đã được di chuyển bởi"
+ linked: "Liên kết đến bài viết của bạn"
+ granted_badge: "Cấp huy hiệu"
+ group_message_summary: "Tin nhắn trong hộp thư đến"
+ popup:
+ mentioned: '{{username}} nhắc đến bạn trong "{{topic}}" - {{site_title}}'
+ group_mentioned: '{{username}} nhắc đến bạn trong "{{topic}}" - {{site_title}}'
+ quoted: '{{username}} trích lời bạn trong "{{topic}}" - {{site_title}}'
+ replied: '{{username}} trả lời cho bạn trong "{{topic}}" - {{site_title}}'
+ posted: '{{username}} gửi bài trong "{{topic}}" - {{site_title}}'
+ private_message: '{{username}} đã gửi cho bạn một tin nhắn trong "{{topic}}" - {{site_title}}'
+ linked: '{{username}} liên quan đến bài viết của bạn từ "{{topic}}" - {{site_title}}'
+ upload_selector:
+ title: "Thêm một ảnh"
+ title_with_attachments: "Thêm một ảnh hoặc tệp tin"
+ from_my_computer: "Từ thiết bị của tôi"
+ from_the_web: "Từ Web"
+ remote_tip: "đường dẫn tới hình ảnh"
+ remote_tip_with_attachments: "chọn ảnh hoặc file {{authorized_extensions}}"
+ local_tip: "chọn hình từ thiết bị của bạn"
+ local_tip_with_attachments: "chọn ảnh hoặc file {{authorized_extensions}} từ thiết bị của bạn"
+ hint: "(Bạn cũng có thể kéo & thả vào trình soạn thảo để tải chúng lên)"
+ hint_for_supported_browsers: "bạn có thể kéo và thả ảnh vào trình soan thảo này"
+ uploading: "Đang tải lên"
+ select_file: "Chọn Tài liệu"
+ image_link: "liên kết hình ảnh của bạn sẽ trỏ đến"
+ search:
+ sort_by: "Sắp xếp theo"
+ relevance: "Độ phù hợp"
+ latest_post: "Bài viết mới nhất"
+ most_viewed: "Xem nhiều nhất"
+ most_liked: "Like nhiều nhất"
+ select_all: "Chọn tất cả"
+ clear_all: "Xóa tất cả"
+ result_count:
+ other: "{{count}} kết quả cho \"{{term}}\""
+ title: "tìm kiếm chủ đề, bài viết, tài khoản hoặc các danh mục"
+ no_results: "Không tìm thấy kết quả."
+ no_more_results: "Không tìm thấy kết quả"
+ search_help: Giúp đỡ tìm kiếm
+ searching: "Đang tìm ..."
+ post_format: "#{{post_number}} bởi {{username}}"
+ context:
+ user: "Tìm bài viết của @{{username}}"
+ category: "Tìm danh mục \"{{category}}\""
+ topic: "Tìm trong chủ đề này"
+ private_messages: "Tìm tin nhắn"
+ hamburger_menu: "đi đến danh sách chủ đề hoặc danh mục khác"
+ new_item: "mới"
+ go_back: 'quay trở lại'
+ not_logged_in_user: 'Trang cá nhân với tóm tắt các hoạt động và cấu hình'
+ current_user: 'đi đến trang cá nhân của bạn'
+ topics:
+ bulk:
+ unlist_topics: "Chủ đề không công khai"
+ reset_read: "Đặt lại lượt đọc"
+ delete: "Xóa chủ đề"
+ dismiss: "Bỏ qua"
+ dismiss_read: "Bỏ qua tất cả thư chưa đọc"
+ dismiss_button: "Bỏ qua..."
+ dismiss_tooltip: "Bỏ qua chỉ bài viết mới hoặc ngừng theo dõi chủ đề"
+ also_dismiss_topics: "Ngừng theo dõi các chủ đề này để không hiển thị lại là chủ đề chưa đọc"
+ dismiss_new: "Bỏ "
+ toggle: "chuyển sang chọn chủ đề theo lô"
+ actions: "Hành động theo lô"
+ change_category: "Chuyển chuyên mục"
+ close_topics: "Đóng các chủ đề"
+ archive_topics: "Chủ đề Lưu trữ"
+ notification_level: "Thay đổi cấp độ thông báo"
+ choose_new_category: "Chọn chuyên mục mới cho chủ đề này:"
+ selected:
+ other: "Bạn đã chọn {{count}} chủ đề"
+ none:
+ unread: "Bạn không có chủ đề nào chưa đọc."
+ new: "Bạn không có chủ đề mới nào."
+ read: "Bạn vẫn chưa đọc bất kì chủ đề nào."
+ posted: "Bạn vẫn chưa đăng bài trong bất kì một chủ đề nào"
+ latest: "Chán quá. Chẳng có chủ đề mới nào hết trơn."
+ hot: "Không có chủ đề nào nổi bật."
+ bookmarks: "Bạn chưa chủ đề nào được đánh dấu."
+ category: "Không có chủ đề nào trong {{category}} ."
+ top: "Không có chủ đề top."
+ search: "Không có kết quả tìm kiếm."
+ bottom:
+ latest: "Không còn thêm chủ đề nào nữa."
+ hot: "Không còn của đề nổi bật nào nữa."
+ posted: "Ở đây không có thêm chủ đề nào được đăng."
+ read: "Không còn thêm chủ đề chưa đọc nào nữa."
+ new: "Không còn thêm chủ đề mới nào nữa."
+ unread: "Không còn thêm chủ đề chưa đọc nào nữa."
+ category: "Không còn thêm chủ đề nào trong {{category}} ."
+ top: "Không còn của đề top nào nữa."
+ bookmarks: "Không còn thêm chủ đề được đánh dấu nào nữa."
+ search: "Không có thêm kết quả tìm kiếm nào nữa."
+ topic:
+ unsubscribe:
+ stop_notifications: "Từ bây giờ bạn sẽ không nhận thông báo từ {{title}}"
+ change_notification_state: "Tình trạn thông báo của bạn là"
+ filter_to: "{{post_count}} bài đăng trong chủ đề"
+ create: 'Chủ đề Mới'
+ create_long: 'Tạo một Chủ đề mới'
+ private_message: 'Bắt đầu một thông điệp'
+ archive_message:
+ help: 'Chuyển tin nhắn sang lưu trữ'
+ title: 'Lưu trữ'
+ move_to_inbox:
+ title: 'Chuyển sang hộp thư'
+ help: 'Chuyển tin nhắn trở lại hộp thư'
+ list: 'Chủ đề'
+ new: 'chủ đề mới'
+ unread: 'chưa đọc'
+ new_topics:
+ other: '{{count}} chủ đề mới.'
+ unread_topics:
+ other: '{{count}} chủ đề chưa đọc.'
+ title: 'Chủ đề'
+ invalid_access:
+ title: "Chủ đề này là riêng tư"
+ description: "Xin lỗi, bạn không có quyền truy cập vào chủ đề đó!"
+ login_required: "Bạn cần phải đăng nhập để xem chủ đề đó"
+ server_error:
+ title: "Tải chủ đề thất bại"
+ description: "Xin lỗi, chúng tôi không thể tải chủ đề, có thể do kết nối có vấn đề. Xin hãy thử lại. Nếu vấn đề còn xuất hiện, hãy cho chúng tôi biết"
+ not_found:
+ title: "Không tìm thấy chủ đề"
+ description: "Xin lỗi, chúng tôi không thể tìm thấy chủ đề đó. Có lẽ nó đã bị loại bởi mod?"
+ total_unread_posts:
+ other: "Bạn có {{number}} bài đăng chưa đọc trong chủ đề này"
+ unread_posts:
+ other: "bạn có {{number}} bài đăng củ chưa đọc trong chủ đề này"
+ new_posts:
+ other: "có {{count}} bài đăng mới trong chủ đề này từ lần đọc cuối"
+ likes:
+ other: "có {{count}} thích trong chủ để này"
+ back_to_list: "Quay lại danh sách chủ đề"
+ options: "Các lựa chọn chủ đề"
+ show_links: "Hiển thị liên kết trong chủ đề này"
+ toggle_information: "chuyển đổi các chi tiết chủ để"
+ read_more_in_category: "Muốn đọc nữa? Xem qua các chủ đề khác trong {{catLink}} hoặc {{latestLink}}"
+ read_more: "Muốn đọc nữa? {{catLink}} hoặc {{latestLink}}"
+ read_more_MF: "Có { UNREAD, plural, =0 {} one { is 1 unread } other { are # unread } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false {is } other{}} 1 new topic} other { {BOTH, select, true{and } false {are } other{}} # new topics} } remaining, or {CATEGORY, select, true {browse other topics in {catLink}} false {{latestLink}} other {}}"
+ browse_all_categories: Duyệt tất cả các hạng mục
+ view_latest_topics: xem các chủ đề mới nhất
+ suggest_create_topic: Tại sao không tạo một chủ đề mới?
+ jump_reply_up: nhảy đến những trả lời trước đó
+ jump_reply_down: nhảy tới những trả lời sau đó
+ deleted: "Chủ đề này đã bị xóa"
+ auto_close_notice: "Chủ đề này sẽ tự động đóng %{timeLeft}."
+ auto_close_notice_based_on_last_post: "Chủ đề này sẽ đóng %{duration} sau trả lời cuối cùng."
+ auto_close_title: 'Tự động-Đóng các Cài đặt'
+ auto_close_save: "Lưu"
+ auto_close_remove: "Đừng Tự Động-Đóng Chủ Đề Này"
+ auto_close_immediate: "Bài viết cuối cùng trong chủ đề đã xảy ra %{hours} giờ qua, vì vậy chủ đề sẽ tự động đóng."
+ progress:
+ title: tiến trình của chủ đề
+ go_top: "trên cùng"
+ go_bottom: "dưới cùng"
+ go: "đi tới"
+ jump_bottom: "nhảy tới bài viết cuối cùng"
+ jump_bottom_with_number: "nhảy tới bài viết %{post_number}"
+ total: tổng số bài viết
+ current: bài viết hiện tại
+ position: "bài viết %{current} trong %{total}"
+ notifications:
+ reasons:
+ '3_6': 'Bạn sẽ nhận được các thông báo bởi vì bạn đang xem chuyên mục nàyotification'
+ '3_5': 'Bạn sẽ nhận được các thông báo bởi vì bạn đã bắt đầu xem chủ đề này một cách tự động'
+ '3_2': 'Bạn sẽ nhận được các thông báo bởi vì bạn đang xem chủ đề này'
+ '3_1': 'Bạn sẽ được nhận thông báo bởi bạn đã tạo chủ để này.'
+ '3': 'Bạn sẽ nhận được các thông báo bởi vì bạn đang xem chủ đề này'
+ '2_8': 'Bạn sẽ nhận được thông báo bởi vì bạn đang theo dõi chuyên mục này.'
+ '2_4': 'Bạn sẽ nhận được các thông báo bởi vì bạn đã đăng một trả lời vào chủ đề này'
+ '2_2': 'Bạn sẽ nhận được các thông báo bởi vì bạn đang theo dõi chủ đề này.'
+ '2': 'Bạn sẽ nhận được các thông báo bởi vì bạn đọc chủ đề này '
+ '1_2': 'Bạn sẽ được thông báo nếu ai đó đề cập đến @tên bạn hoặc trả lời bạn'
+ '1': 'Bạn sẽ được thông báo nếu ai đó đề cập đến @tên bạn hoặc trả lời bạn'
+ '0_7': 'Bạn đang bỏ qua tất cả các thông báo trong chuyên mục này'
+ '0_2': 'Bạn đang bỏ qua tất cả các thông báo trong chủ đề này'
+ '0': 'Bạn đang bỏ qua tất cả các thông báo trong chủ đề này'
+ watching_pm:
+ title: "Đang xem"
+ description: "Bạn sẽ được thông báo về từng trả lời mới trong tin nhắn này, và một số trả lời mới sẽ được hiển thị"
+ watching:
+ title: "Dang theo dõi"
+ description: "Bạn sẽ được thông báo về từng trả lời mới trong tin nhắn này, và một số trả lời mới sẽ được hiển thị"
+ tracking_pm:
+ title: "Đang theo dõi"
+ description: "Một số trả lời mới sẽ được hiển thị trong tin nhắn này. Bạn sẽ được thông báo nếu ai đó đề cập đến @tên của bạn hoặc trả lời bạn"
+ tracking:
+ title: "Đang theo dõi"
+ description: "Một số trả lời mới sẽ được hiển thị trong chủ đề này. Bạn sẽ được thông báo nếu ai đó đề cập đến @tên của bạn hoặc trả lời bạn"
+ regular:
+ title: "Bình thường"
+ description: "Bạn sẽ được thông báo nếu ai đó đề cập đến @tên bạn hoặc trả lời bạn"
+ regular_pm:
+ title: "Bình thường"
+ description: "Bạn sẽ được thông báo nếu ai đó đề cập đến @tên bạn hoặc trả lời bạn"
+ muted_pm:
+ title: "Im lặng"
+ description: "Bạn sẽ không bao giờ được thông báo về bất cứ điều gì về tin nhắn này. "
+ muted:
+ title: "Im lặng"
+ description: "Bạn sẽ không nhận được bất kỳ thông báo nào trong chủ đề này, và chúng sẽ không hiển thị là mới nhất."
+ actions:
+ recover: "Không-Xóa Chủ Đề Này"
+ delete: "Xóa-Chủ Đề Này"
+ open: "Mở Chủ Đề"
+ close: "Đóng Chủ Đề"
+ multi_select: "Chọn Bài Viết..."
+ auto_close: "Tự Động Đóng..."
+ pin: "Ghim Chủ Đề..."
+ unpin: "Bỏ-Ghim Chủ Đề..."
+ unarchive: "Chủ đề Không Lưu Trữ"
+ archive: "Chủ Đề Lưu Trữ"
+ invisible: "Make Unlisted"
+ visible: "Make Listed"
+ reset_read: "Đặt lại dữ liệu đọc"
+ feature:
+ pin: "Ghim Chủ Đề"
+ unpin: "Bỏ-Ghim Chủ Đề"
+ pin_globally: "Ghim Chủ Đề Tổng Thể"
+ make_banner: "Banner chủ đề"
+ remove_banner: "Bỏ banner chủ đề"
+ reply:
+ title: 'Trả lời'
+ help: 'bắt đầu soạn một trả lời mới cho chủ đề này'
+ clear_pin:
+ title: "Xóa ghim"
+ help: "Xóa trạng thái ghim của chủ đề này để nó không còn xuất hiện trên cùng danh sách chủ đề của bạn"
+ share:
+ title: 'Chia sẻ'
+ help: 'Chia sẻ một liên kết đến chủ đề này'
+ flag_topic:
+ title: 'Gắn cờ'
+ help: 'đánh dấu riêng tư chủ đề này cho sự chú ý hoặc gửi một thông báo riêng về nó'
+ success_message: 'Bạn đã đánh dấu thành công chủ đề này'
+ feature_topic:
+ title: "Đề cao chủ đề này"
+ pin: "Làm cho chủ đề này xuất hiện trên top của chuyên mục {{categoryLink}}"
+ confirm_pin: "Bạn đã có {{count}} chủ đề được ghim. Qúa nhiều chủ đề được ghim có thể là một trở ngại cho những thành viên mới và thành viên ẩn danh. Bạn có chắc chắn muốn ghim chủ đề khác trong chuyên mục này?"
+ unpin: "Xóa chủ đề này từ phần trên cùng của chủ đề {{categoryLink}}"
+ unpin_until: "Gỡ bỏ chủ đề này khỏi top của chuyên mục {{categoryLink}} và đợi cho đến %{until}."
+ pin_note: "Người dùng có thể bỏ ghim chủ đề riêng cho mình"
+ pin_validation: "Ngày được yêu câu để gắn chủ đề này"
+ not_pinned: "Không có chủ đề được ghim trong {{categoryLink}}."
+ already_pinned:
+ other: "Chủ đề gần đây được ghim trong {{categoryLink}}: {{count}}"
+ pin_globally: "Làm cho chủ đề này xuất hiện trên top của tất cả các chủ đề"
+ confirm_pin_globally: "Bạn đã có {{count}} chủ đề được ghim. Ghim quá nhiều chủ đề có thể là trở ngại cho những thành viên mới và ẩn danh. Bạn có chắc chắn muốn ghim chủ đề khác?"
+ unpin_globally: "Bỏ chủ đề này khỏi phần trên cùng của danh sách tất cả các chủ đề"
+ unpin_globally_until: "Gỡ bỏ chủ đề này khỏi top của danh sách tất cả các chủ đề và đợi cho đến %{until}."
+ global_pin_note: "Người dùng có thể bỏ ghim chủ đề riêng cho mình"
+ not_pinned_globally: "Không có chủ đề nào được ghim."
+ already_pinned_globally:
+ other: "Chủ đề gần đây được ghim trong: {{count}}"
+ make_banner: "Đặt chủ đề này là một banner xuất hiện trên top của tất cả các trang."
+ remove_banner: "Gỡ bỏ banner xuất hiện trên top của tất cả các trang."
+ banner_note: "Người dùng có thể bỏ qua banner này bằng cách đóng nó. Chỉ một chủ đề có thể được đặt là banner tại một thời điểm."
+ no_banner_exists: "Không có chủ đề banner nào."
+ banner_exists: "Có is đang là chủ đề banner."
+ inviting: "Đang mời..."
+ automatically_add_to_groups_optional: "Lời mời này cũng bao gồm quyền truy cập vào các nhóm: (optional, admin only)"
+ automatically_add_to_groups_required: "Lời mời này cũng bao gồm quyền truy cập vào các nhóm: (Required, admin only)"
+ invite_private:
+ title: 'Mời thảo luận'
+ email_or_username: "Email hoặc username người được mời"
+ email_or_username_placeholder: "địa chỉ thư điện tử hoặc tên người dùng"
+ action: "Mời"
+ success: "Chúng tôi đã mời người đó tham gia thảo luận này."
+ error: "Xin lỗi, có lỗi khi mời người dùng này."
+ group_name: "Nhóm tên"
+ controls: "Topic Controls"
+ invite_reply:
+ title: 'Mời'
+ username_placeholder: "tên người dùng"
+ action: 'Gửi Lời Mời'
+ help: 'mời người khác tham gia chủ đề thông qua email hoặc thông báo'
+ to_forum: "Chúng tôi sẽ gửi một email tóm tắt cho phép bạn của bạn gia nhập trực tiệp bằng cách nhấp chuột vào một đường dẫn, không cần phải đăng nhập."
+ sso_enabled: "Nhập tên đăng nhập hoặc địa chỉ email của người mà bạn muốn mời vào chủ đề này."
+ to_topic_blank: "Nhập tên đăng nhập hoặc địa chỉ email của người bạn muốn mời đến chủ đề này."
+ to_topic_email: "Bạn vừa điền địa chỉ email, website sẽ gửi lời mời cho phép bạn bè của bạn có thể trả lời chủ đề này."
+ to_topic_username: "Bạn vừa điền tên thành viên, website sẽ gửi thông báo kèm theo lời mời họ tham gia chủ đề này."
+ to_username: "Điền tên thành viên bạn muốn mời, website sẽ gửi thông báo kèm theo lời mời họ tham gia chủ đề này."
+ email_placeholder: 'name@example.com'
+ success_email: "Website vừa gửi lời mời tới {{emailOrUsername}} và sẽ thông báo cho bạn khi lời mời đó được chấp nhận. Kiểm tra tab lời mời trên trang tài khoản để theo dõi lời mời của bạn."
+ success_username: "Website đã mời người đó tham gia thảo luận này."
+ error: "Xin lỗi, chúng tôi không thể mời người đó. Có lẽ họ đã được mời? (giới hạn lời mời)"
+ login_reply: 'Đăng nhập để trả lời'
+ filters:
+ n_posts:
+ other: "{{count}} bài viết"
+ cancel: "Bỏ đièu kiện lọc"
+ split_topic:
+ title: "Di chuyển tới Chủ đề mới"
+ action: "di chuyển tới chủ đề mới"
+ topic_name: "Tên chủ đề mới"
+ error: "Có lỗi khi di chuyển bài viết tới chủ đề mới."
+ instructions:
+ other: "Bạn muốn tạo chủ đề mới và phổ biến nó với {{count}} bài viết đã chọn."
+ merge_topic:
+ title: "Di chuyển tới chủ đề đang tồn tại"
+ action: "di chuyển tới chủ đề đang tồn tại"
+ error: "Có lỗi khi di chuyển bài viết đến chủ đề này."
+ instructions:
+ other: "Hãy chọn chủ đề bạn muốn di chuyển {{count}} bài viết này tới."
+ change_owner:
+ title: "Chuyển chủ sở hữu bài viết"
+ action: "chuyển chủ sở hữu"
+ error: "Có lỗi xảy ra khi thay đổi quyền sở hữu của các bài viết."
+ label: "Chủ sở hữ mới của Bài viết"
+ placeholder: "tên đăng nhập của chủ sở hữu mới"
+ instructions:
+ other: "Hãy chọn chủ sở hữu mới cho {{count}} bài viết của {{old_user}}."
+ instructions_warn: "Lưu ý rằng bất kỳ thông báo nào về bài viết này sẽ không được chuyển giao cho thành viên mới trở về trước.
+
Cảnh báo: Hiện không có dữ liệu bài viết phụ thuộc được chuyển giao cho thành viên mới. Hãy thận trọng!"
+ change_timestamp:
+ title: "Đổi Timestamp"
+ action: "đổi timestamp"
+ invalid_timestamp: "Timestamp không thể trong tương lai."
+ error: "Có lỗi khi thay đổi timestamp của chủ đề."
+ instructions: "Hãy chọn dòng thời gian mới cho chủ đề, các bài viết trong chủ đề sẽ được cập nhật để có sự khác biệt cùng một lúc."
+ multi_select:
+ select: 'chọn'
+ selected: 'đã chọn ({{count}})'
+ select_replies: 'chọn + trả lời'
+ delete: xóa lựa chọn
+ cancel: hủy lựa chọn
+ select_all: chọn tất cả
+ deselect_all: bỏ chọn tất cả
+ description:
+ other: Bạn đã chọn {{count}} bài viết.
+ post:
+ reply: " {{replyAvatar}} {{usernameLink}}"
+ reply_topic: " {{link}}"
+ quote_reply: "trả lời trích dẫn"
+ edit: "Đang sửa {{link}} {{replyAvatar}} {{username}}"
+ edit_reason: "Lý do: "
+ post_number: "bài viết {{number}}"
+ last_edited_on: "đã sửa bài viết lần cuối lúc"
+ reply_as_new_topic: "Trả lời như là liên kết đến Chủ đề"
+ continue_discussion: "Tiếp tục thảo luận từ {{postLink}}:"
+ follow_quote: "đến bài viết trích dẫn"
+ show_full: "Hiển thị đầy đủ bài viết"
+ show_hidden: 'Xem nội dung ẩn'
+ deleted_by_author:
+ other: "(bài viết theo tác giả sẽ được xóa tự động sau %{count} giờ, trừ khi đã đánh dấu)"
+ expand_collapse: "mở/đóng"
+ gap:
+ other: "xem {{count}} trả lời bị ẩn"
+ more_links: "hơn {{count}}..."
+ unread: "Bài viết chưa đọc"
+ has_replies:
+ other: "{{count}} Trả lời"
+ has_likes:
+ other: "{{count}} Thích"
+ has_likes_title:
+ other: "{{count}} người thích bài viết này"
+ has_likes_title_only_you: "bạn đã like bài viết này"
+ has_likes_title_you:
+ other: "bạn và {{count}} người khác đã like bài viết này"
+ errors:
+ create: "Xin lỗi, có lỗi xảy ra khi tạo bài viết của bạn. Vui lòng thử lại."
+ edit: "Xin lỗi, có lỗi xảy ra khi sửa bài viết của bạn. Vui lòng thử lại."
+ upload: "Xin lỗi, có lỗi xảy ra khi tải lên tập tin này. Vui lòng thử lại."
+ attachment_too_large: "Xin lỗi, tập tin của bạn tải lên quá lớn (kích thước tối đa là {{max_size_kb}}kb)."
+ file_too_large: "Xin lỗi, tập tin của bạn tải lên quá lớn (kích thước tối đa là {{max_size_kb}}kb)"
+ too_many_uploads: "Xin lỗi, bạn chỉ có thể tải lên 1 file cùng 1 lúc."
+ too_many_dragged_and_dropped_files: "Xin lỗi, bạn chỉ có thể kéo và thả 10 tập tin cùng lúc."
+ upload_not_authorized: "Xin lỗi, tập tin của bạn tải lên chưa được cho phép (định dạng cho phép: {{authorized_extensions}})."
+ image_upload_not_allowed_for_new_user: "Xin lỗi, tài khoản mới không thể tải lên ảnh."
+ attachment_upload_not_allowed_for_new_user: "Xin lỗi, tài khoản mới không thể tải lên đính kèm."
+ attachment_download_requires_login: "Xin lỗi, bạn cần đăng nhập để tải về đính kèm."
+ abandon:
+ confirm: "Bạn có chắc muốn bỏ bài viết của bạn?"
+ no_value: "Không, giữ lại"
+ yes_value: "Đồng ý, bỏ"
+ via_email: "bài viết này đăng qua email"
+ whisper: "bài viết này là lời nhắn từ điều hành viên"
+ wiki:
+ about: "bài viết này là wiki"
+ archetypes:
+ save: 'Lưu lựa chọn'
+ controls:
+ reply: "bắt đầu soản trả lời cho bài viết này"
+ like: "like bài viết này"
+ has_liked: "bạn đã like bài viết này"
+ undo_like: "hủy like"
+ edit: "sửa bài viết này"
+ edit_anonymous: "Xin lỗi, nhưng bạn cần đăng nhập để sửa bài viết này."
+ flag: "đánh dấu bài viết này để tạo chú ý hoặc gửi một thông báo riêng về nó"
+ delete: "xóa bài viết này"
+ undelete: "hủy xóa bài viết này"
+ share: "chia sẻ liên kết đến bài viết này"
+ more: "Thêm"
+ delete_replies:
+ confirm:
+ other: "Bạn muốn xóa {{count}} trả lời cho bài viết này?"
+ yes_value: "Đồng ý, xóa những trả lời"
+ no_value: "Không, chỉ xóa chủ đề"
+ admin: "quản lý bài viết"
+ wiki: "Tạo Wiki"
+ unwiki: "Xóa Wiki"
+ convert_to_moderator: "Thêm màu Nhân viên"
+ revert_to_regular: "Xóa màu Nhân viên"
+ rebake: "Tạo lại HTML"
+ unhide: "Bỏ ẩn"
+ change_owner: "Đổi chủ sở hữu"
+ actions:
+ flag: 'Gắn cờ'
+ defer_flags:
+ other: "Đánh dấu hoãn"
+ it_too:
+ off_topic: "Gắn cờ nó"
+ spam: "Gắn cờ nó"
+ inappropriate: "Gắn cờ nó"
+ custom_flag: "Gắn cờ nó"
+ bookmark: "Đánh dấu nó"
+ like: "Thích nó"
+ vote: "Bịnh chọn nó"
+ undo:
+ off_topic: "Hủy gắn cờ"
+ spam: "Hủy gắn cờ"
+ inappropriate: "Hủy gắn cờ"
+ bookmark: "Hủy đánh dấu"
+ like: "Hủy like"
+ vote: "Hủy bình chọn"
+ by_you:
+ off_topic: "Bạn đã đánh dấu cái nfay là chủ đề đóng"
+ spam: "Bạn đã đánh dấu cái này là rác"
+ inappropriate: "Bạn đã đánh dấu cái này là không phù hợp"
+ notify_moderators: "Bạn đã đánh dấu cái này cho điều tiết"
+ notify_user: "Bạn đã gửi một tin nhắn đến người dùng này"
+ bookmark: "Bạn đã đánh dấu bài viết này"
+ like: "Bạn đã thích cái này"
+ vote: "Bạn đã bình chọn cho bài viết này"
+ by_you_and_others:
+ off_topic:
+ other: "Bạn và {{count}} người khác đã đánh dấu đây là chủ đề đóng"
+ spam:
+ other: "Bạn và {{count}} người khác gắn cờ nó là rác"
+ inappropriate:
+ other: "Bạn và {{count}} other người khác đã đánh dấu nó là không phù hợp"
+ notify_moderators:
+ other: "Bạn và {{count}} người khác gắn cờ nó là điều tiết"
+ notify_user:
+ other: "Bạn và {{count}} người khác đã gửi một tin nhắn đến người dùng này"
+ bookmark:
+ other: "Bạn và {{count}} người khác đã đánh dấu bài viết này"
+ like:
+ other: "Bạn và {{count}} người khác đã thích cái này"
+ vote:
+ other: "Bạn và {{count}} nười khác đã bình chọn cho bài viết này"
+ by_others:
+ off_topic:
+ other: "{{count}} người đã đánh dấu nó là chủ đề đóng"
+ spam:
+ other: "{{count}} người khác đánh dấu là rác"
+ inappropriate:
+ other: "{{count}} người khác đã đánh dấu là không phù hợp"
+ notify_moderators:
+ other: "{{count}} người đã đánh dấu để chờ duyệt"
+ notify_user:
+ other: "{{count}} gửi tin nhắn đến người dùng này"
+ bookmark:
+ other: "{{count}} người đã đánh dấu bài viết này"
+ like:
+ other: "{count}} người đã thích cái này"
+ vote:
+ other: "{{count}} người đã bình chọn cho bài viết này"
+ delete:
+ confirm:
+ other: "Bạn muốn xóa những bài viết này?"
+ revisions:
+ controls:
+ first: "Sửa đổi đầu tiên"
+ previous: "Sửa đổi trước"
+ next: "Sửa đổi tiếp theo"
+ last: "Sửa đổi gần nhất"
+ hide: "Ẩn sửa đổi"
+ show: "Hiện sửa đổi"
+ comparing_previous_to_current_out_of_total: "{{previous}} {{current}} / {{total}}"
+ displays:
+ inline:
+ button: ' HTML'
+ side_by_side:
+ button: ' HTML'
+ side_by_side_markdown:
+ button: ' Thô'
+ category:
+ can: 'can…'
+ none: '(không danh mục)'
+ all: 'Tất cả danh mục'
+ choose: 'Chọn chuyên mục…'
+ edit: 'sửa'
+ edit_long: "Sửa"
+ view: 'Xem Chủ đề trong Danh mục'
+ general: 'Chung'
+ settings: 'Cấu hình'
+ topic_template: "Mẫu Chủ đề"
+ delete: 'Xóa chuyên mục'
+ create: 'Chuyên mục mới'
+ create_long: 'Tạo Chủ đề mới'
+ save: 'Lưu chuyên mục'
+ slug: 'Đường dẫn chuyên mục'
+ slug_placeholder: '(Tùy chọn) các từ sử dụng trong url'
+ creation_error: Có lỗi xảy ra khi tạo chuyên mục
+ save_error: Có lỗi xảy ra khi lưu chuyên mục
+ name: "Tên chuyên mục"
+ description: "Mô tả"
+ topic: "chủ đề chuyên mục"
+ logo: "Logo của chuyên mục"
+ background_image: "Ảnh nền của chuyên mục"
+ badge_colors: "Màu huy hiệu"
+ background_color: "Màu nền"
+ foreground_color: "Màu mặt trước"
+ name_placeholder: "Tối đa một hoặc hai từ"
+ color_placeholder: "Bất cứ màu nào"
+ delete_confirm: "Bạn có chắc sẽ xóa chuyên mục này chứ?"
+ delete_error: "Có lỗi xảy ra khi xóa chuyên mục này"
+ list: "Danh sách chuyên mục"
+ no_description: "Hãy thêm mô tả cho chuyên mục này"
+ change_in_category_topic: "Sửa mô tả"
+ already_used: 'Màu này đã được dùng bởi chuyên mục khác'
+ security: "Bảo mật"
+ special_warning: "Cảnh báo: Đây là chuyên mục có sẵn nên bạn không thể chỉnh sửa các thiết lập bảo mật. Nếu bạn muốn sử dụng chuyên mục này, hãy xóa nó thay vì tái sử dụng."
+ images: "Hình ảnh"
+ auto_close_label: "Tự động khóa chủ đề sau:"
+ auto_close_units: "giờ"
+ email_in: "Tùy chỉnh địa chỉ nhận thư điện tử "
+ email_in_allow_strangers: "Nhận thư điện tử từ người gửi vô danh không tài khoản"
+ email_in_disabled: "Tạo chủ đề mới thông qua email đã được tắt trong thiết lập. Để bật tính năng này, "
+ email_in_disabled_click: 'kích hoạt thiết lập thư điện tử'
+ suppress_from_homepage: "Ngăn chặn chuyên mục này hiển thị trên trang chủ."
+ allow_badges_label: "Cho phép thưởng huy hiệu trong chuyên mục này"
+ edit_permissions: "Sửa quyền"
+ add_permission: "Thêm quyền"
+ this_year: "năm nay"
+ position: "vị trí"
+ default_position: "vị trí mặc định"
+ position_disabled: "Chuyên mục sẽ được hiển thị theo thứ tự hoạt động. Để kiểm soát thứ tự chuyên mục trong danh sách, "
+ position_disabled_click: 'bật thiết lập "cố định vị trí chuyên mục".'
+ parent: "Danh mục cha"
+ notifications:
+ watching:
+ title: "Theo dõi"
+ description: "Bạn sẽ tự động xem tất cả các chủ đề mới trong các chuyên mục này. Bạn sẽ được thông báo về tất các các chủ đề mới, và một số bài viết mới sẽ được hiển thị."
+ tracking:
+ title: "Đang theo dõi"
+ description: "Bạn sẽ tự động theo dõi tất cả các chủ đề mới trong các chuyên mục này. Bạn sẽ được thông báo nếu ai đó đề cập đến @tên của bạn hoặc trả lời bạn, và một số bài viết mới sẽ được hiển thị."
+ regular:
+ title: "Bình thường"
+ description: "Bạn sẽ được thông báo nếu ai đó đề cập đến @tên bạn hoặc trả lời bạn"
+ muted:
+ title: "Im lặng"
+ description: "Bạn sẽ không nhận được thông báo về bất cứ chủ đề mới nào trong các chuyên mục này, và chúng sẽ không hiển thị là mới nhất."
+ flagging:
+ title: 'Cám ơn bạn đã giúp phát triển cộng đồng!'
+ action: 'Đánh dấu Bài viết'
+ take_action: "Thực hiện"
+ notify_action: 'Tin nhắn'
+ delete_spammer: "Xóa người Spam"
+ delete_confirm: "Bạn đang định xóa %{posts} bài đăng và %{topics} chủ đề từ người dùng này, loại tài khoản, ngăn đăng ký từ địa chỉ IP %{ip_address} của họ, và thêm địa chỉ email %{email} vào danh sách chặn vĩnh viễn. Bạn có chắc người dùng này thật sự là một spammer?"
+ yes_delete_spammer: "Có, xóa người spam"
+ ip_address_missing: "(N/A)"
+ hidden_email_address: "(ẩn)"
+ submit_tooltip: "Đánh dấu riêng tư"
+ take_action_tooltip: "Tiếp cận ngưỡng đánh dấu ngay lập tức, thay vì đợi cộng đồng"
+ cant: "Xin lỗi, bạn không thể đánh dấu bài viết lúc này."
+ formatted_name:
+ off_topic: "Nó là sai chủ đề"
+ inappropriate: "Không phù hợp"
+ spam: "Nó là rác"
+ custom_placeholder_notify_user: "Phải hảo tâm và mang tính xây dựng."
+ custom_placeholder_notify_moderators: "Hãy cho chúng tôi biết cụ thể những gì bạn quan tâm, và cung cấp các liên kết hoặc ví dụ liên quan nếu có thể."
+ custom_message:
+ at_least: "điền ít nhất {{n}} ký tự"
+ more: "còn {{n}}"
+ left: "{{n}} còn lại"
+ flagging_topic:
+ title: "Cám ơn bạn đã giúp phát triển cộng đồng!"
+ action: "Gắn cờ Chủ đề"
+ notify_action: "Tin nhắn"
+ topic_map:
+ title: "Tóm tắt Chủ đề"
+ participants_title: "Poster thường xuyên"
+ links_title: "Liên kết phổ biến"
+ links_shown: "hiện tất cả {{totalLinks}} liên kết..."
+ clicks:
+ other: "%{count} nhấp chuột"
+ topic_statuses:
+ warning:
+ help: "Đây là một cảnh báo chính thức."
+ bookmarked:
+ help: "Bạn đã đánh dấu chủ đề này"
+ locked:
+ help: "Chủ đề đã đóng; không cho phép trả lời mới"
+ archived:
+ help: "Chủ đề này đã được lưu trữ, bạn không thể sửa đổi nữa"
+ locked_and_archived:
+ help: "Chủ đề này đã đóng và lưu trữ, không cho phép trả lời mới và sửa đổi nữa"
+ unpinned:
+ title: "Hủy gắn"
+ help: "Chủ đề này không còn được ghim nữa, nó sẽ hiển thị theo thứ tự thông thường"
+ pinned_globally:
+ title: "Ghim toàn trang"
+ help: "Chủ đề này được ghim toàn trang, nó sẽ hiển thị ở trên cùng các chủ đề mới và trong chuyên mục"
+ pinned:
+ title: "Gắn"
+ help: "Chủ đề này đã được ghim, nó sẽ hiển thị ở trên cùng chuyên mục"
+ invisible:
+ help: "Chủ đề này ẩn, nó sẽ không hiển thị trong danh sách chủ đề, và chỉ có thể truy cập thông qua liên kết trực tiếp"
+ posts: "Bài viết"
+ posts_lowercase: "bài viết"
+ posts_long: "Có {{number}} bài đăng trong chủ đề này"
+ posts_likes_MF: |
+ Chủ đề này có {count, plural, one {1 reply} other {# replies}} {ratio, select,
+ low {with a high like to post ratio}
+ med {with a very high like to post ratio}
+ high {with an extremely high like to post ratio}
+ other {}}
+ original_post: "Bài viết gốc"
+ views: "Lượt xem"
+ views_lowercase:
+ other: "lượt xem"
+ replies: "Trả lời"
+ views_long: "chủ đề đã được xem {{number}} lần"
+ activity: "Hoạt động"
+ likes: "Lượt thích"
+ likes_lowercase:
+ other: "lượt thích"
+ likes_long: "Có {{number}} thích trong chủ đề này"
+ users: "Người dùng"
+ users_lowercase:
+ other: "người dùng"
+ category_title: "Danh mục"
+ history: "Lịch sử"
+ changed_by: "bởi {{author}}"
+ raw_email:
+ title: "Email gốc"
+ not_available: "Không sẵn sàng!"
+ categories_list: "Danh sách Danh mục"
+ filters:
+ with_topics: "%{filter} chủ đề"
+ with_category: "%{filter} %{category} chủ đề"
+ latest:
+ title: "Mới nhất"
+ title_with_count:
+ other: "Mới nhất ({{count}})"
+ help: "chủ đề với bài viết gần nhất"
+ hot:
+ title: "Nổi bật"
+ help: "chọn các chủ đề nóng nhất"
+ read:
+ title: "Đọc"
+ help: "chủ đề bạn đã đọc, theo thứ tự bạn đọc lần cuối cùng"
+ search:
+ title: "Tìm kiếm"
+ help: "tìm trong tất cả chủ đề"
+ categories:
+ title: "Danh mục"
+ title_in: "Danh mục - {{categoryName}}"
+ help: "tất cả các chủ đề được nhóm theo chuyên mục"
+ unread:
+ title: "Chưa đọc"
+ title_with_count:
+ other: "Chưa đọc ({{count}})"
+ help: "chủ đề bạn đang xem hoặc theo dõi có bài viết chưa đọc"
+ lower_title_with_count:
+ other: "{{count}} chưa đọc"
+ new:
+ lower_title_with_count:
+ other: "{{count}} mới"
+ lower_title: "mới"
+ title: "Mới"
+ title_with_count:
+ other: "Mới ({{count}})"
+ help: "chủ đề đã tạo cách đây vài ngày"
+ posted:
+ title: "Bài viết của tôi"
+ help: "chủ đề của bạn đã được đăng trong"
+ bookmarks:
+ title: "Đánh dấu"
+ help: "chủ để của bạn đã được đánh dấu"
+ category:
+ title: "{{categoryName}}"
+ title_with_count:
+ other: "{{categoryName}} ({{count}})"
+ help: "Những chủ đề mới nhất trong chuyên mục{{categoryName}} "
+ top:
+ title: "Trên"
+ help: "Các chủ đề tích cực nhất trong năm, tháng, tuần, hoặc ngày trước"
+ all:
+ title: "Từ trước tới nay"
+ yearly:
+ title: "Hàng năm"
+ quarterly:
+ title: "Hàng quý"
+ monthly:
+ title: "Hàng tháng"
+ weekly:
+ title: "Hàng tuần"
+ daily:
+ title: "Hàng ngày"
+ all_time: "Từ trước tới nay"
+ this_year: "Năm"
+ this_quarter: "Quý"
+ this_month: "Tháng"
+ this_week: "Tuần"
+ today: "Ngày"
+ other_periods: "xem top"
+ browser_update: 'Không may, trình duyệt của bạn quá cũ để website hoạt động. Hãy nâng cấp trình duyệt của bạn.'
+ permission_types:
+ full: "Tạo / Trả lời / Xem"
+ create_post: "Trả lời / Xem"
+ readonly: "Xem"
+ admin_js:
+ type_to_filter: "gõ để lọc..."
+ admin:
+ title: 'Quản trị Diễn đàn'
+ moderator: 'Điều hành'
+ dashboard:
+ title: "Bảng điều khiển"
+ last_updated: "Bảng điều khiển cập nhật gần nhất:"
+ version: "Phiên bản"
+ up_to_date: "Bạn đã cập nhật phiên bản mới nhất"
+ critical_available: "Bản cập nhật quan trọng sẵn sằng."
+ updates_available: "Cập nhật đang sẵng sàng"
+ please_upgrade: "Vui lòng cập nhật!"
+ no_check_performed: "Kiểm tra phiên bản mới đã không được thực hiện, đảm bảo rằng Sidekiq đang chạy."
+ stale_data: "Kiểm tra phiên bản mới đã không được thực hiện gần đây, đảm bảo rằng Sidekiq đang chạy."
+ version_check_pending: "Hình như bạn mới nâng cấp, thật tuyệt!"
+ installed_version: "Đã cài đặt"
+ latest_version: "Mới nhất"
+ problems_found: "Tìm thấy vấn đề với bản cài đặt Discourse của bạn:"
+ last_checked: "Kiểm tra lần cuối"
+ refresh_problems: "Làm mới"
+ no_problems: "Không phát hiện vấn đề"
+ moderators: 'Điều hành:'
+ admins: 'Quản trị:'
+ blocked: 'Đã khóa:'
+ suspended: 'Đã tạm khóa:'
+ private_messages_short: "Tin nhắn"
+ private_messages_title: "Tin nhắn"
+ mobile_title: "Điện thoại"
+ space_free: "{{size}} trống"
+ uploads: "tải lên"
+ backups: "sao lưu"
+ traffic_short: "Băng thông"
+ traffic: "Application web requests"
+ page_views: "API Requests"
+ page_views_short: "API Requests"
+ show_traffic_report: "Xem chi tiết Báo cáo Lưu lượng"
+ reports:
+ today: "Hôm nay"
+ yesterday: "Hôm qua"
+ last_7_days: "7 Ngày gần nhất"
+ last_30_days: "30 Ngày gần nhất"
+ all_time: "Từ trước tới nay"
+ 7_days_ago: "7 Ngày trước"
+ 30_days_ago: "30 Ngày trước"
+ all: "Tất cả"
+ view_table: "bảng"
+ view_chart: "biểu đồ bar"
+ refresh_report: "Làm mới báo cáo"
+ start_date: "Từ ngày"
+ end_date: "Đến ngày"
+ groups: "Các nhóm"
+ commits:
+ latest_changes: "Thay đổi cuối: vui lòng cập nhật thường xuyên!"
+ by: "bởi"
+ flags:
+ title: "Gắn cờ"
+ old: "Cũ"
+ active: "Kích hoạt"
+ agree: "Đồng ý"
+ agree_title: "Xác nhận đánh dấu này hợp lệ và chính xác"
+ agree_flag_modal_title: "Đồng ý và..."
+ agree_flag_hide_post: "Đồng ý (ẩn bài viết + gửi PM)"
+ agree_flag_hide_post_title: "Ẩn bài viết này và tự động gửi tin nhắn đến người dùng hối thúc họ sửa nó"
+ agree_flag_restore_post: "Đồng ý (khôi phục bài viết)"
+ agree_flag_restore_post_title: "Khôi phục bài viết này"
+ agree_flag: "Đống ý với cờ này"
+ agree_flag_title: "Đồng ý với cờ này và giữ bài viết không thay đổi"
+ defer_flag: "Hoãn"
+ defer_flag_title: "Xóa cờ này; nó yêu cầu không có hành động nào vào thời điểm này."
+ delete: "Xóa"
+ delete_title: "Xóa bài viết đánh dấu này đề cập đến."
+ delete_post_defer_flag: "Xóa bài viết và Hoãn đánh dấu"
+ delete_post_defer_flag_title: "Xóa bài viết; nếu là bài viết đầu tiên, xóa chủ đề này"
+ delete_post_agree_flag: "Xóa bài viết và Đồng ý với cờ"
+ delete_post_agree_flag_title: "Xóa bài viết; nếu là bài viết đầu tiên, xóa chủ đề này"
+ delete_flag_modal_title: "Xóa và..."
+ delete_spammer: "Xóa người Spam"
+ delete_spammer_title: "Xóa người dùng này và tất cả bài viết à chủ để của người dùng này."
+ disagree_flag_unhide_post: "Không đồng ý (ẩn bài viết)"
+ disagree_flag_unhide_post_title: "Loại bỏ bất kỳ đánh dấu nào khỏi bài viết này và làm cho bài viết hiển thị trở lại"
+ disagree_flag: "Không đồng ý"
+ disagree_flag_title: "Từ chối đánh dấu này là không hợp lệ hoặc chính xác"
+ clear_topic_flags: "Hoàn tất"
+ clear_topic_flags_title: "Chủ đề đã được xem xét vấn đề và giải quyết, click để loại bỏ đánh dấu."
+ more: "(thêm trả lời...)"
+ dispositions:
+ agreed: "đồng ý"
+ disagreed: "không đồng ý"
+ deferred: "hoãn"
+ flagged_by: "Gắn cờ bởi"
+ resolved_by: "Xử lý bởi"
+ took_action: "Thực hiện"
+ system: "Hệ thống"
+ error: "Có lỗi xảy ra"
+ reply_message: "Trả lời "
+ no_results: "Không được gắn cờ"
+ topic_flagged: "Chủ đề này đã được đánh dấu."
+ visit_topic: "Tới chủ đề để thực hiện"
+ was_edited: "Bài viết đã được chỉnh sửa sau khi đánh dấu đầu tiên"
+ previous_flags_count: "Bài viết này đã được đánh dấu {{count}} lần."
+ summary:
+ action_type_3:
+ other: "sai chủ đề x{{count}}"
+ action_type_4:
+ other: "Không phù hợp x{{count}}"
+ action_type_6:
+ other: "tùy chỉnh x{{count}}"
+ action_type_7:
+ other: "tùy chỉnh x{{count}}"
+ action_type_8:
+ other: "spam x{{count}}"
+ groups:
+ primary: "Nhóm Chính"
+ no_primary: "(không có nhóm chính)"
+ title: "Nhóm"
+ edit: "Sửa nhóm"
+ refresh: "Làm mới"
+ new: "Mới"
+ selector_placeholder: "nhập tên tài khoản"
+ name_placeholder: "Tên nhóm, không khoản trắng, cùng luật với tên tài khoản"
+ about: "Chỉnh sửa nhóm thành viên và tên của bạn ở đây"
+ group_members: "Nhóm thành viên"
+ delete: "Xóa"
+ delete_confirm: "Xóa nhóm này?"
+ delete_failed: "Không thể xóa nhóm. Nếu đây là một nhóm tự động, nó không thể hủy bỏ."
+ delete_member_confirm: "Loại bỏ '%{username}' khỏi nhóm '%{group}'?"
+ delete_owner_confirm: "Loại bỏ quyền sở hữu của '%{username}'?"
+ name: "Tên"
+ add: "Thêm"
+ add_members: "Thêm thành viên"
+ custom: "Tùy biến"
+ bulk_complete: "Các thành viên đã được thêm vào nhóm."
+ bulk: "Thêm vào nhóm theo lô"
+ bulk_paste: "Dán danh sách username hoặc email, mỗi mục một dòng:"
+ bulk_select: "(chọn nhóm)"
+ automatic: "Tự động"
+ automatic_membership_email_domains: "Các thành viên đã đăng ký với đuôi email khớp với một trong danh sách này sẽ được tự động thêm vào nhóm:"
+ automatic_membership_retroactive: "Áp dụng quy tắc đuôi email tương tự để thêm thành viên đăng ký hiện tại"
+ default_title: "Tên mặc định cho tất cả các thành viên trong nhóm này"
+ primary_group: "Tự động cài là nhóm chính"
+ group_owners: Chủ sở hữu
+ add_owners: Thêm chủ sở hữu
+ incoming_email: "Tùy chỉnh địa chỉ email đến"
+ incoming_email_placeholder: "điền địa chỉ email"
+ api:
+ generate_master: "Tạo Master API Key"
+ none: "Không có API keys nào kích hoạt lúc này."
+ user: "Thành viên"
+ title: "API"
+ key: "API Key"
+ generate: "Khởi tạo"
+ regenerate: "Khởi tạo lại"
+ revoke: "Thu hồi"
+ confirm_regen: "Bạn muốn thay API Key hiện tại bằng cái mới?"
+ confirm_revoke: "Bạn có chắc chắn muốn hủy bỏ khóa đó?"
+ info_html: "Khóa API cho phép bạn tạo và cập nhật chủ đề sử dụng JSON."
+ all_users: "Tất cả Thành viên"
+ note_html: "Giữ khóa nào bảo mật, tất cả tài khoản có thể dùng khóa này để tạo bài viết với bất kỳ tài khoản nào."
+ plugins:
+ title: "Plugin"
+ installed: "Đã cài Plugin"
+ name: "Tên"
+ none_installed: "Bạn chưa cài plugin nào."
+ version: "Phiên bản"
+ enabled: "Kích hoạt"
+ is_enabled: "Có"
+ not_enabled: "Không"
+ change_settings: "Đổi Cấu hình"
+ change_settings_short: "Cấu hình"
+ howto: "Plugin cài như thế nào?"
+ backups:
+ title: "Bản sao lưu"
+ menu:
+ backups: "Bản sao lưu"
+ logs: "Log"
+ none: "Chưa có bản sao lưu."
+ read_only:
+ enable:
+ title: "Kích hoạt chế độ chỉ xem"
+ label: "Kích hoạt chế độ chỉ xem"
+ confirm: "Bạn muốn kích hoạt chế chộ chỉ xem?"
+ disable:
+ title: "Hủy chế độ chỉ xem này"
+ label: "Hủy chế độ chỉ xem"
+ logs:
+ none: "Chưa có log..."
+ columns:
+ filename: "Tên tập tin"
+ size: "Kích thước"
+ upload:
+ label: "Tải lên"
+ title: "Tải lên bản sao lưu cho phiên bản này"
+ uploading: "Đang tải lên..."
+ success: "'{{filename}}' đã tải lên thành công."
+ error: "Có lõi trong quá trình tải lên '{{filename}}': {{message}}"
+ operations:
+ is_running: "Tác vụ đang chạy..."
+ failed: "{{operation}} Thấy bại. Vui lòng xem log."
+ cancel:
+ label: "Hủy"
+ title: "Hủy tác vụ hiện tại"
+ confirm: "Bạn muốn hủy tác vụ hiện tại?"
+ backup:
+ label: "Sao lưu"
+ title: "Tạo bản sao lưu"
+ confirm: "Bạn muốn bắt đầu một bản sao lưu mới?"
+ without_uploads: "Đúng (không bao gồm những tập tin)"
+ download:
+ label: "Tải xuống"
+ title: "Tải xuống bản sao lưu này"
+ destroy:
+ title: "Xóa bản sao lưu này"
+ confirm: "Bạn muốn hủy bản sao lưu này?"
+ restore:
+ is_disabled: "Khôi phục đã bị cấm sử dụng trong cấu hình trang."
+ label: "Khôi phục"
+ title: "Khôi phục lại sao lưu này"
+ rollback:
+ label: "Rollback"
+ title: "Đưa csdl về trạng thái làm việc trước"
+ export_csv:
+ user_archive_confirm: "Bạn có chắc chắn muốn download các bài viết của mình?"
+ success: "Export đang được khởi tạo, bạn sẽ nhận được tin nhắn thông báo khi quá trình hoàn tất."
+ failed: "Xuất lỗi. Vui lòng kiểm tra log."
+ rate_limit_error: "Bài viết có thể tải về 1 lần mỗi này, vui lòng thử lại vào ngày mai."
+ button_text: "Xuất"
+ button_title:
+ user: "Xuất danh sách người dùng đầy đủ với định dạng CSV."
+ staff_action: "Xuất đầy đủ log hành động của nhân viên với định dạng CSV."
+ screened_email: "Export danh sách email theo định dạng CSV."
+ screened_ip: "Export danh sách IP theo định dạng CSV."
+ screened_url: "Export danh sách URL theo định dạng CSV."
+ export_json:
+ button_text: "Xuất"
+ invite:
+ button_text: "Gửi Lời Mời"
+ button_title: "Gửi Lời Mời"
+ customize:
+ title: "Tùy biến"
+ long_title: "Tùy biến trang"
+ css: "CSS"
+ header: "Header"
+ top: "Trên"
+ footer: "Footer"
+ embedded_css: "Nhúng CSS"
+ head_tag:
+ text: ""
+ title: "HTML sẻ thêm trước thẻ "
+ body_tag:
+ text: ""
+ title: "HTML sẽ thêm trước thẻ "
+ override_default: "Không bao gồm style sheet chuẩn"
+ enabled: "Cho phép?"
+ preview: "xem trước"
+ undo_preview: "xóa xem trước"
+ rescue_preview: "default style"
+ explain_preview: "Xem website với stylesheet tùy chỉnh"
+ explain_undo_preview: "Quay trở lại với kiểu tùy chỉnh stylesheet hiện tại"
+ explain_rescue_preview: "Xem website với stylesheet mặc định"
+ save: "Lưu"
+ new: "Mới"
+ new_style: "Style mới"
+ import: "Nhập"
+ import_title: "Chọn một file hoặc paste chữ."
+ delete: "Xóa"
+ delete_confirm: "Xóa tùy biến này?"
+ about: "Chỉnh sửa CSS và HTML header trên trang. Thêm tùy biến để bắt đầu."
+ color: "Màu sắc"
+ opacity: "Độ mờ"
+ copy: "Sao chép"
+ email_templates:
+ title: "Email Templates"
+ subject: "Chủ đề"
+ multiple_subjects: "Email template này có nhiều chủ đề."
+ body: "Nội dung"
+ none_selected: "Chọn email template để bắt đầu chỉnh sửa."
+ revert: "Hoàn nguyên thay đổi"
+ revert_confirm: "Bạn có chắc chắn muốn hoàn nguyên các thay đổi?"
+ css_html:
+ title: "CSS/HTML"
+ long_title: "Tùy biến CSS và HTML"
+ colors:
+ title: "Màu sắc"
+ long_title: "Bảng màu"
+ about: "Chỉnh "
+ new_name: "Bản màu mới"
+ copy_name_prefix: "Bản sao của"
+ delete_confirm: "Xóa bảng màu này?"
+ undo: "hoàn tác"
+ undo_title: "Hoàn tác thay đổi của bạn vơ"
+ revert: "phục hồi"
+ revert_title: "Thiết lập lại màu về mặc định của Discourse."
+ primary:
+ name: 'chính'
+ description: 'Hầu hết chữ, biểu tượng, và viền.'
+ secondary:
+ name: 'cấp hai'
+ description: 'Màu nền, và màu chữ của một vài nút.'
+ tertiary:
+ name: 'cấp ba'
+ description: 'Liên kết, một và nút, thông báo, và màu nhấn.'
+ quaternary:
+ name: "chia bốn"
+ description: "Liên kết điều hướng."
+ header_background:
+ name: "nền header"
+ description: "Màu nền header của trang."
+ header_primary:
+ name: "header chính"
+ description: "Chữ và icon trong header của website."
+ highlight:
+ name: 'highlight'
+ description: 'Màu nền của các thành phần được đánh dấu trên trang, như là bài viết và chủ đề.'
+ danger:
+ name: 'nguy hiểm'
+ description: 'Màu đánh dấu cho thao tác xóa bài viết và chủ đề.'
+ success:
+ name: 'thành công'
+ description: 'Sử dụng để chỉ một thao tác đã thành công.'
+ love:
+ name: 'đáng yêu'
+ description: "Màu của nút like"
+ email:
+ title: "Emails"
+ settings: "Cấu hình"
+ templates: "Templates"
+ preview_digest: "Xem trước tập san"
+ sending_test: "Đang gửi Email test..."
+ error: "LỖI - %{server_error}"
+ test_error: "Có vấn đề khi gửi email test. Vui lòng kiểm tra lại cấu hình email của bạn, chắc chắn host mail của bạn không bị khóa kết nối, và thử lại."
+ sent: "Đã gửi"
+ skipped: "Đã bỏ qua"
+ received: "Đã nhận"
+ rejected: "Từ chối"
+ sent_at: "Đã gửi vào lúc"
+ time: "Thời gian"
+ user: "Thành viên"
+ email_type: "Loại Email"
+ to_address: "Đến Địa chỉ"
+ test_email_address: "địa chỉ email để test"
+ send_test: "Gửi Email test"
+ sent_test: "đã gửi!"
+ delivery_method: "Phương thức chuyển giao"
+ preview_digest_desc: "Xem trước nội dung của tập san email đã gửi cho các thành viên không hoạt động."
+ refresh: "Tải lại"
+ format: "Định dạng"
+ html: "html"
+ text: "text"
+ last_seen_user: "Người dùng cuối:"
+ reply_key: "Key phản hồi"
+ skipped_reason: "Bỏ qua Lý do"
+ incoming_emails:
+ from_address: "Từ"
+ to_addresses: "Tới"
+ cc_addresses: "Cc"
+ subject: "Chủ đề"
+ error: "Lỗi"
+ none: "Không tìm tháy các email đến."
+ filters:
+ from_placeholder: "from@example.com"
+ to_placeholder: "to@example.com"
+ cc_placeholder: "cc@example.com"
+ subject_placeholder: "Chủ đề..."
+ error_placeholder: "Lỗi"
+ logs:
+ none: "Không tìm thấy log."
+ filters:
+ title: "Lọc"
+ user_placeholder: "tên người dùng"
+ address_placeholder: "name@example.com"
+ type_placeholder: "tập san, đăng ký..."
+ reply_key_placeholder: "key phản hồi"
+ skipped_reason_placeholder: "lý do"
+ logs:
+ title: "Log"
+ action: "Hành động"
+ created_at: "Đã tạo"
+ last_match_at: "Khớp lần cuối"
+ match_count: "Khớp"
+ ip_address: "IP"
+ topic_id: "ID Chủ đề"
+ post_id: "ID Bài viết"
+ category_id: "ID Danh mục"
+ delete: 'Xoá'
+ edit: 'Sửa'
+ save: 'Lưu'
+ screened_actions:
+ block: "khóa"
+ do_nothing: "không làm gì"
+ staff_actions:
+ title: "Staff Actions"
+ instructions: "Click username và thực hiện lọc danh sách, click ảnh hồ sơ để đến trang thành viên."
+ clear_filters: "Hiện thị mọi thứ"
+ staff_user: "Tài khoản Nhân viên"
+ target_user: "Target User"
+ subject: "Chủ đề"
+ when: "Khi"
+ context: "Ngữ cảnh"
+ details: "Chi tiết"
+ previous_value: "Trước"
+ new_value: "Mới"
+ diff: "So sánh"
+ show: "Hiển thị"
+ modal_title: "Chi tiết"
+ no_previous: "Không có giá trị trước đó."
+ deleted: "Không có giá trị mới, bản ghi đã được xóa."
+ actions:
+ delete_user: "xóa người dùng"
+ change_trust_level: "thay đổi cấp tin cậy"
+ change_username: "thay đổi username"
+ change_site_setting: "thay đổi cấu hình trang"
+ change_site_customization: "thay đổi tùy biến trang"
+ delete_site_customization: "xóa tùy biến trang"
+ change_site_text: "thay đổi chữ trên website"
+ suspend_user: "tạm khóa thành viên"
+ unsuspend_user: "hủy tạm khóa thành viên"
+ grant_badge: "cấp huy hiệu"
+ revoke_badge: "hủy bỏ huy hiệu"
+ check_email: "kiểm tra email"
+ delete_topic: "xóa chủ đề"
+ delete_post: "xóa bài viết"
+ impersonate: "mạo danh"
+ anonymize_user: "thành viên ẩn danh"
+ roll_up: "cuộn lên khối IP"
+ change_category_settings: "thay đổi cấu hình danh mục"
+ delete_category: "xóa danh mục"
+ create_category: "tạo danh mục"
+ block_user: "khóa tài khoản"
+ unblock_user: "mở khóa tài khoản"
+ grant_admin: "cấp quản trị"
+ revoke_admin: "hủy bỏ quản trị"
+ grant_moderation: "cấp điều hành"
+ revoke_moderation: "hủy bỏ điều hành"
+ screened_emails:
+ title: "Screened Emails"
+ description: "Khi ai đó cố gắng tạo tài khoản mới, các địa chỉ email sau sẽ được kiểm tra và đăng ký sẽ bị chặn, hoặc một số hành động khác được thực hiện."
+ email: "Địa chỉ Email"
+ actions:
+ allow: "Cho phép"
+ screened_urls:
+ title: "Screened URLs"
+ description: "Các URL được liệt kê ở đây được sử dụng trong các bài viết của người dùng đã được xác định là spammer."
+ url: "URL"
+ domain: "Tên miền"
+ screened_ips:
+ title: "Screened IPs"
+ description: 'Các địa chỉ IP đã được xem, sử dụng "Cho phép" để tạo danh sách trắng các địa chỉ.'
+ delete_confirm: "Bạn có chắc chắn muốn xóa quy tắc cho %{ip_address}?"
+ roll_up_confirm: "Bạn có chắc chắn muốn cuộn các địa chỉ IP thông thường vào các mạng con?"
+ rolled_up_some_subnets: "Cuộn thành công các IP cấm vào các mạng con: %{subnets}."
+ rolled_up_no_subnet: "Không có gì để cuộn lên."
+ actions:
+ block: "Khóa"
+ do_nothing: "Cho phép"
+ allow_admin: "Cho phép Quản trị"
+ form:
+ label: "Mới:"
+ ip_address: "Địa chỉ IP"
+ add: "Thêm"
+ filter: "Tìm kiếm"
+ roll_up:
+ text: "Cuộn lên"
+ title: "Tạo mạng con mới các entry cấm nếu có ít nhất 'min_ban_entries_for_roll_up' entry."
+ logster:
+ title: "Log lỗi"
+ impersonate:
+ title: "Mạo danh"
+ help: "Sử dụng công cụ này để mạo danh một tài khoản thành viên cho mục đích gỡ lỗi, bạn sẽ phải đăng xuất sau khi hoàn tất."
+ not_found: "Không tìm thấy người dùng này."
+ invalid: "Xin lỗi, bạn không thể mạo danh tài khoản đó."
+ users:
+ title: 'Tài khoản'
+ create: 'Thêm tài khoản Quản trị'
+ last_emailed: "Email trước đây"
+ not_found: "Xin lỗi, username không tồn tại trong hệ thống."
+ id_not_found: "Xin lỗi, id người dùng không tồn tại trong hệ thống."
+ active: "Kích hoạt"
+ show_emails: "Hiện địa chỉ Email"
+ nav:
+ new: "Mới"
+ active: "Kích hoạt"
+ pending: "Đang chờ xử lý"
+ staff: 'Nhân viên'
+ suspended: 'Đã tạm khóa'
+ blocked: 'Đã khóa'
+ suspect: 'Nghi ngờ'
+ approved: "Đã duyệt?"
+ approved_selected:
+ other: "duyệt tài khoản ({{count}})"
+ reject_selected:
+ other: "từ chối tài khoản ({{count}})"
+ titles:
+ active: 'Thành viên kích hoạt'
+ new: 'Thành viên mới'
+ pending: 'Hoãn Xem xét Tài khoản'
+ newuser: 'Tài khoản ở Cấp độ Tin tưởng 0 (Tài khoản mới)'
+ basic: 'Tài khoản ở Cấp độ Tin tưởng 1 (Tài khoản Cơ bản)'
+ member: 'Tài khoản ở Độ tin cậy mức 2 (Member)'
+ regular: 'Tài khoản ở Độ tin cậy mức 3 (Regular)'
+ leader: 'Tài khoản ở Độ tin cậy mức 4 (Leader)'
+ staff: "Nhân viên"
+ admins: 'Tài khoản Quản trị'
+ moderators: 'Điều hành viên'
+ blocked: 'Tài khoản Khóa'
+ suspended: 'Tài khoản Tạm khóa'
+ suspect: 'Tài khoản đáng ngờ'
+ reject_successful:
+ other: "Từ chối thành công %{count} tài khoản."
+ reject_failures:
+ other: "Từ chối thất bại %{count} tài khoản."
+ not_verified: "Chưa xác thực"
+ check_email:
+ title: "Khám phá email của tài khoản này"
+ text: "Hiển thị"
+ user:
+ suspend_failed: "Có gì đó đã sai khi đình chỉ tài khoản này {{error}}"
+ unsuspend_failed: "Có gì đó sai khi gỡ bỏ đình chỉ tài khoản này {{error}}"
+ suspend_duration: "Tài khoản này sẽ bị đình chỉ bao lâu?"
+ suspend_duration_units: "(ngày)"
+ suspend_reason_label: "Tại sao bạn bị đình chỉ? Dòng chữ hiển thị cho tất cả mọi người sẽ hiển thị trên trang hồ sơ tài khoản của người dùng này, và sẽ hiển thị cho thành viên khi họ đăng nhập, hãy viết ngắn."
+ suspend_reason: "Lý do"
+ suspended_by: "Tạm khóa bởi"
+ delete_all_posts: "Xóa tất cả bài viết"
+ delete_all_posts_confirm: "Bạn có chắc chắn muốn xóa %{posts} bài viết và %{topics} chủ đề?"
+ suspend: "Tạm khóa"
+ unsuspend: "Đã mở khóa"
+ suspended: "Đã tạm khóa?"
+ moderator: "Mod?"
+ admin: "Quản trị?"
+ blocked: "Đã khóa?"
+ staged: "Cấp bậc?"
+ show_admin_profile: "Quản trị"
+ edit_title: "Sửa Tiêu đề"
+ save_title: "Lưu Tiêu đề"
+ refresh_browsers: "Bắt buộc làm mới trình duyệt"
+ refresh_browsers_message: "Tin nhắn đã gửi cho tất cả người dùng!"
+ show_public_profile: "Hiển thị hồ sơ công khai"
+ impersonate: 'Mạo danh'
+ ip_lookup: "Tìm kiếm địa chỉ IP"
+ log_out: "Đăng suất"
+ logged_out: "Thành viên đã đăng xuất trên tất cả thiết bị"
+ revoke_admin: 'Thu hồi quản trị'
+ grant_admin: 'Cấp quản trị'
+ revoke_moderation: 'Thu hồi điều hành'
+ grant_moderation: 'Cấp điều hành'
+ unblock: 'Mở khóa'
+ block: 'Khóa'
+ reputation: Danh tiếng
+ permissions: Quyền
+ activity: Hoạt động
+ like_count: Đã like / Nhận
+ last_100_days: 'trong 100 ngày gần đây'
+ private_topics_count: Chủ đề riêng tư
+ posts_read_count: Đọc bài viết
+ post_count: Bài đăng đã được tạo
+ topics_entered: Chủ để đã xem
+ flags_given_count: Đã đánh dấu
+ flags_received_count: Flags Received
+ warnings_received_count: Đã nhận Cảnh báo
+ flags_given_received_count: 'Đã đánh dấu / Nhận'
+ approve: 'Duyệt'
+ approved_by: "duyệt bởi"
+ approve_success: "Thành viên được duyệt và đã gửi email hướng đẫn kích hoạt."
+ approve_bulk_success: "Thành công! Tất cả thành viên đã chọn được duyệt và thông báo."
+ time_read: "Thời gian đọc"
+ anonymize: "Tài khoản Nặc danh"
+ anonymize_confirm: "Bạn CHĂC CHẮN muốn xóa tài khoản nặc danh này? Nó sẽ thay đổi tên đăng nhập và email, và xóa tất cả thông tin trong hồ sơ."
+ anonymize_yes: "Đồng ý, đây là tài khoản nặc danh."
+ anonymize_failed: "Có vấn đề với những tài khoản nặc danh."
+ delete: "Xóa thành viên"
+ delete_forbidden_because_staff: "Admin và mod không thể xóa."
+ delete_posts_forbidden_because_staff: "Không thể xóa tất cả bài viết của quản trị và điều hành viên."
+ delete_forbidden:
+ other: "Không thể xóa tài khoản nếu họ có bài viết, hãy xóa tất cả các bài viết trước khi xóa tài khoản. (Không thể xóa các bài viết cũ hơn %{count} ngày.)"
+ cant_delete_all_posts:
+ other: "Không thể xóa tất cả các bài viết, một số bài viết cũ hơn %{count} ngày. (Thiết lập delete_user_max_post_age.)"
+ cant_delete_all_too_many_posts:
+ other: "Không thể xóa tất cả các bài viết do tài khoản có hơn %{count} bài viết. (delete_all_posts_max)"
+ delete_confirm: "Bạn CHẮC CHẮN muốn xóa thành viên này? Nó là vĩnh viễn!"
+ delete_and_block: "Xóa và khóa email này và địa chỉ IP"
+ delete_dont_block: "Chỉ xóa"
+ deleted: "Thành viên này đã bị xóa"
+ delete_failed: "Có lỗi trong quá trình xóa thành viên này. Chắc chắn rằng tất cả bài viết đã được xóa trước khi xóa thành viên."
+ send_activation_email: "Gửi email kích hoạt"
+ activation_email_sent: "Email kích hoạt đã được gửi."
+ send_activation_email_failed: "Có vấn đề khi gửi lại email kích hoạt. %{error}"
+ activate: "Kích hoạt tài khoản"
+ activate_failed: "Có vấn đề khi kích hoạt thành viên này."
+ deactivate_account: "Vô hiệu hóa Tài khoản"
+ deactivate_failed: "Có vấn đề khi bỏ kích hoạt thành viên này."
+ unblock_failed: 'Có vẫn đề khi gỡ khóa thành viên này.'
+ block_failed: 'Có vấn đề khi khóa thành viên này.'
+ block_confirm: 'Bạn có chắc chắn muốn chặn người dùng này? Họ sẽ không thể tạo bất kỳ chủ đề hoặc bài viết mới nào.'
+ block_accept: 'Có, chặn người dùng này'
+ deactivate_explanation: "Tài khoản chờ kích hoạt phải xác thực email của họ."
+ suspended_explanation: "Tài khoản tạm khóa không thể đăng nhập."
+ block_explanation: "Tài khoản bị khóa không thể đăng bài hoặc tạo chủ đề."
+ stage_explanation: "Người dùng có cấp bậc chỉ có thể gửi bài qua email trong các chủ đề cụ thể."
+ trust_level_change_failed: "Có lỗi xảy ra khi thay đổi mức độ tin tưởng của tài khoản."
+ suspend_modal_title: "Tạm khóa Thành viên"
+ trust_level_2_users: "Độ tin cậy tài khoản mức 2"
+ trust_level_3_requirements: "Độ tin cậy bắt buộc mức 3"
+ trust_level_locked_tip: "mức độ tin cậy đang khóa, hệ thống sẽ không thể thăng hoặc giáng chức người dùng"
+ trust_level_unlocked_tip: "độ tin cậy đang được mở, hệ thống có thể thăng hoặc giáng chức người dùng"
+ lock_trust_level: "Khóa Cấp độ Tin tưởng"
+ unlock_trust_level: "Mở khóa độ tin cậy"
+ tl3_requirements:
+ title: "Yêu cầu Cấp độ tin tưởng 3"
+ table_title: "Trong %{time_period} ngày qua:"
+ value_heading: "Giá trị"
+ requirement_heading: "Yêu cầu"
+ visits: "Lượt xem"
+ days: "ngày"
+ topics_replied_to: "Topics Replied To"
+ topics_viewed: "Đã xem chủ đề"
+ topics_viewed_all_time: "Đã xem chủ đề (mọi lúc)"
+ posts_read: "Đọc bài viết"
+ posts_read_all_time: "Đọc bài viết (mọi lúc)"
+ flagged_posts: "Đã gắn cờ Bài viết"
+ flagged_by_users: "Users Who Flagged"
+ likes_given: "Lượt Likes"
+ likes_received: "Likes Đã Nhận"
+ likes_received_days: "Like nhận được: ngày độc nhất"
+ likes_received_users: "Like nhận được: tài khoản độc nhất"
+ qualifies: "Đủ điều kiện cho độ tin cậy mức 3."
+ does_not_qualify: "Không đủ điều kiện cho độ tin cậy mức 3."
+ will_be_promoted: "Sẽ sớm được thăng chức."
+ will_be_demoted: "Sẽ sớm bị giáng chức."
+ on_grace_period: "Hiện đang trong khoảng thời gian gia hạn thăng chức, sẽ không thể giáng chức."
+ locked_will_not_be_promoted: "Mức độ tin cậy đang khóa, sẽ không thể thăng chức."
+ locked_will_not_be_demoted: "Mức độ tin cậy đang khóa, sẽ không thể giáng chức."
+ sso:
+ title: "Single Sign On"
+ external_id: "ID Bên ngoài"
+ external_username: "Tên đăng nhập"
+ external_name: "Tên"
+ external_email: "Email"
+ external_avatar_url: "URL Ảnh đại diện"
+ user_fields:
+ title: "Trường tài khoản"
+ help: "Thêm trường dữ liệu cho người dùng nhập."
+ create: "Tạo trường tài khoản"
+ untitled: "Không có tiêu đề"
+ name: "Tên Trường"
+ type: "Loại Trường"
+ description: "Trường mô tả"
+ save: "Lưu"
+ edit: "Sửa"
+ delete: "Xoá"
+ cancel: "Hủy"
+ delete_confirm: "Bạn muốn xóa trường thành viên?"
+ options: "Lựa chọn"
+ required:
+ title: "Bắt buộc lúc đăng ký?"
+ enabled: "bắt buộc"
+ disabled: "không bắt buộc"
+ editable:
+ title: "Có thể chỉnh sửa sau khi đăng ký?"
+ enabled: "có thể chỉnh sửa"
+ disabled: "không thể chỉnh sửa"
+ show_on_profile:
+ title: "Hiển thị trong hồ sơ công khai"
+ enabled: "hiển thị trong hồ sơ"
+ disabled: "không hiển thị trong hồ sơ"
+ field_types:
+ text: 'Nội dung chữ'
+ confirm: 'Xác nhận'
+ dropdown: "Xổ xuống"
+ site_text:
+ description: "Bạn có thể tùy chỉnh bất kỳ nội dung nào trên diễn đàn. Hãy bắt đầu bằng cách tìm kiếm dưới đây:"
+ search: "Tìm kiếm nội dung bạn muốn sửa"
+ title: 'Nội Dung Chữ'
+ edit: 'sửa'
+ revert: "Hoàn nguyên thay đổi"
+ revert_confirm: "Bạn có chắc chắn muốn hoàn nguyên các thay đổi?"
+ go_back: "Quay lại tìm kiếm"
+ recommended: "Bạn nên tùy biến các nội dung sau đây cho phù hợp với nhu cầu:"
+ show_overriden: 'Chỉ hiển thị chỗ ghi đè'
+ site_settings:
+ show_overriden: 'Chỉ hiện thị đã ghi đè'
+ title: 'Xác lập'
+ reset: 'trạng thái đầu'
+ none: 'không có gì'
+ no_results: "Không tìm thấy kết quả."
+ clear_filter: "Xóa"
+ add_url: "thêm URL"
+ add_host: "thêm host"
+ categories:
+ all_results: 'Tất cả'
+ required: 'Bắt buộc'
+ basic: 'Cài đặt cơ bản'
+ users: 'Thành viên'
+ posting: 'Đang đăng bài'
+ email: 'Email'
+ files: 'Tập tin'
+ trust: 'Độ tin tưởng'
+ security: 'Bảo mật'
+ onebox: "Onebox"
+ seo: 'SEO'
+ spam: 'Rác'
+ rate_limits: 'Rate Limits'
+ developer: 'Nhà phát triển'
+ embedding: "Embedding"
+ legal: "Legal"
+ uncategorized: 'Khác'
+ backups: "Sao lưu"
+ login: "Đăng nhập"
+ plugins: "Plugins"
+ user_preferences: "Tùy chỉnh Tài khoản"
+ badges:
+ title: Huy hiệu
+ new_badge: Thêm huy hiệu
+ new: Mới
+ name: Tên
+ badge: Huy hiệu
+ display_name: Tên Hiển thị
+ description: Mô tả
+ badge_type: Kiểu huy hiệu
+ badge_grouping: Nhóm
+ badge_groupings:
+ modal_title: Nhóm huy hiệu
+ granted_by: Cấp bởi
+ granted_at: Cấp lúc
+ reason_help: (Liên kết đến bài viết hoặc chủ đề)
+ save: Lưu
+ delete: Xóa
+ delete_confirm: Bạn có chắc chắn muốn xóa huy hiệu này?
+ revoke: Thu hồi
+ reason: Lý do
+ expand: Mở rộng …
+ revoke_confirm: Bạn có chắc chắn muốn thu hồi huy hiệu này?
+ edit_badges: Sửa huy hiệu
+ grant_badge: Cấp huy hiệu
+ granted_badges: Cấp huy hiệu
+ grant: Cấp
+ no_user_badges: "%{name} chưa được cấp bất kỳ huy hiệu nào."
+ no_badges: Không có huy hiệu có thể được cấp.
+ none_selected: "Chọn một huy hiệu để bắt đầu"
+ allow_title: Cho phép huy hiệu được sử dụng như là tên
+ multiple_grant: Có thể được cấp nhiều lần
+ listable: Hiện huy hiệu trên trang huy hiệu công khai
+ enabled: Bật huy hiệu
+ icon: Biểu tượng
+ image: Hình ảnh
+ icon_help: "Sử dụng Font Awesome class hoặc URL của ảnh"
+ query: Truy vấn huy hiệu (SQL)
+ target_posts: Truy vấn bài viết mục tiêu
+ auto_revoke: Chạy truy vấn hủy bỏ hàng ngày
+ show_posts: Hiện bài viết được cấp huy hiệu trên trang huy hiệu
+ trigger: Phát động
+ trigger_type:
+ none: "Cập nhật hàng ngày"
+ post_revision: "Khi người dùng sửa hoặc tạo bài viết"
+ trust_level_change: "Khi người dùng thay đổi mức độ tin cậy"
+ user_change: "Khi người dùng được sửa hoặc được tạo"
+ preview:
+ link_text: "Xem trước cấp huy hiệu"
+ plan_text: "Xem trước kế hoạch truy vấn"
+ modal_title: "Xem trước truy vấn huy hiệu"
+ sql_error_header: "Có lỗi xảy ra với truy vấn."
+ error_help: "Xem các liên kết sau đây để trợ giúp các truy vấn huy hiệu."
+ bad_count_warning:
+ header: "CẢNH BÁO!"
+ text: "Thiếu mẫu cấp độ huy hiệu, điều này xảy ra khi truy vấn huy hiệu trả về IDs tài khoản hoặc IDs bài viết không tồn tại. Điều này có thể gây ra kết quả bất ngờ sau này - hãy kiểm tra lại truy vấn của bạn lần nữa."
+ no_grant_count: "Không có huy hiệu nào được gán."
+ grant_count:
+ other: "%{count} huy hiệu đã được gán."
+ sample: "Ví dụ:"
+ grant:
+ with: %{username}
+ with_post: %{username} for post in %{link}
+ with_post_time: %{username} viết bài trong %{link} lúc %{time}
+ with_time: %{username} lúc %{time}
+ emoji:
+ title: "Emoji"
+ help: "Thêm emoji mới có sẵn cho tất cả mọi người. (MẸO: kéo & thả nhiều file cùng lúc)"
+ add: "Thêm emoji mới"
+ name: "Tên"
+ image: "Hình ảnh"
+ delete_confirm: "Bạn có chắc chắn muốn xóa emoji :%{name}:?"
+ embedding:
+ get_started: "Nếu bạn muốn nhúng Discourse trên một website khác, bắt đầu bằng cách thêm host."
+ confirm_delete: "Bạn muốn xóa host này?"
+ sample: "Sử dụng mã HTML sau vào website để tạo và nhúng các chủ đề. Thay thế REPLACE_ME với Canonical URL của trang bạn muốn nhúng."
+ title: "Nhúng"
+ host: "Cho phép Host"
+ edit: "sửa"
+ category: "Đăng vào Danh mục"
+ add_host: "Thêm Host"
+ settings: "Thiết lập nhúng"
+ feed_settings: "Cấu hình Feed"
+ feed_description: "Cung cấp RSS/ATOM cho website để cải thiện khả năng Discourse import nội dung của bạn."
+ crawling_settings: "Cấu hình Crawler"
+ crawling_description: "Khi Discourse tạo chủ đề cho các bài viết của bạn, nếu không có RSS/ATOM thì hệ thống sẽ thử phân tích nội dung HTML. Đôi khi có thể gặp khó khăn khi trích xuất nội dung, vì vậy hệ thống cung cấp khả năng chỉ định quy tắc CSS để giúp quá trình trích xuất dễ dàng hơn."
+ embed_by_username: "Tên thành viên để tạo chủ đề"
+ embed_post_limit: "Số lượng tối đa bài viết được nhúng"
+ embed_username_key_from_feed: "Key to pull discourse username from feed"
+ embed_truncate: "Cắt ngắn các bài viết được nhúng"
+ embed_whitelist_selector: "Bộ chọn các thành phần CSS được hỗ trợ khi nhúng"
+ embed_blacklist_selector: "CSS selector for elements that are removed from embeds"
+ feed_polling_enabled: "Nhập bài viết bằng RSS/ATOM"
+ feed_polling_url: "URL của RSS/ATOM để thu thập"
+ save: "Lưu thiết lập nhúng"
+ permalink:
+ title: "Liên kết cố định"
+ url: "URL"
+ topic_id: "ID Chủ đề"
+ topic_title: "Chủ đề"
+ post_id: "ID Bài viết"
+ post_title: "Bài viết"
+ category_id: "ID Danh mục"
+ category_title: "Danh mục"
+ external_url: "URL Bên ngoài"
+ delete_confirm: Bạn có chắc chắn muốn xóa liên kết tĩnh này?
+ form:
+ label: "Mới:"
+ add: "Thêm"
+ filter: "Tìm kiếm (URL hoặc External URL)"
+ lightbox:
+ download: "tải"
+ search_help:
+ title: 'Tìm giúp đỡ'
+ keyboard_shortcuts_help:
+ title: 'Phím tắt'
+ jump_to:
+ title: 'Chuyển đến'
+ home: 'g, h Trang chủ'
+ latest: 'g, l Cuối cùng'
+ new: 'g, n Mới'
+ unread: 'g, u Chưa đọc'
+ categories: 'g, c Danh mục'
+ top: 'g, t Trên'
+ bookmarks: 'g, b Đánh dấu'
+ profile: 'g, p Hồ sơ'
+ messages: 'g, m Tin nhắn'
+ navigation:
+ title: 'Điều hướng'
+ jump: '# Đến bài viết #'
+ back: 'u Quay lại'
+ up_down: 'k/j Move selection ↑ ↓'
+ open: 'o or Enter Mở chủ để đã chọn'
+ next_prev: 'shift+j/shift+k Next/previous section'
+ application:
+ title: 'Ứng dụng'
+ create: 'c Tạo mới chủ đề'
+ notifications: 'n Mở thông báo'
+ hamburger_menu: '= Mở menu mobile'
+ user_profile_menu: 'p Mở trình đơn thành viên'
+ show_incoming_updated_topics: '. Show updated topics'
+ search: '/ Tìm kiếm'
+ help: '? Mở trợ giúp bàn phím'
+ dismiss_new_posts: 'x, r Dismiss New/Posts'
+ dismiss_topics: 'x, t Bỏ qua bài viết'
+ log_out: 'shift+z shift+z Đăng xuất'
+ actions:
+ title: 'Hành động'
+ bookmark_topic: 'f Chuyển chủ đề đánh dấu'
+ pin_unpin_topic: 'shift+p Pin/Unpin bài viết'
+ share_topic: 'shift+s Chia sẻ bài viết'
+ share_post: 's Chia sẻ bài viết'
+ reply_as_new_topic: 't Trả lời như là một liên kết đến bài viết'
+ reply_topic: 'shift+r Trả lời bài viết'
+ reply_post: 'r Trả lời bài viết'
+ quote_post: 'q Trích dẫn bài viết'
+ like: 'l Thích bài viết'
+ flag: '! Đánh dấu bài viết'
+ bookmark: 'b Đánh dấu bài viết'
+ edit: 'e Sửa bài viết'
+ delete: 'd Xóa bài viết'
+ mark_muted: 'm, m Mute topic'
+ mark_regular: 'm, r Chủ đề thông thường (mặc định)'
+ mark_tracking: 'm, t Theo dõi chủ đề'
+ mark_watching: 'm, w theo dõi chủ đề'
+ badges:
+ earned_n_times:
+ other: "Đạt được huy hiệu này %{count} lần"
+ title: Huy hiệu
+ badge_count:
+ other: "%{count} Huy hiệu"
+ more_badges:
+ other: "+%{count} Thêm"
+ granted:
+ other: "%{count} được cấp"
+ select_badge_for_title: Chọn huy hiệu để sử dụng như là tên
+ none: "Tìm kiếm với Google
+
diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml
index 540d6654c54..a05c3ce697f 100644
--- a/config/locales/client.zh_CN.yml
+++ b/config/locales/client.zh_CN.yml
@@ -58,7 +58,7 @@ zh_CN:
almost_x_years:
other: "近%{count}年"
date_month: "MMMDo"
- date_year: "YY-MM-D"
+ date_year: "YY年MMM"
medium:
x_minutes:
other: "%{count}分钟"
@@ -81,6 +81,8 @@ zh_CN:
other: "%{count}月后"
x_years:
other: "%{count}年后"
+ previous_month: '上个月'
+ next_month: '下个月'
share:
topic: '分享本主题的链接'
post: '#%{postNumber} 楼'
@@ -91,6 +93,8 @@ zh_CN:
email: '用电子邮件发送这个链接'
action_codes:
split_topic: "于%{when}分割了该主题"
+ invited_user: "于%{when}邀请%{who}"
+ removed_user: "于%{when}移除%{who}"
autoclosed:
enabled: '于%{when}关闭'
disabled: '于%{when}开启'
@@ -111,6 +115,19 @@ zh_CN:
disabled: '于%{when}移除出列表'
topic_admin_menu: "主题管理操作"
emails_are_disabled: "所有的出站邮件已经被管理员全局禁用。将不发送任何邮件提醒。"
+ s3:
+ regions:
+ us_east_1: "美国东部(N. Virginia)"
+ us_west_1: "美国西部(N. California)"
+ us_west_2: "美国西部(Oregon)"
+ us_gov_west_1: "AWS GovCloud(美国)"
+ eu_west_1: "欧洲(Ireland)"
+ eu_central_1: "欧洲(Frankfurt)"
+ ap_southeast_1: "亚洲太平洋(Singapore)"
+ ap_southeast_2: "亚洲太平洋(Sydney)"
+ ap_northeast_1: "亚洲太平洋(Tokyo)"
+ ap_northeast_2: "亚洲太平洋(Seoul)"
+ sa_east_1: "南美(Sao Paulo)"
edit: '编辑本主题的标题和分类'
not_implemented: "非常抱歉,此功能暂时尚未实现!"
no_value: "否"
@@ -142,22 +159,25 @@ zh_CN:
more: "更多"
less: "更少"
never: "从未"
+ every_30_minutes: "每半小时"
+ every_hour: "每小时"
daily: "每天"
weekly: "每周"
every_two_weeks: "每两周"
every_three_days: "每三天"
- max_of_count: "最多 {{count}}"
+ max_of_count: "不超过 {{count}}"
alternation: "或"
character_count:
other: "%{count} 个字符"
suggested_topics:
title: "推荐主题"
+ pm_title: "推荐消息"
about:
simple_title: "关于"
title: "关于%{title}"
stats: "站点统计"
- our_admins: "我们的管理员们"
- our_moderators: "我们的版主们"
+ our_admins: "我们的管理员"
+ our_moderators: "我们的版主"
stat:
all_time: "所有时间内"
last_7_days: "7 天以内"
@@ -168,7 +188,7 @@ zh_CN:
user_count: "新用户"
active_user_count: "活跃用户"
contact: "联系我们"
- contact_info: "在遇到影响站点的重大错误或者紧急事件时,请通过 %{contact_info} 联系我们。"
+ contact_info: "当有重大或者紧急事件时,请通过 %{contact_info} 联系我们。"
bookmarked:
title: "书签"
clear_bookmarks: "删除书签"
@@ -183,7 +203,7 @@ zh_CN:
remove: "删除书签"
confirm_clear: "你确定要删除该主题的所有书签吗?"
topic_count_latest:
- other: "{{count}} 个新主题或更新的主题。"
+ other: "{{count}} 个近期的主题或更新的主题。"
topic_count_unread:
other: "{{count}} 未读主题。"
topic_count_new:
@@ -200,18 +220,18 @@ zh_CN:
uploaded: "上传完成!"
enable: "启用"
disable: "禁用"
- undo: "重做"
+ undo: "重置"
revert: "撤销"
failed: "失败"
switch_to_anon: "匿名模式"
switch_from_anon: "退出匿名模式"
banner:
close: "隐藏横幅。"
- edit: "编辑横幅>>"
+ edit: "编辑该横幅 >>"
choose_topic:
none_found: "没有找到主题。"
title:
- search: "通过名称、URL 或者 ID,搜索主题:"
+ search: "通过名称、URL 或者 ID 搜索主题:"
placeholder: "在此输入主题标题"
queue:
topic: "主题:"
@@ -226,7 +246,7 @@ zh_CN:
has_pending_posts:
other: "这个主题有 {{count}} 个帖子等待审核"
confirm: "保存修改"
- delete_prompt: "你确定要删除%{username}?这将删除他们的所有帖子并封禁这个邮箱和 IP 地址。"
+ delete_prompt: "你确定要删除%{username}吗?这将删除他们的所有帖子并封禁这个邮箱和 IP 地址。"
approval:
title: "帖子需要审核"
description: "我们已经保存了你的帖子,不过帖子需要由管理员先审核才能显示。请耐心。"
@@ -267,13 +287,25 @@ zh_CN:
total_rows:
other: "%{count} 位用户"
groups:
+ empty:
+ posts: "此小组的成员没有发表过帖子。"
+ members: "此小组没有成员。"
+ mentions: "此小组没有被提及过。"
+ messages: "此小组没有发送过消息。"
+ topics: "此小组的成员没有发表过主题。"
+ add: "添加"
+ selector_placeholder: "添加成员"
+ owner: "所有者"
visible: "群组对所有用户可见"
title:
other: "群组"
members: "成员"
+ topics: "主题"
posts: "帖子"
+ mentions: "提及"
+ messages: "消息"
alias_levels:
- title: "谁能把组名作为别名?"
+ title: "谁能给这个小组发送消息和@提醒?"
nobody: "无人"
only_admins: "仅管理员"
mods_and_admins: "仅版主与管理员"
@@ -282,6 +314,19 @@ zh_CN:
trust_levels:
title: "当这些用户加入时,信任等级将自动赋予给他们:"
none: "无"
+ notifications:
+ watching:
+ title: "关注"
+ description: "你将会在该消息中的每个新帖子发布后收到通知,并且会显示新回复数量。"
+ tracking:
+ title: "追踪"
+ description: "你会在别人@你或回复你时收到通知,并且新帖数量也将在这些主题后显示。"
+ regular:
+ title: "普通"
+ description: "如果某人@你或者回复你,你将收到通知。"
+ muted:
+ title: "忽略"
+ description: "你不会收到组内关于新主题中的任何通知。"
user_action_groups:
'1': "给赞"
'2': "被赞"
@@ -291,7 +336,6 @@ zh_CN:
'6': "回应"
'7': "提到"
'9': "引用"
- '10': "星标"
'11': "编辑"
'12': "发送条目"
'13': "收件箱"
@@ -301,6 +345,7 @@ zh_CN:
all_subcategories: "全部"
no_subcategory: "无"
category: "分类"
+ category_list: "显示分类列表"
reorder:
title: "重排序分类"
title_long: "重新排序分类列表"
@@ -355,16 +400,15 @@ zh_CN:
invited_by: "邀请者为"
trust_level: "用户级别"
notifications: "通知"
+ statistics: "统计"
desktop_notifications:
label: "桌面通知"
not_supported: "通知功能暂不支持该浏览器。抱歉。"
perm_default: "启用通知"
perm_denied_btn: "拒绝授权"
- perm_denied_expl: "你拒绝了通知权限。在你的浏览器中允许启用通知,然后再点击按钮。(桌面:点击最左边的图标。移动设备:“站点设置”。)"
+ perm_denied_expl: "你拒绝了通知提醒的权限。设置浏览器允许通知提醒。"
disable: "禁用通知"
- currently_enabled: "(目前已启用)"
enable: "启用通知"
- currently_disabled: "(目前已禁用)"
each_browser_note: "注意:你必须在任何你使用的浏览器中更改这项设置。"
dismiss_notifications: "标记所有为已读"
dismiss_notifications_tooltip: "标记所有未读通知为已读"
@@ -388,7 +432,7 @@ zh_CN:
tracked_categories: "已追踪"
tracked_categories_instructions: "你将会自动追踪这些分类中的所有新主题。新帖数量将在每个主题后显示。"
muted_categories: "已屏蔽"
- muted_categories_instructions: "你不会收到这些分类的新主题的任何通知,他们也不会出现在你的未读标签中。"
+ muted_categories_instructions: "你不会收到这些分类中的任何新主题通知,并且他们将不会出现在最新列表中。"
delete_account: "删除我的帐号"
delete_account_confirm: "你真的要永久删除自己的账号吗?删除之后无法恢复!"
deleted_yourself: "你的帐号已被成功删除。"
@@ -398,16 +442,25 @@ zh_CN:
users: "用户"
muted_users: "忽略"
muted_users_instructions: "禁止任何关于这些用户的通知。"
+ muted_topics_link: "显示已忽略的主题"
+ automatically_unpin_topics: "当我完整阅读了主题时自动解除置顶。"
staff_counters:
- flags_given: "有效标记"
- flagged_posts: "被报告的帖子"
- deleted_posts: "删除的帖子"
+ flags_given: "有用的标记"
+ flagged_posts: "被标记的帖子"
+ deleted_posts: "已删除的帖子"
suspensions: "禁用的"
warnings_received: "警告"
messages:
all: "所有"
- mine: "我的"
- unread: "未读"
+ inbox: "收件箱"
+ sent: "已发送"
+ archive: "存档"
+ groups: "我的小组"
+ bulk_select: "选择消息"
+ move_to_inbox: "移动到收件箱"
+ move_to_archive: "存档"
+ failed_to_move: "移动选中消息失败(可能你的网络出问题了)"
+ select_all: "全选"
change_password:
success: "(电子邮件已发送)"
in_progress: "(正在发送电子邮件)"
@@ -439,7 +492,7 @@ zh_CN:
upload_title: "上传图片"
upload_picture: "上传图片"
image_is_not_a_square: "注意:我们已经裁剪了你的图片;它不是正方形的。"
- cache_notice: "你已经成功地改变了你的个人头像,但是鉴于浏览器缓存可能要一段时间才能生效。"
+ cache_notice: "你已经成功地修改了你的个人头像,但是鉴于浏览器缓存可能需要一段时间才会生效。"
change_profile_background:
title: "个人资料背景"
instructions: "个人资料背景将被居中,且默认宽度为 850px。"
@@ -452,21 +505,20 @@ zh_CN:
ok: "我们将邮件跟你确认"
invalid: "请填写正确的电子邮箱地址"
authenticated: "你的电子邮箱已经被 {{provider}} 验证了。"
+ frequency_immediately: "如果你没有阅读过我们想寄给你的内容,我们会立即发送电子邮件给你。"
frequency:
- zero: "如果你没有阅读过我们想寄给你的内容,我们会立即发送电子邮件给你。"
- one: "如果你很久都没有出现了,我们才会发送电子邮件给你。"
other: "我们只会在你最近 {{count}} 分钟内没有访问时才会发送电子邮件给你。"
name:
- title: "名字"
- instructions: "你的全名(可选)"
+ title: "昵称"
+ instructions: "你的昵称(可选)"
instructions_required: "你的全名"
- too_short: "你设置的名字太短了"
- ok: "你的名字符合要求"
+ too_short: "你设置的昵称太短了"
+ ok: "你的昵称符合要求"
username:
title: "用户名"
instructions: "唯一,没有空格,简短"
short_instructions: "其他人可以用 @{{username}} 来提及你"
- available: "你的用户名可用"
+ available: "你可以用这个用户名"
global_match: "电子邮箱与注册用户名相匹配"
global_mismatch: "已被注册。试试 {{suggestion}} ?"
not_available: "不可用。试试 {{suggestion}} ?"
@@ -491,17 +543,34 @@ zh_CN:
title: "用户资料徽章"
website: "网站"
email_settings: "电子邮箱"
+ like_notification_frequency:
+ title: "通知用户赞的消息"
+ always: "始终"
+ first_time_and_daily: "每天第一个被赞帖子"
+ first_time: "第一个被赞的帖子"
+ never: "从不"
+ email_previous_replies:
+ title: "包括邮件底下的以前的回复"
+ unless_emailed: "除非曾经发送过"
+ always: "总是"
+ never: "从不"
email_digests:
title: "当我不访问时,向我的邮箱发送最新信息:"
+ every_30_minutes: "每半小时"
+ every_hour: "每小时"
daily: "每天"
every_three_days: "每三天"
weekly: "每周"
every_two_weeks: "每两周"
+ include_tl0_in_digests: "在摘要邮件中包含新用户的帖子"
+ email_in_reply_to: "在邮件中包含回复的摘要文本"
email_direct: "当有人引用我、回复我的帖子,@提及你或邀请你至主题时发送一封邮件给我"
email_private_messages: "当有人给发消息给我时发送一封邮件给我"
email_always: "即使我在论坛中活跃时也发送电子邮件提醒给我"
other_settings: "其它"
categories_settings: "分类"
+ enable_mailing_list:
+ other: "你确定你想收到每一个新帖子的邮件吗?
每天你大约会收到 {{count}} 封邮件。"
new_topic_duration:
label: "近期主题的条件:"
not_viewed: "我还没有浏览它们"
@@ -527,7 +596,8 @@ zh_CN:
user: "邀请用户"
sent: "已发送"
none: "没有未接受状态的邀请。"
- truncated: "只显示前 {{count}} 个邀请。"
+ truncated:
+ other: "只显示前·{{count}}个邀请。"
redeemed: "确认邀请"
redeemed_tab: "已确认"
redeemed_tab_with_count: "已确认({{count}})"
@@ -562,6 +632,31 @@ zh_CN:
same_as_email: "你的密码与电子邮箱相同。"
ok: "你设置的密码符合要求。"
instructions: "至少需要 %{count} 个字符。"
+ summary:
+ title: "概要"
+ stats: "统计"
+ time_read: "阅读时间"
+ topic_count:
+ other: "创建的主题"
+ post_count:
+ other: "创建的帖子"
+ likes_given:
+ other: "给赞"
+ likes_received:
+ other: "被赞"
+ days_visited:
+ other: "访问天数"
+ posts_read:
+ other: "阅读过的帖子"
+ top_replies: "热门回复"
+ no_replies: "暂无回复。"
+ more_replies: "更多回复"
+ top_topics: "热门帖子"
+ no_topics: "暂无主题。"
+ more_topics: "更多主题"
+ top_badges: "热门勋章"
+ no_badges: "暂无徽章。"
+ more_badges: "更多徽章"
associated_accounts: "登录"
ip_address:
title: "最后使用的 IP 地址"
@@ -587,26 +682,34 @@ zh_CN:
server: "服务器错误"
forbidden: "访问被阻止"
unknown: "错误"
+ not_found: "没有找到网页"
desc:
network: "请检查你的网络连接。"
network_fixed: "似乎恢复正常了。"
server: "错误代码:{{status}}"
forbidden: "你没有权限读这个。"
+ not_found: "噢!程式要加载的URL并不存在。"
unknown: "出错了。"
buttons:
back: "返回"
again: "再试一次"
fixed: "载入页面"
close: "关闭"
- assets_changed_confirm: "此网页刚刚更新. 刷新查看新版本?"
+ assets_changed_confirm: "网站刚刚更新了。刷新使用新版本?"
logout: "你已登出。"
refresh: "刷新"
read_only_mode:
- enabled: "只读模式已启用。你可以继续浏览这个站点但是无法进行交互操作。"
+ enabled: "站点正处于只读模式。你可以继续浏览,但是回复、赞和其他操作暂时被禁用。"
login_disabled: "只读模式下不允许登录。"
+ logout_disabled: "站点在只读模式下无法登出。"
too_few_topics_and_posts_notice: "让我们开始讨论!目前有 %{currentTopics} / %{requiredTopics} 个主题和 %{currentPosts} / %{requiredPosts} 个帖子。新访客需要能够阅读和回复一些讨论。"
too_few_topics_notice: "让我们开始讨论!目前有 %{currentTopics} / %{requiredTopics} 个主题。新访客需要能够阅读和回复一些讨论。"
too_few_posts_notice: "让我们开始讨论!目前有 %{currentPosts} / %{requiredPosts} 个帖子。新访客需要能够阅读和回复一些讨论。"
+ logs_error_rate_notice:
+ reached: "%{timestamp}:目前的错误率 %{rate} 已经达到了站点设置中的 %{siteSettingRate}。"
+ exceeded: "%{timestamp}:目前的错误率 %{rate} 已经超出了站点设置中的 %{siteSettingRate}。"
+ rate:
+ other: "%{count} 错误/%{duration}"
learn_more: "了解更多..."
year: '年'
year_desc: '365 天以前创建的主题'
@@ -625,27 +728,19 @@ zh_CN:
signup_cta:
sign_up: "注册"
hide_session: "明天提醒我"
- hide_forever: "不,谢谢"
+ hide_forever: "不了"
hidden_for_session: "好的,我会在明天提醒你。不过你任何时候都可以使用“登录”来创建账户。"
intro: "你好!:heart_eyes: 看起来你挺喜欢这个讨论,但是你还没有注册账户。"
- value_prop: "当你创建了账户,我们能准确地追踪你的阅读进度,所以你能够在下一次访问时知道你读过了什么。你也可以收到网页和邮件通知,特别是有新帖子的时候。并且你可以赞任何帖子来分享你的感谢。:heartbeat:"
- methods:
- sso: "注册很容易:你只要在主站点建立一个账户。"
- only_email: "注册很容易:只需要一个邮箱和密码。"
- only_other: "使用%{provider}的账号注册。"
- one_and_email: "使用%{provider}的账号,或者邮箱和密码来注册。"
- multiple_no_email: "注册很容易:使用我们提供的 %{count} 种第三方登录方式。"
- multiple: "注册很容易:使用我们提供的 %{count} 种第三方登录方式,或是邮箱和密码。"
- unknown: "不支持的登录方法"
+ value_prop: "当你创建了账户,我们能准确地追踪你的阅读进度,所以你能够在下一次访问时回到你上次阅读到的地方。你也可以在有新帖子的时候收到网页和邮件通知。并且你可以赞任何帖子来分享你的感谢。:heartbeat:"
summary:
enabled_description: "你正在查看这个主题的概括版本:由社群认定的最有意思的帖子。"
- description: "有 {{count}} 个回复。"
- description_time: "主题有 {{count}} 个回复,大约要花 {{readingTime}} 分钟阅读。"
+ description: "有 {{replyCount}} 个回复。"
+ description_time: "有 {{replyCount}} 个回复,大约要花 {{readingTime}} 分钟阅读。"
enable: '概括本主题'
disable: '显示所有帖子'
deleted_filter:
enabled_description: "这个主题包含已删除的帖子,他们已经被隐藏。"
- disabled_description: "主题中被删除的帖子已显示。"
+ disabled_description: "显示了主题中已删除的帖子。"
enable: "隐藏已删除的帖子"
disable: "显示已删除的帖子"
private_message_info:
@@ -694,6 +789,9 @@ zh_CN:
admin_not_allowed_from_ip_address: "你不能从这个 IP 地址以管理员身份登录。"
resend_activation_email: "点击此处重新发送激活邮件。"
sent_activation_email_again: "我们在 {{currentEmail}} 又发送了一封激活邮件给你,邮件送达可能需要几分钟;请检查一下你邮箱的垃圾邮件文件夹。"
+ to_continue: "请先登录"
+ preferences: "你需要登录才能更改用户设置。"
+ forgot: "我记不得账号详情了"
google:
title: "使用 Google 帐号登录"
message: "正使用 Google 帐号验证登录(请确保浏览器没有禁止弹出窗口)"
@@ -703,6 +801,9 @@ zh_CN:
twitter:
title: "使用 Twitter 帐号登录"
message: "正使用 Twitter 帐号验证登录(请确保浏览器没有禁止弹出窗口)"
+ instagram:
+ title: "用 Instagram 登录"
+ message: "使用 Instagram 帐号验证登录(请确保浏览器没有禁止弹出窗口)"
facebook:
title: "使用 Facebook 帐号登录"
message: "正使用 Facebook 帐号验证登录(请确保浏览器没有禁止弹出窗口)"
@@ -716,8 +817,13 @@ zh_CN:
google: "Google"
twitter: "Twitter"
emoji_one: "Emoji One"
+ shortcut_modifier_key:
+ shift: 'Shift'
+ ctrl: 'Ctrl'
+ alt: 'Alt'
composer:
- emoji: "Emoji :smile:"
+ emoji: "Emoji :)"
+ more_emoji: "更多…"
options: "选项"
whisper: "密语"
add_warning: "这是一个正式的警告。"
@@ -728,6 +834,7 @@ zh_CN:
saved_local_draft_tip: "已本地保存"
similar_topics: "你的主题有些类似于..."
drafts_offline: "离线草稿"
+ group_mentioned: "使用{{group}},你可以通知{{count}}人。"
error:
title_missing: "缺少标题"
title_too_short: "标题太短,至少 {{min}} 个字符"
@@ -750,7 +857,7 @@ zh_CN:
show_edit_reason: "(添加编辑理由)"
reply_placeholder: "正文。使用 Markdown、BBCode 或 HTML 格式化内容。拖拽或粘贴图片。"
view_new_post: "浏览你的新帖子。"
- saving: "保存中..."
+ saving: "保存中"
saved: "已保存!"
saved_draft: "帖子还没写完,点击继续"
uploading: "上传中..."
@@ -765,6 +872,7 @@ zh_CN:
link_description: "在此输入链接描述"
link_dialog_title: "插入链接"
link_optional_text: "可选标题"
+ link_placeholder: "http://example.com \"可选文字\""
quote_title: "引用"
quote_text: "引用"
code_title: "预格式化文本"
@@ -777,10 +885,11 @@ zh_CN:
heading_title: "标题"
heading_text: "标题头"
hr_title: "分割线"
- undo_title: "撤销"
- redo_title: "重做"
help: "Markdown 编辑帮助"
toggler: "隐藏或显示编辑面板"
+ modal_ok: "确认"
+ modal_cancel: "取消"
+ cant_send_pm: "抱歉,你不能向 %{username} 发送私信。"
admin_options_title: "本主题可选设置"
auto_close:
label: "自动关闭主题时间:"
@@ -795,13 +904,17 @@ zh_CN:
title: "使用@名字提及到你,回复你的帖子和主题,消息等等的通知消息"
none: "现在无法载入通知"
more: "浏览以前的通知"
- total_flagged: "被报告帖子的总数"
+ total_flagged: "被标记帖子的总数"
mentioned: "
{{username}} {{description}}
" + group_mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" + liked_2: "
{{username}}、{{username2}} {{description}}
" + liked_many: + other: "
{{username}}、{{username2}}和其他 {{count}} 人{{description}}
" private_message: "
{{username}} {{description}}
" invited_to_private_message: "
{{username}} {{description}}
" invited_to_topic: "
{{username}} {{description}}
" @@ -809,6 +922,8 @@ zh_CN: moved_post: "
{{username}} 移动了 {{description}}
" linked: "
{{username}} {{description}}
" granted_badge: "
获得“{{description}}”
" + group_message_summary: + other: "
{{count}} 条消息在你的{{group_name}}组内的收件箱中
" alt: mentioned: "被提及" quoted: "被引用" @@ -823,8 +938,10 @@ zh_CN: moved_post: "你的帖子被移动自" linked: "链接至你的帖子" granted_badge: "勋章授予" + group_message_summary: "在群组收件箱中的消息" popup: mentioned: '{{username}}在“{{topic}}”提到了你 - {{site_title}}' + group_mentioned: '{{username}}在“{{topic}}”提到了你 - {{site_title}}' quoted: '{{username}}在“{{topic}}”引用了你的帖子 - {{site_title}}' replied: '{{username}}在“{{topic}}”回复了你 - {{site_title}}' posted: '{{username}}在“{{topic}}”中发布了帖子 - {{site_title}}' @@ -836,9 +953,9 @@ zh_CN: from_my_computer: "来自我的设备" from_the_web: "来自网络" remote_tip: "图片链接" - remote_tip_with_attachments: "图片或文件链接({{authorized_extensions}})" + remote_tip_with_attachments: "链接到图片或文件 {{authorized_extensions}}" local_tip: "从你的设备中选择图片" - local_tip_with_attachments: "从你的设备中选择图片或文件({{authorized_extensions}})" + local_tip_with_attachments: "从你的设备 {{authorized_extensions}} 选择图片或文件" hint: "(你也可以通过拖放至编辑器的方式来上传)" hint_for_supported_browsers: "你也可以通过拖放或复制粘帖至编辑器" uploading: "上传中" @@ -872,12 +989,14 @@ zh_CN: current_user: '去你的用户页面' topics: bulk: + unlist_topics: "未在列表上的主题" reset_read: "设为未读" delete: "删除主题" - dismiss_posts: "忽略帖子" - dismiss_posts_tooltip: "清除这些帖子的未读计数但当有新帖子时在我的未读列表中继续显示他们" - dismiss_topics: "忽略主题" - dismiss_topics_tooltip: "停止当有新帖子时在我的未读列表中显示这些主题" + dismiss: "忽略" + dismiss_read: "忽略所有未读" + dismiss_button: "忽略..." + dismiss_tooltip: "仅忽略新帖子或停止跟踪主题" + also_dismiss_topics: "停止跟踪这些主题它们将不再作为未读给我显示" dismiss_new: "设为已读" toggle: "切换批量选择" actions: "批量操作" @@ -889,7 +1008,7 @@ zh_CN: selected: other: "你已经选择了 {{count}}个主题" none: - unread: "你没有未阅主题。" + unread: "你没有未读主题。" new: "你没有新主题可读。" read: "你尚未阅读任何主题。" posted: "你尚未在任何主题中发帖。" @@ -900,8 +1019,8 @@ zh_CN: top: "没有最佳主题。" search: "没有搜索结果。" educate: - new: '
近期的主题将在这里显示。
默认情况下,近两天创建的主题是近期主题,并会显示一个新的标识。
你可以在你的设置中改变这一行为。
' - unread: '
这里是你的未读主题。
默认情况下,下述主题将被认为是未读的,并会显示未读数目:1 如果你:
或者你在主题底部的通知控制中选择了追踪或监视。
你可以改变你的用户设置。
' + new: '
这里显示了对于你的近期主题。
默认情况下,下述主题将被放在近期中。如果他们是这 2 天内创建的,还会显示一个近期标志。
访问你的用户设置修改。
' + unread: '
这里显示了你的未读主题。
默认情况下,下述主题会被放在未读中。并且会在旁边显示未读的数量1。如果你:
或者你在主题底部的通知控制中选择了追踪或监视。
访问你的用户设置修改未读设置。
' bottom: latest: "没有更多主题可看了。" hot: "没有更多热门主题可看了。" @@ -919,8 +1038,14 @@ zh_CN: change_notification_state: "您现在的提醒状态是" filter_to: "本主题中的 {{post_count}} 帖" create: '新主题' - create_long: '创建一个新主题' + create_long: '创作新主题' private_message: '发送消息' + archive_message: + help: '移动消息到存档' + title: '存档' + move_to_inbox: + title: '移动到收件箱' + help: '移动消息到收件箱' list: '主题' new: '新主题' unread: '未读' @@ -951,7 +1076,7 @@ zh_CN: options: "主题选项" show_links: "显示此主题中的链接" toggle_information: "切换主题详细" - read_more_in_category: "想阅读更多内容?浏览 {{catLink}} 或 {{latestLink}} 里的其它主题。" + read_more_in_category: "想阅读更多内容?浏览 {{catLink}}或{{latestLink}}里的其它主题。" read_more: "想阅读更多内容?{{catLink}} 或 {{latestLink}}。" read_more_MF: "还有 { UNREAD, plural, =0 {} one { 1 个未读主题} other { # 个未读主题 } } { NEW, plural, =0 {} one { {BOTH, select, true{和 } false {} other{}} 1 个新主题} other { {BOTH, select, true{和 } false {} other{}} # 个新主题} }可以阅读,或者{CATEGORY, select, true {浏览{catLink}中的其他主题} false {{latestLink}} other {}}" browse_all_categories: 浏览所有分类 @@ -965,6 +1090,7 @@ zh_CN: auto_close_title: '自动关闭设置' auto_close_save: "保存" auto_close_remove: "不要自动关闭该主题" + auto_close_immediate: "主题中的上个帖子是 %{hours} 小时前发出的,所以主题将会立即关闭。" progress: title: 主题进度 go_top: "顶部" @@ -985,7 +1111,7 @@ zh_CN: '2_8': '因为你在追踪此分类,所以你将收到相关通知。' '2_4': '因为你在此主题内发表了回复,所以你将收到相关通知。' '2_2': '因为你在追踪此主题,所以你将收到相关通知。' - '2': '因为你阅读了此主题,所以你将收到相关通知。' + '2': '因为你阅读了该主题,所以你将收到相关通知。' '1_2': '如果某人@你或者回复你,你将收到通知。' '1': '如果某人@你或者回复你,你将收到通知。' '0_7': '你将忽略关于此分类的所有通知。' @@ -1010,11 +1136,11 @@ zh_CN: title: "普通" description: "如果某人@你或者回复你,你将收到通知。" muted_pm: - title: "防打扰" + title: "忽略" description: "你不会收到关于此消息的任何通知。" muted: - title: "防打扰" - description: "你不会收到关于此主题的任何通知,也不会在你的未阅选项卡中显示。" + title: "忽略" + description: "你将不会再收到这个主题的任何通知,也不会出现在最新列表中。" actions: recover: "撤销删除主题" delete: "删除主题" @@ -1045,36 +1171,33 @@ zh_CN: title: '分享' help: '分享一个到本帖的链接' flag_topic: - title: '报告' - help: '私下报告本帖以引起注意或者发送一条匿名通知' - success_message: '你已成功报告本帖。' + title: '标记' + help: '私下标记本帖以引起注意或者发送一条匿名通知' + success_message: '你已经成功标记该主题。' feature_topic: - title: "设为精华主题" + title: "聚焦该主题" pin: "将该主题置于{{categoryLink}}分类最上方至" confirm_pin: "你已经有了{{count}}个置顶主题。太多的置顶主题可能会困扰新用户和访客。你确定想要在该分类再置顶一个主题么?" unpin: "从{{categoryLink}}分类最上方移除主题。" unpin_until: "从{{categoryLink}}分类最上方移除主题或者延迟至%{until}。" pin_note: "用户可以给自己解除置顶主题。" pin_validation: "置顶该主题需要一个日期。" + not_pinned: "{{categoryLink}}没有置顶主题。" already_pinned: - zero: "{{categoryLink}}没有置顶主题。" - one: "现在置顶在{{categoryLink}}分类的主题:1。" - other: "现在置顶在{{categoryLink}}分类的主题:{{count}}。" + other: "现在置顶在{{categoryLink}}分类的主题:{{count}}" pin_globally: "将主题置于所有主题列表最上方至" confirm_pin_globally: "你已经有了{{count}}个全局置顶主题。太多的置顶主题可能会困扰新用户和访客。你确定想要再全局置顶一个主题么?" unpin_globally: "将主题从所有主题列表的最上方移除。" unpin_globally_until: "从所有主题列表最上方移除主题或者延迟至%{until}。" global_pin_note: "用户可以自己解除主题状态。" + not_pinned_globally: "没有全局置顶的主题。" already_pinned_globally: - zero: "没有全局置顶的主题。" - one: "现在全局置顶的主题:1。" - other: "现在全局置顶的主题:{{count}}。" + other: "现在全局置顶的主题:{{count}}" make_banner: "将主题置为所有页面顶端的横幅主题。" remove_banner: "移除所有页面顶端的横幅主题。" banner_note: "用户能点击关闭隐藏横幅。一次只能有一个横幅主题。" - already_banner: - zero: "没有横幅主题。" - one: "当前有一个横幅主题。" + no_banner_exists: "没有横幅主题。" + banner_exists: "当前有一个横幅主题。" inviting: "邀请中..." automatically_add_to_groups_optional: "这个邀请也包括了这些群组的权限:(可选,仅管理员)" automatically_add_to_groups_required: "这个邀请也包括了访问这些群组的权限:(可选,仅管理员)" @@ -1086,6 +1209,7 @@ zh_CN: success: "我们已经邀请了该用户加入这个消息交流。" error: "抱歉,在邀请该用户时发生了错误。" group_name: "群组名" + controls: "主题控制" invite_reply: title: ' 邀请' username_placeholder: "用户名" @@ -1158,7 +1282,7 @@ zh_CN: show_full: "显示所有帖子" show_hidden: '查看隐蔽内容' deleted_by_author: - other: "(帖子被作者撤销,如无标记,将在 %{count} 小时后被自动删除)" + other: "(帖子被作者撤销,如过没有标记,将在 %{count} 小时后被自动删除)" expand_collapse: "展开/折叠" gap: other: "查看 {{count}} 个隐藏回复" @@ -1170,9 +1294,8 @@ zh_CN: other: "{{count}} 赞" has_likes_title: other: "{{count}} 人赞了该贴" + has_likes_title_only_you: "你赞了该贴" has_likes_title_you: - zero: "你赞了该贴" - one: "你和其他 1 人赞了该贴" other: "你和其他 {{count}} 人赞了该贴" errors: create: "抱歉,在创建你的帖子时发生了错误。请重试。" @@ -1193,82 +1316,81 @@ zh_CN: via_email: "通过电子邮件发送的帖子" whisper: "这个帖子是只对版主可见的密语" wiki: - about: "这个帖子是维基;基础用户能编辑它" + about: "这个帖子是维基" archetypes: save: '保存选项' + few_likes_left: "感谢你的赞!你今天只能再多赞几次了。" controls: reply: "开始给本帖撰写回复" - like: "赞本帖" + like: "点个赞" has_liked: "你已经赞了本帖" undo_like: "撤销赞" edit: "编辑本帖" edit_anonymous: "抱歉,但是你需要登录后才能编辑该贴。" - flag: "私下报告本帖以提醒管理人员关注或发送私信通知" + flag: "私下标记本帖以提醒管理人员关注或发送私信通知" delete: "删除本帖" undelete: "恢复本帖" share: "分享一个到本帖的链接" more: "更多" delete_replies: confirm: - other: "你也想要删除 {{count}} 个直接回复这个帖子的回复么?" - yes_value: "是,删除回复" + other: "你也想要删除 {{count}} 个回复这个帖子的相关帖子么?" + yes_value: "是,一并删除相关回复" no_value: "否,仅删除该帖" admin: "帖子管理" wiki: "使其成为维基帖子" unwiki: "使其成为普通帖子" - convert_to_moderator: "增加职员颜色" - revert_to_regular: "移除职员颜色" + convert_to_moderator: "添加管理人员颜色标识" + revert_to_regular: "移除管理人员颜色标识" rebake: "重建 HTML" unhide: "显示" + change_owner: "更改所有权" actions: - flag: '报告' + flag: '标记' defer_flags: - other: "推迟的标记" + other: "推迟处理标记" it_too: - off_topic: "同时报告" - spam: "同时报告" - inappropriate: "同时报告" - custom_flag: "同时报告" + off_topic: "一起标记" + spam: "一起标记" + inappropriate: "一起标记" + custom_flag: "一起标记" bookmark: "同时添加书签" like: "赞" vote: "同时投票支持" undo: - off_topic: "撤销报告" - spam: "撤销报告" - inappropriate: "撤销报告" + off_topic: "撤回标记" + spam: "撤回报告" + inappropriate: "撤回报告" bookmark: "撤销书签" like: "撤销赞" vote: "撤销投票" people: - off_topic: "{{icons}} 标记为偏离主题" - spam: "{{icons}} 标记为垃圾" - spam_with_url: "{{icons}} 标记为垃圾信息" - inappropriate: "{{icons}} 标记此为不当内容" - notify_moderators: "{{icons}} 向版主报告它" - notify_moderators_with_url: "{{icons}} 通知了版主" - notify_user: "{{icons}} 发送了一个消息" - notify_user_with_url: "{{icons}} 发送了一个消息" - bookmark: "{{icons}} 对它做了书签" - like: "{{icons}} 赞了它" - vote: "{{icons}} 对它投票" + off_topic: "标记为偏离主题" + spam: "标记为垃圾信息" + inappropriate: "标记为不当内容" + notify_moderators: "通知版主" + notify_user: "发送消息" + bookmark: "书签收藏" + like: "赞了它" + vote: "已给本帖投票" by_you: - off_topic: "你报告它偏离主题" - spam: "你报告它为垃圾信息" - inappropriate: "你报告它为不当内容" - notify_moderators: "你向版主报告了它" + off_topic: "你标记其偏离了主题" + spam: "你标记其为垃圾信息" + inappropriate: "你标记其为不当内容" + notify_moderators: "你标记了本帖要求管理人员处理" notify_user: "你已经发了一个消息给该用户" bookmark: "你对该帖做了书签" like: "你赞了它" vote: "你对该帖投票支持" by_you_and_others: off_topic: - other: "你和其他 {{count}} 人报告它偏离主题" + other: "你和其他 {{count}} 人标记其偏离主题" spam: - other: "你和其他 {{count}} 人报告它为垃圾信息" + other: "你和其他 {{count}} 人标记其为垃圾信息" inappropriate: - other: "你和其他 {{count}} 人报告它为不当内容" + other: "你和其他 {{count}} 人标记其为不当内容" notify_moderators: - other: "你和其他 {{count}} 人报告它需要审核" + other: "你和其他 {{count}} 人标记了本帖要求管理人员处理" notify_user: other: "你和 {{count}} 个其他用户发了一个消息给该用户" bookmark: @@ -1279,13 +1401,13 @@ zh_CN: other: "你和其他 {{count}} 人支持这个帖子" by_others: off_topic: - other: "{{count}} 人报告它偏离主题" + other: "{{count}} 人标记其偏离主题" spam: - other: "{{count}} 人报告它为垃圾信息" + other: "{{count}} 人标记其为垃圾信息" inappropriate: - other: "{{count}} 人报告它为不当内容" + other: "{{count}} 人标记其为不当内容" notify_moderators: - other: "{{count}} 人报告它需要修改" + other: "{{count}} 人标记本帖要求管理人员处理" notify_user: other: "{{count}} 人给这个用户发送了消息" bookmark: @@ -1294,10 +1416,6 @@ zh_CN: other: "{{count}} 人赞了这个帖子" vote: other: "{{count}} 人支持这个帖子" - edits: - one: 1 次编辑 - other: "{{count}} 次编辑" - zero: 未编辑 delete: confirm: other: "你确定要删除这些帖子吗?" @@ -1309,6 +1427,7 @@ zh_CN: last: "最新版" hide: "隐藏版本历史" show: "显示版本历史" + revert: "回退至该版本" comparing_previous_to_current_out_of_total: "{{previous}} {{current}} / {{total}}" displays: inline: @@ -1377,20 +1496,19 @@ zh_CN: notifications: watching: title: "关注" - description: "你将会自动监视这些分类中的所有新主题。你将会收到新帖子和新主题发布的通知,并且新帖数量也将在这些主题后显示。" + description: "你将会自动监视这些分类中的所有新主题。你会收到每个主题中的新帖子通知,并且新帖数量也将在每个主题后显示。" tracking: title: "追踪" - description: "你将会自动追踪这些分类中的所有新主题。新帖数量将在这些主题后显示。" + description: "你将会自动追踪这些分类中的所有新主题。你会在别人@你或回复你的帖子时才会收到通知,并且新帖数量也将在这些主题后显示。" regular: - title: "常规" + title: "普通" description: "如果某人@你或者回复你,你将收到通知。" muted: title: "免打扰" - description: "你不会收到这些分类中的任何新主题通知,并且他们将不会出现在你的未读列表中。" + description: "你不会收到这些分类中的任何新主题通知,并且他们将不会出现在最新列表中。" flagging: - title: '感谢帮助社群远离邪恶!' - private_reminder: '标记是不公开的,只有职员才可以见到' - action: '报告帖子' + title: '感谢你帮助我们建设文明社群!' + action: '标记帖子' take_action: "立即执行" notify_action: '消息' delete_spammer: "删除垃圾发布者" @@ -1400,7 +1518,8 @@ zh_CN: hidden_email_address: "(隐藏)" submit_tooltip: "提交私有标记" take_action_tooltip: "立即采取标记到达限制值时的措施,而不是等待更多的社群标记" - cant: "抱歉,当前你不能报告本帖。" + cant: "抱歉,现在你不能标记本帖。" + notify_staff: '私下通知管理人员' formatted_name: off_topic: "偏题" inappropriate: "不合适" @@ -1412,12 +1531,12 @@ zh_CN: more: "还差 {{n}} 个..." left: "还剩下 {{n}}" flagging_topic: - title: "感谢帮助社群远离邪恶!" - action: "报告帖子" + title: "感谢你帮助我们建设文明社群!" + action: "标记帖子" notify_action: "消息" topic_map: title: "主题概要" - participants_title: "频繁发帖者" + participants_title: "主要发帖者" links_title: "热门链接" links_shown: "显示所有 {{totalLinks}} 个链接..." clicks: @@ -1438,7 +1557,7 @@ zh_CN: help: "主题已经解除置顶;它将以默认顺序显示" pinned_globally: title: "全局置顶" - help: "本主题已置顶;它将始终显示在它所属分类的顶部" + help: "本主题已全局置顶;它始终会在最新列表以及它所属的分类中置顶" pinned: title: "置顶" help: "本主题已置顶;它将始终显示在它所属分类的顶部" @@ -1478,9 +1597,8 @@ zh_CN: with_topics: "%{filter}主题" with_category: "%{category}的%{filter}主题" latest: - title: - zero: "最新" - one: "最新(1)" + title: "最新" + title_with_count: other: "最新({{count}})" help: "最新发布的帖子" hot: @@ -1497,22 +1615,18 @@ zh_CN: title_in: "分类 - {{categoryName}}" help: "归属于不同分类的所有主题" unread: - title: - zero: "未读" - one: "1 个未读主题" - other: "{{count}} 个未读主题" + title: "未读" + title_with_count: + other: "未读({{count}})" help: "你正在监视或追踪的主题中有未阅帖子的主题" lower_title_with_count: - one: "1 条未读" other: "{{count}} 条未读" new: lower_title_with_count: - one: "1 近期" other: "{{count}} 近期" lower_title: "近期" - title: - zero: "近期" - one: "近期(1)" + title: "近期" + title_with_count: other: "近期({{count}})" help: "最近几天创建的主题" posted: @@ -1522,9 +1636,8 @@ zh_CN: title: "书签" help: "你标上书签的主题" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}}(1)" + title: "{{categoryName}}" + title_with_count: other: "{{categoryName}}({{count}})" help: "在 {{categoryName}} 分类中热门的主题" top: @@ -1605,52 +1718,53 @@ zh_CN: refresh_report: "刷新报告" start_date: "开始日期" end_date: "结束日期" + groups: "所有群组" commits: latest_changes: "最近的更新:请经常升级!" by: "来自" flags: - title: "报告" - old: "旧的" + title: "标记" + old: "历史" active: "待处理" - agree: "已批准" + agree: "确认标记" agree_title: "确认这个标记有效且正确" - agree_flag_modal_title: "批准并..." - agree_flag_hide_post: "批准(隐藏并发送私信)" + agree_flag_modal_title: "确认标记并执行..." + agree_flag_hide_post: "确认标记(隐藏帖子并发送私信)" agree_flag_hide_post_title: "隐藏帖子并自动发送消息要求用户修改" agree_flag_restore_post: "同意 (还原帖子)" agree_flag_restore_post_title: "还原这篇帖子" - agree_flag: "批准这个标记" - agree_flag_title: "批准这个标记并且保持帖子不变" - defer_flag: "推迟" + agree_flag: "确认标记" + agree_flag_title: "确认标记,不对帖子进行操作" + defer_flag: "推迟处理" defer_flag_title: "移除标记;这次不处理。" delete: "删除" delete_title: "删除标记指向的帖子。" - delete_post_defer_flag: "删除帖子并推迟标记" + delete_post_defer_flag: "删除帖子并推迟处理标记" delete_post_defer_flag_title: "删除此帖;如果这是这个主题内的第一篇帖子则删除主题" - delete_post_agree_flag: "删除帖子并批准此标记" + delete_post_agree_flag: "删除帖子并确认标记" delete_post_agree_flag_title: "删除此帖;如果这是这个主题内的第一篇帖子则删除主题" delete_flag_modal_title: "删除并..." delete_spammer: "删除垃圾发布者" delete_spammer_title: "移除该用户及其的所有帖子和主题。" - disagree_flag_unhide_post: "不批准(不隐藏帖子)" - disagree_flag_unhide_post_title: "清除此帖的任何报告,并使其重新可见" - disagree_flag: "不批准" - disagree_flag_title: "拒绝这个报告,无效或不正确" + disagree_flag_unhide_post: "否决(显示帖子)" + disagree_flag_unhide_post_title: "删除此帖的所有标记并使其重新可见" + disagree_flag: "否决" + disagree_flag_title: "否却该标记(该标记无效或不正确)" clear_topic_flags: "完成" - clear_topic_flags_title: "这个主题已被调查且提案已被解决。单击完成以删除报告。" + clear_topic_flags_title: "主题的问题已经已被调查且提案已被解决。单击完成以删除报告。" more: "(更多回复...)" dispositions: - agreed: "已批准" - disagreed: "未批准" - deferred: "推迟" - flagged_by: "报告者为" + agreed: "已确认" + disagreed: "被否决" + deferred: "已推迟" + flagged_by: "标记者" resolved_by: "已解决,被" took_action: "立即执行" system: "系统" error: "出错了" reply_message: "回复" - no_results: "没有报告" - topic_flagged: "这个主题已被报告。" + no_results: "当前没有标记。" + topic_flagged: "主题已经被标记。" visit_topic: "浏览主题才能操作" was_edited: "帖子在第一次标记后被编辑" previous_flags_count: "这篇帖子已经被标示了 {{count}} 次。" @@ -1680,15 +1794,24 @@ zh_CN: delete_confirm: "删除这个小组吗?" delete_failed: "无法删除小组。如果该小组是自动生成的,则不可删除。" delete_member_confirm: "从群组“%{group}”中移除“%{username}”?" + delete_owner_confirm: "移除'%{username}'的权限?" name: "名字" add: "添加" add_members: "添加成员" custom: "定制" + bulk_complete: "用户已被添加到小组。" + bulk: "批量添加到小组" + bulk_paste: "粘贴用户名或email列表,一行一个:" + bulk_select: "(选择一个小组)" automatic: "自动" automatic_membership_email_domains: "用户注册时邮箱域名若与列表完全匹配则自动添加至这个群组:" automatic_membership_retroactive: "应用同样的邮件域名规则添加已经注册的用户" default_title: "群组内所有用户的默认头衔" primary_group: "自动设置为主要群组" + group_owners: 所有者 + add_owners: 添加所有者 + incoming_email: "自定义进站电子邮件地址" + incoming_email_placeholder: "输入邮箱地址" api: generate_master: "生成主 API 密钥" none: "当前没有可用的 API 密钥。" @@ -1762,7 +1885,7 @@ zh_CN: is_disabled: "站点设置中禁用了恢复功能。" label: "恢复" title: "恢复该备份" - confirm: "你确定要重置该备份吗?" + confirm: "你确定要从该备份中恢复吗?" rollback: label: "回滚" title: "将数据库回滚到之前的工作状态" @@ -1775,7 +1898,7 @@ zh_CN: button_text: "导出" button_title: user: "以CSV格式导出所有用户列表" - staff_action: "以CSV格式导出所有职员操作历史记录" + staff_action: "以CSV格式导出所有管理人员操作历史记录" screened_email: "以 CSV 格式导出所有已显示的电子邮件列表。" screened_ip: "以 CSV 格式导出所有已显示的IP地址列表。" screened_url: "以 CSV 格式导出所有已显示的URL列表。" @@ -1817,6 +1940,14 @@ zh_CN: color: "颜色" opacity: "透明度" copy: "复制" + email_templates: + title: "邮件模板" + subject: "主题" + multiple_subjects: "这个邮件模板包括多个主题。" + body: "内容" + none_selected: "选择一个邮件模板开始编辑。" + revert: "撤销更变" + revert_confirm: "你确定要撤销你的更变吗?" css_html: title: "CSS/HTML" long_title: "自定义 CSS 和 HTML" @@ -1827,7 +1958,7 @@ zh_CN: new_name: "新的颜色方案" copy_name_prefix: "复制于" delete_confirm: "删除这个颜色方案?" - undo: "重做" + undo: "重置" undo_title: "撤销你对这个颜色的编辑至上一次保存的状态。" revert: "撤销" revert_title: "重置这个颜色至 Discourse 的默认颜色方案" @@ -1861,18 +1992,18 @@ zh_CN: love: name: '赞' description: "赞按钮的颜色。" - wiki: - name: '维基编辑' - description: "维基帖子的背景颜色" email: - title: "电子邮件" + title: "邮件" settings: "设置" - all: "所有" + templates: "模板" + preview_digest: "预览" sending_test: "发送测试邮件..." error: "错误 - %{server_error}" test_error: "发送测试邮件时遇到问题。请再检查一遍邮件设置,确认你的主机没有封锁邮件链接,然后重试。" sent: "已发送" skipped: "跳过" + received: "收到" + rejected: "拒绝" sent_at: "发送时间" time: "时间" user: "用户" @@ -1882,7 +2013,6 @@ zh_CN: send_test: "发送测试电子邮件" sent_test: "已发送!" delivery_method: "发送方式" - preview_digest: "预览" preview_digest_desc: "预览发送给不活跃用户的摘要邮件内容。" refresh: "刷新" format: "格式" @@ -1891,6 +2021,26 @@ zh_CN: last_seen_user: "用户最后登录时间:" reply_key: "回复关键字" skipped_reason: "跳过理由" + incoming_emails: + from_address: "来自" + to_addresses: "发至" + cc_addresses: "抄送" + subject: "主题" + error: "错误" + none: "没有找到进站邮件。" + modal: + title: "进站邮件详情" + error: "错误" + headers: "头部" + subject: "主题" + body: "内容" + rejection_message: "拒绝邮件" + filters: + from_placeholder: "from@example.com" + to_placeholder: "to@example.com" + cc_placeholder: "cc@example.com" + subject_placeholder: "主题..." + error_placeholder: "错误" logs: none: "未发现日志。" filters: @@ -1909,6 +2059,7 @@ zh_CN: ip_address: "IP" topic_id: "主题 ID" post_id: "帖子 ID" + category_id: "分类 ID" delete: '删除' edit: '编辑' save: '保存' @@ -1939,6 +2090,7 @@ zh_CN: change_site_setting: "更改站点设置" change_site_customization: "更改站点自定义" delete_site_customization: "删除站点自定义" + change_site_text: "更改站点文字" suspend_user: "封禁用户" unsuspend_user: "解禁用户" grant_badge: "授予徽章" @@ -1949,6 +2101,16 @@ zh_CN: impersonate: "检视" anonymize_user: "匿名用户" roll_up: "回退 IP 封禁" + change_category_settings: "更改分类设置" + delete_category: "删除分类" + create_category: "创建分类" + block_user: "封禁用户" + unblock_user: "解封用户" + grant_admin: "授予管理员权限" + revoke_admin: "撤销管理员权限" + grant_moderation: "授予版主权限" + revoke_moderation: "撤销版主权限" + backup_operation: "备份操作" screened_emails: title: "被屏蔽的邮件地址" description: "当有人试图用以下邮件地址注册时,将受到阻止或其它系统操作。" @@ -1998,7 +2160,7 @@ zh_CN: new: "新建" active: "活跃" pending: "待定" - staff: '职员' + staff: '管理人员' suspended: '禁止登录' blocked: '禁止参与讨论' suspect: '怀疑' @@ -2013,10 +2175,10 @@ zh_CN: pending: '等待审核用户' newuser: '信用等级为0的用户(新用户)' basic: '信用等级为1的用户(基本用户)' - regular: '信用等级为2的用户(成员)' - leader: '信用等级为3的用户(常规)' - elder: '信用等级为4的用户(领导)' - staff: "职员" + member: '信用等级为2的用户(成员)' + regular: '信用等级为3的用户(活跃)' + leader: '信用等级为4的用户(资深)' + staff: "管理人员" admins: '管理员' moderators: '版主' blocked: '被封用户' @@ -2046,6 +2208,7 @@ zh_CN: moderator: "版主?" admin: "管理员?" blocked: "已封?" + staged: "暂存?" show_admin_profile: "管理员" edit_title: "编辑头衔" save_title: "保存头衔" @@ -2071,8 +2234,8 @@ zh_CN: posts_read_count: 已阅帖子数量 post_count: 创建的帖子数量 topics_entered: 已查看的主题数量 - flags_given_count: 所做报告数量 - flags_received_count: 收到报告数量 + flags_given_count: 提交标记数量 + flags_received_count: 被他人标记数量 warnings_received_count: 收到警告 flags_given_received_count: '给出的标记 / 收到的标记' approve: '批准' @@ -2107,22 +2270,25 @@ zh_CN: deactivate_failed: "在停用用户帐号时发生了错误。" unblock_failed: '在解除用户帐号封禁时发生了错误。' block_failed: '在封禁用户帐号时发生了错误。' + block_confirm: '你确定要封禁用户吗?他们将没有办法创建任何主题或者帖子。' + block_accept: '是的,封禁用户' deactivate_explanation: "已停用的用户必须重新验证他们的电子邮件。" suspended_explanation: "一个被封禁的用户不能登录。" block_explanation: "被封禁的用户不能发表主题或者评论。" + stage_explanation: "暂存用户只能通过邮件在特定主题内发表帖子。" trust_level_change_failed: "改变用户等级时出现了一个问题。" suspend_modal_title: "被禁用户" trust_level_2_users: "二级信任等级用户" - trust_level_3_requirements: "三级信任等级需求" + trust_level_3_requirements: "信任等级 3 要求" trust_level_locked_tip: "信任等级已经被锁定,系统将不会升降用户的信任等级" trust_level_unlocked_tip: "信任等级已经解锁,系统将自动升降用户的信任等级" lock_trust_level: "锁定信任等级" unlock_trust_level: "解锁信任等级" tl3_requirements: - title: "3 级信任等级的需求" - table_title: "在过去的 100 天中:" - value_heading: "价值" - requirement_heading: "需求" + title: "信任等级 3 的要求" + table_title: "在最近%{time_period}天:" + value_heading: "当前" + requirement_heading: "要求" visits: "访问" days: "天数" topics_replied_to: "回复的主题" @@ -2130,17 +2296,17 @@ zh_CN: topics_viewed_all_time: "已阅的主题 (全部)" posts_read: "已读帖子" posts_read_all_time: "已读的帖子 (全部)" - flagged_posts: "被报告的帖子" - flagged_by_users: "标记的用户" + flagged_posts: "被标记的帖子" + flagged_by_users: "标记其的用户" likes_given: "给出的赞" likes_received: "收到的赞" - likes_received_days: "收到的赞:每天" + likes_received_days: "收到的赞:独立天数" likes_received_users: "收到的赞:每用户" - qualifies: "符合等级3的信用度" - does_not_qualify: "未符合等级3的信用度" + qualifies: "符合信任等级3要求" + does_not_qualify: "不符合信任等级3要求" will_be_promoted: "将在近期被提升。" will_be_demoted: "将在近期被降级。" - on_grace_period: "目前在升级优惠阶段,将不会被降级。" + on_grace_period: "目前在升级宽限期,不会被降级。" locked_will_not_be_promoted: "信任等级被锁定。将不再被提升。" locked_will_not_be_demoted: "信任等级被锁定。将不再被降级。" sso: @@ -2181,8 +2347,15 @@ zh_CN: confirm: '确认' dropdown: "下拉菜单" site_text: - none: "选择一个内容类型开始编辑。" + description: "你可以自定义论坛的任意文本。请按以下搜索:" + search: "搜索你想要编辑的文本" title: '文本内容' + edit: '编辑' + revert: "撤销更变" + revert_confirm: "你确定要撤销你的更变吗?" + go_back: "返回搜索" + recommended: "我们建议自定义以下文本以符合你的需求:" + show_overriden: '只显示修改过的' site_settings: show_overriden: '只显示修改过的' title: '设置' @@ -2222,6 +2395,7 @@ zh_CN: badge: 徽章 display_name: 显示名称 description: 描述 + long_description: 详情 badge_type: 徽章分类 badge_grouping: 群组 badge_groupings: @@ -2240,7 +2414,7 @@ zh_CN: grant_badge: 授予徽章 granted_badges: 已授予的徽章 grant: 授予 - no_user_badges: "%{name} 尚未被授予徽章。" + no_user_badges: "%{name}尚未被授予任何徽章。" no_badges: 没有可供授予的徽章。 none_selected: "选择一个徽章开始" allow_title: 允许将徽章用作头衔 @@ -2262,7 +2436,7 @@ zh_CN: trust_level_change: "当用户信任等级改变时" user_change: "当用户被编辑或创建时" preview: - link_text: "预览授予的徽章" + link_text: "预览将授予的徽章" plan_text: "预览查询计划" modal_title: "徽章查询预览" sql_error_header: "查询时出错。" @@ -2270,9 +2444,8 @@ zh_CN: bad_count_warning: header: "警告!" text: "有授予的样本消失。这在徽章查询返回用户 ID 或者帖子 ID 不存在的时候发生。这可能导致未预期的结果发生——请再次检查你的查询。" + no_grant_count: "没有徽章可以被授予。" grant_count: - zero: "没有徽章可以被授予。" - one: "已授予 1 个徽章。" other: "已授予 %{count} 个徽章。" sample: "样本:" grant: @@ -2284,7 +2457,7 @@ zh_CN: title: "Emoji" help: "增加所有人可用的 emoji。(高端技巧:一次性拖进多个文件)" add: "增加新的 Emoji" - name: "姓名" + name: "名称" image: "图片" delete_confirm: "你确定要删除 :%{name}: emoji 么?" embedding: @@ -2372,7 +2545,7 @@ zh_CN: reply_post: 'r 回复帖子' quote_post: 'q 引用帖子' like: 'l 赞帖子' - flag: '! 报告帖子' + flag: '! 标记帖子' bookmark: 'b 给帖子添加书签' edit: 'e 编辑帖子' delete: 'd 删除帖子' @@ -2381,6 +2554,10 @@ zh_CN: mark_tracking: 'm 然后 t 追踪主题' mark_watching: 'm 然后 w 关注主题' badges: + earned_n_times: + other: "授予徽章 %{count} 次" + granted_on: "授予于%{date}" + others_count: "其他有该徽章的人(%{count})" title: 徽章 allow_title: "能用作头衔" multiple_grant: "能被授予多次" @@ -2403,97 +2580,6 @@ zh_CN: name: 其它 posting: name: 发帖 - badge: - editor: - name: 编辑 - description: 首个帖子编辑 - basic_user: - name: 基础 - description: 授予所有常用社群功能 - member: - name: 成员 - description: 已授予邀请权限 - regular: - name: 常规 - description: 已授予重分类、重命名、跟踪链接和贵宾室 - leader: - name: 领导 - description: 已授予 全局编辑、固定、关闭、存档、分割和合并 - welcome: - name: 欢迎 - description: 得到一个赞 - autobiographer: - name: 自传作者 - description: 已填写用户资料信息 - anniversary: - name: 年度纪念日 - description: 一年活跃用户,至少发了一个帖子 - nice_post: - name: 不错的帖子 - description: 一个帖子收到 10 个赞。这个徽章可以被授予多次 - good_post: - name: 实用的帖子 - description: 一个帖子收到 25 个赞。这个徽章可以被授予多次 - great_post: - name: 非常棒的帖子 - description: 一个帖子收到 50 个赞。这个徽章可以被授予多次 - nice_topic: - name: 好的主题 - description: 一个帖子收到 10 个赞。这个徽章可以被授予多次 - good_topic: - name: 不错的主题 - description: 一个帖子收到 25 个赞。这个徽章可以被授予多次 - great_topic: - name: 很棒的主题 - description: 一个帖子收到 50 个赞。这个徽章可以被授予多次 - nice_share: - name: 分享得很好 - description: 分享了一个有 25 个独立访问者的帖子 - good_share: - name: 分享得不错 - description: 分享了一个有 300 个独立访问者的帖子 - great_share: - name: 分享得很好 - description: 分享了一个有 1000 个独立访问者的帖子 - first_like: - name: 首个赞 - description: 已赞了一个帖子 - first_flag: - name: 首个标记 - description: 标记帖子 - promoter: - name: 推广 - description: 已邀请了 1 个用户 - campaigner: - name: 资深推广 - description: 邀请3个基础用户(信任等级1) - champion: - name: 元老推广 - description: 邀请5个会员(信任等级2) - first_share: - name: 首次分享 - description: 已分享了一个帖子 - first_link: - name: 首个链接 - description: 已经添加了一个内部链接至另一个主题 - first_quote: - name: 第一次引用 - description: 引用了一个用户 - read_guidelines: - name: 阅读指引 - description: 阅读社群指引 - reader: - name: 读者 - description: 阅读一个超过 100 个帖子的主题中的每一个帖子 - popular_link: - name: 流行链接 - description: 发布了超过 50 次点击的外部链接 - hot_link: - name: 热门链接 - description: 发布了超过 300 次点击的外部链接 - famous_link: - name: 著名链接 - description: 发布了超过 1000 次点击的外部链接 google_search: |
diff --git a/config/locales/client.zh_TW.yml b/config/locales/client.zh_TW.yml index 092068234b1..03b74dc0de0 100644 --- a/config/locales/client.zh_TW.yml +++ b/config/locales/client.zh_TW.yml @@ -8,6 +8,9 @@ zh_TW: js: number: + format: + separator: "." + delimiter: "," human: storage_units: format: '%n %u' @@ -18,12 +21,17 @@ zh_TW: kb: KB mb: MB tb: TB + short: + thousands: "{{number}} 千" + millions: "{{number}} 百萬" dates: time: "h:mm" long_no_year: "MMM D h:mm a" long_no_year_no_time: "MMM D" + full_no_year_no_time: "MMMM Do" long_with_year: "YYYY MMM D h:mm a" long_with_year_no_time: "YYYY MMM D" + full_with_year_no_time: "YYYY MMMM Do" long_date_with_year: "'YY MMM D LT" long_date_without_year: "MMM D, LT" long_date_with_year_without_time: "'YY MMM D" @@ -73,6 +81,8 @@ zh_TW: other: "%{count} 個月後" x_years: other: "%{count} 年後" + previous_month: '上個月' + next_month: '下個月' share: topic: '在此話題內分享連結' post: '文章 #%{postNumber}' @@ -81,6 +91,23 @@ zh_TW: facebook: '在 Facebook 分享此連結' google+: '在 Google+ 分享此連結' email: '以電子郵件分享此連結' + action_codes: + split_topic: "於 %{when} 切分此討論話題" + autoclosed: + enabled: '於 %{when} 關閉' + disabled: '於 %{when} 開啟' + closed: + enabled: '於 %{when} 關閉' + disabled: '於 %{when} 開啟' + archived: + enabled: '於 %{when} 封存' + disabled: '於 %{when} 解除封存' + pinned: + enabled: '於 %{when} 置頂' + disabled: '於 %{when} 解除置頂' + pinned_globally: + enabled: '於 %{when} 全局置頂' + disabled: '於 %{when} 解除置頂' topic_admin_menu: "討論話題管理員操作" emails_are_disabled: "管理員已經停用了所有外寄郵件功能。通知信件都不會寄出。" edit: '編輯此討論話題的標題與分類' @@ -96,6 +123,7 @@ zh_TW: admin_title: "管理員" flags_title: "投訴" show_more: "顯示更多" + show_help: "選項" links: "連結" links_lowercase: other: "鏈結" @@ -167,6 +195,7 @@ zh_TW: saved: "儲存完畢!" upload: "上傳" uploading: "正在上傳..." + uploading_filename: "{{filename}} 上傳中..." uploaded: "上傳完畢!" enable: "啟用" disable: "停用" @@ -174,8 +203,10 @@ zh_TW: revert: "回復" failed: "失敗" switch_to_anon: "匿名模式" + switch_from_anon: "登出匿名模式" banner: close: "關閉此橫幅" + edit: "編輯此橫幅 >>" choose_topic: none_found: "未找到任何討論話題。" title: @@ -191,8 +222,9 @@ zh_TW: edit: "編輯" cancel: "取消" view_pending: "觀看等待審核的貼文" + has_pending_posts: + other: "本主題仍有 {{count}}篇貼文等待審核" confirm: "儲存變更" - delete_prompt: "您確定要刪除 %{username} 這個帳號嗎?這會同時將該帳號的所有貼文一併刪除,並封鎖他的電子郵件與 IP。" approval: title: "貼文需等待審核" description: "貼文已經送出,但必須等待管理者審核過後才會出現在板上,請耐心等候。" @@ -233,20 +265,31 @@ zh_TW: total_rows: other: "%{count} 用戶" groups: + add: "新增" + selector_placeholder: "新增成員" + owner: "擁有者" visible: "群組可被所有用戶看到" title: other: "群組" members: "成員" + topics: "主題" posts: "文章" + messages: "訊息" alias_levels: - title: "誰能用此群組作為別名?" + title: "誰可以在這個群組發送訊息和使用@提到" nobody: "沒有" only_admins: "只有管理員" mods_and_admins: "只有板主以及管理員" members_mods_and_admins: "只有群組成員、板主以及管理員" everyone: "所有人" trust_levels: + title: "當這些成員加入時自動提升信任等級:" none: "無" + notifications: + watching: + title: "關注" + regular: + title: "一般" user_action_groups: '1': "已按讚" '2': "已收到的讚" @@ -256,7 +299,6 @@ zh_TW: '6': "回應" '7': "提到" '9': "引用" - '10': "收藏" '11': "編輯" '12': "送出的項目" '13': "收件匣" @@ -266,6 +308,13 @@ zh_TW: all_subcategories: "所有" no_subcategory: "無" category: "分類" + reorder: + title: "重新排序分類" + title_long: "重新排序分類列表" + fix_order: "固定位置" + fix_order_tooltip: "並非所有的分類皆有唯一的位置參數, 可能會有出乎意料之外的結果." + save: "儲存順序" + position: "位置" posts: "貼文" topics: "標題" latest: "最近" @@ -293,6 +342,8 @@ zh_TW: topics_entered: "已閱讀的討論話題" post_count: "# 文章" confirm_delete_other_accounts: "你確定要刪除這些帳號?" + user_fields: + none: "(選擇一個選項)" user: said: "{{username}}:" profile: "基本資料" @@ -316,9 +367,7 @@ zh_TW: perm_default: "啟用桌面通知" perm_denied_btn: "權限被拒絕" disable: "停用通知" - currently_enabled: "(當前已啟用)" enable: "啟用通知" - currently_disabled: "(當前已關閉)" dismiss_notifications: "全部標記為已讀" dismiss_notifications_tooltip: "標記所有未讀通知為已讀" disable_jump_reply: "不要在回覆之後直接跳到我的文章" @@ -339,7 +388,6 @@ zh_TW: watched_categories: "關注" tracked_categories: "追蹤" muted_categories: "靜音" - muted_categories_instructions: "你將不會收到此分類的新討論話題通知,以及不會出現在未讀欄內。" delete_account: "刪除我的帳號" delete_account_confirm: "你真的要刪除帳號嗎?此動作不能被還原!" deleted_yourself: "你的帳號已成功刪除" @@ -357,8 +405,9 @@ zh_TW: warnings_received: "警告" messages: all: "全部" - mine: "我的" - unread: "未讀" + archive: "封存" + groups: "我的群組" + move_to_archive: "封存" change_password: success: "( 寄出的郵件 )" in_progress: "( 正在傳送郵件 )" @@ -367,6 +416,7 @@ zh_TW: set_password: "設定密碼" change_about: title: "修改關於我" + error: "變更值時發生錯誤。" change_username: title: "修改用戶名稱" confirm: "如果你修改了你的用戶名稱,之前引用你的文章或以 @用戶名稱 提到你的連結都將失效,你確定要修改嗎?" @@ -401,10 +451,6 @@ zh_TW: ok: "我們將寄一封確認郵件給您。" invalid: "請輸入有效的電子郵件地址。" authenticated: "你的 Email 已由 {{provider}} 驗證完成。" - frequency: - zero: "如果您沒有閱讀過重要通知,我們會立即發送電子郵件給您。" - one: "我們只會在您 1 分鐘內沒有活動時,才會寄送電郵通知給您。" - other: "我們只會在您 {{count}} 分鐘內沒有活動時,才會寄送電郵通知給您。" name: title: "名稱" instructions: "您的全名 (選填)。" @@ -474,7 +520,6 @@ zh_TW: title: "邀請" user: "受邀請的用戶" sent: "送出" - truncated: "顯示前 {{count}} 個邀請。" redeemed: "已接受的邀請" redeemed_at: "接受日期" pending: "尚未接受的邀請" @@ -528,6 +573,7 @@ zh_TW: server: "伺服器錯誤" forbidden: "拒絕存取" unknown: "錯誤" + not_found: "找不到頁面" desc: network: "請檢查你的網絡連線。" network_fixed: "似乎沒有問題了" @@ -543,7 +589,6 @@ zh_TW: logout: "已登出" refresh: "重新整理" read_only_mode: - enabled: "管理員開啟了唯讀模式。你可以繼續瀏覽網站,但一些互動功能可能無法使用。" login_disabled: "在唯讀模式下不能登入" learn_more: "進一步了解..." year: '年' @@ -560,10 +605,10 @@ zh_TW: last_reply_lowercase: 最新回覆 replies_lowercase: other: 回覆 + signup_cta: + sign_up: "註冊" summary: enabled_description: "你正在檢視此討論話題的摘要:在這個社群裡最熱門的文章。" - description: "共有 {{count}} 個回覆。" - description_time: "共有 {{count}} 個回覆,大約需要 {{readingTime}} 分鐘閱讀。" enable: '以摘要檢視此討論話題' disable: '顯示所有文章' deleted_filter: @@ -602,6 +647,7 @@ zh_TW: email_placeholder: "電子郵件地址或用戶名稱" caps_lock_warning: "大寫鎖定中" error: "未知的錯誤" + rate_limit: "嘗試重新登入前請先等待" blank_username_or_password: "請輸入你的電子郵件或者用戶名稱,以及密碼。" reset_password: '重設密碼' logging_in: "登入中..." @@ -615,6 +661,7 @@ zh_TW: admin_not_allowed_from_ip_address: "你無法透過此 IP 登入成為管理員。" resend_activation_email: "按這裡重新寄出啟用帳號的電子郵件。" sent_activation_email_again: "我們已經將啟用帳號的電子郵件寄至 {{currentEmail}},你可能幾分鐘後才會收到,如果一直沒收到,請檢查垃圾郵件資料夾。" + to_continue: "請登入" google: title: "使用 Google 帳號" message: "使用 Google 帳號認証 (請確定你的網頁瀏覽器未阻擋彈出視窗)" @@ -637,9 +684,16 @@ zh_TW: google: "Google" twitter: "Twitter" emoji_one: "Emoji One" + shortcut_modifier_key: + shift: 'Shift' + ctrl: 'Ctrl' + alt: 'Alt' composer: - emoji: "Emoji :smile:" + more_emoji: "更多..." + options: "選項" + whisper: "密談" add_warning: "這是正式警告。" + toggle_whisper: "切換密談" posting_not_on_topic: "你想要回覆哪個討論話題?" saving_draft_tip: "正在儲存..." saved_draft_tip: "儲存完畢" @@ -666,7 +720,7 @@ zh_TW: edit_reason_placeholder: "你為什麼做編輯?" show_edit_reason: "(請加入編輯原因)" view_new_post: "檢視你的新文章。" - saving: "正在儲存..." + saving: "正在儲存" saved: "儲存完畢!" saved_draft: "草稿待完成,點擊繼續。" uploading: "正在上傳..." @@ -693,10 +747,11 @@ zh_TW: heading_title: "標頭" heading_text: "標頭" hr_title: "分隔線" - undo_title: "復原" - redo_title: "重做" help: "Markdown 編輯說明" toggler: "隱藏或顯示編輯面板" + modal_ok: "確定" + modal_cancel: "取消" + cant_send_pm: "抱歉,你不能向 %{username} 發送訊息。" admin_options_title: "此討論話題可選用之工作人員設定選項" auto_close: label: "自動關閉主題時間:" @@ -715,7 +770,6 @@ zh_TW: mentioned: "
{{username}} {{description}}
" quoted: "
{{username}} {{description}}
" replied: "
{{username}} {{description}}
" - posted: "
{{username}} {{description}}
" edited: "
{{username}} {{description}}
" liked: "
{{username}} {{description}}
" private_message: "
{{username}} {{description}}
" @@ -732,14 +786,17 @@ zh_TW: from_my_computer: "從我的電腦" from_the_web: "從網站" remote_tip: "圖片連結" - remote_tip_with_attachments: "圖片或文件連結 ({{authorized_extensions}})" hint: "(你也可以將檔案拖放至編輯器直接上傳)" uploading: "正在上傳" select_file: "選取檔案" image_link: "連結你的圖片將指向" search: + sort_by: "排序" + select_all: "選擇全部" + clear_all: "清除全部" title: "搜尋討論話題、文章、用戶或分類" no_results: "未找到任何結果。" + no_more_results: "沒有找到更多的結果。" search_help: 搜尋幫助 searching: "正在搜尋..." post_format: "#{{post_number}} {{username}}" @@ -747,6 +804,8 @@ zh_TW: user: "搜尋 @{{username}} 的文章" category: "搜尋 \"{{category}}\" 分類" topic: "搜尋此討論話題" + private_messages: "搜尋訊息" + new_item: "新增" go_back: '返回' not_logged_in_user: '用戶頁面包含目前活動及喜好的總結' current_user: '到你的用戶頁面' @@ -754,10 +813,6 @@ zh_TW: bulk: reset_read: "重設閱讀" delete: "刪除討論話題" - dismiss_posts: "已讀文章" - dismiss_posts_tooltip: "標記此討論話題內未讀文章為已讀" - dismiss_topics: "已讀討論話題" - dismiss_topics_tooltip: "停止顯示這個討論話題在我的未讀清單" dismiss_new: "設定新文章為已讀" toggle: "批量切換選擇討論話題" actions: "批量操作" @@ -778,9 +833,6 @@ zh_TW: bookmarks: "您目前沒有加入書籤的討論話題。" category: "沒有 {{category}} 的討論話題。" top: "沒有精選討論話題。" - educate: - new: '
你的新討論話題會出現在這裡。
預設上,2 天內新增的討論話題會被當成新的,並會出現 新 此一標籤。
你可以在偏好設定中修改設定。
' - unread: '
你的未讀討論話題會出現在這裡。
預設上,以下話題會被標示成未讀話題,並且未讀文章數量 1 會顯示:
或若透過討論話題下面的通知設定追蹤或觀察。
你可以在偏好設定中修改設定。
' bottom: latest: "已經沒有其它最近的討論話題了。" hot: "已經沒有其它熱門的討論話題了。" @@ -796,6 +848,8 @@ zh_TW: create: '新討論話題' create_long: '建立新討論話題' private_message: '發送訊息' + archive_message: + title: '封存' list: '討論話題' new: '新討論話題' unread: '未讀' @@ -844,6 +898,7 @@ zh_TW: go_top: "頂部" go_bottom: "底部" go: "前往" + jump_bottom: "跳至最後一則帖子" jump_bottom_with_number: "跳至第 %{post_number} 篇文章" total: 所有文章 current: 目前的文章 @@ -879,7 +934,6 @@ zh_TW: description: "你將不會再收到關於此訊息的通知。" muted: title: "靜音" - description: "你將不會收到任何關於此討論話題的通知,此討論話題也不會出現在你的未讀分頁裡。" actions: recover: "復原已刪除的討論話題" delete: "刪除討論話題" @@ -916,8 +970,7 @@ zh_TW: feature_topic: title: "擁有這個話題" unpin: "取消此主題在{{categoryLink}}類別的置頂狀態" - already_banner: - zero: "沒有頂置的話題。" + not_pinned: "沒有主題被釘選在 {{categoryLink}} ." inviting: "正在邀請..." automatically_add_to_groups_optional: "邀請時同時加入以下群組: (選填, 此為管理員設定)" automatically_add_to_groups_required: "邀請時同時加入以下群組: (必填, 此為管理員設定)" @@ -1001,8 +1054,7 @@ zh_TW: other: "{{count}} 個讚" has_likes_title: other: "{{count}} 個使用者對此文章讚好" - has_likes_title_you: - zero: "你已按讚" + has_likes_title_only_you: "你已按讚" errors: create: "抱歉,建立你的文章時發生錯誤,請再試一次。" edit: "抱歉,編輯你的文章時發生錯誤,請再試一次。" @@ -1020,8 +1072,7 @@ zh_TW: no_value: "否" yes_value: "是" via_email: "本文章透過電子郵件送達" - wiki: - about: "這篇文章設定為 wiki,一般用戶可以編輯它" + whisper: "這文章是版主私人密談" archetypes: save: '儲存選項' controls: @@ -1068,17 +1119,11 @@ zh_TW: like: "撤回讚" vote: "撤回投票" people: - off_topic: "{{icons}} 標示為偏離主題" - spam: "{{icons}} 標示為垃圾文章" - spam_with_url: "{{icons}} 投訴 此為 spam" - inappropriate: "{{icons}} 標示為不適內容" - notify_moderators: "{{icons}} 已通知板主" - notify_moderators_with_url: "{{icons}} 已通知板主" - notify_user: "{{icons}} 已送出訊息" - notify_user_with_url: "{{icons}} 已送出 訊息" - bookmark: "{{icons}} 已加上書籤" - like: "{{icons}} 已按讚" - vote: "{{icons}} 已投票支持" + off_topic: "投訴為離題內容" + spam: "投訴為垃圾內容" + inappropriate: "投訴為不當內容" + notify_moderators: "已通知的版主" + notify_user: "已送出一則訊息" by_you: off_topic: "你已投訴此文章偏離討論話題" spam: "你已投訴此文章為垃圾" @@ -1122,10 +1167,6 @@ zh_TW: other: "{{count}} 人對此按讚" vote: other: "{{count}} 人已投票給此文章" - edits: - one: 1 edit - other: "編輯過 {{count}} 次" - zero: no edits delete: confirm: other: "你確定要刪除這些文章?" @@ -1158,9 +1199,10 @@ zh_TW: view: '檢視分類裡的討論話題' general: '一般' settings: '設定' - topic_template: "主題模板" + topic_template: "主題範本" delete: '刪除分類' create: '新分類' + create_long: '建立新的分類' save: '儲存分類' slug: '分類目錄' slug_placeholder: '(選填) 在 url 加上虛線' @@ -1209,10 +1251,8 @@ zh_TW: title: "一般" muted: title: "靜音" - description: "你將不會收到這些分類中的新討論話題通知,它們也不會出現在你的未讀欄內。" flagging: title: '感謝幫助社群遠離邪惡!' - private_reminder: '標記是不公開的,只有 工作人員才可看到' action: '投訴文章' take_action: "執行動作" notify_action: '訊息' @@ -1259,7 +1299,6 @@ zh_TW: help: "此討論話題已取消置頂,將會以預設順序顯示。" pinned_globally: title: "全區置頂" - help: "此討論話題已全區置頂,將顯示在所有討論話題列表的最上方" pinned: title: "已釘選" help: "此討論話題已置頂,將顯示在它所屬分類話題列表的最上方" @@ -1268,6 +1307,12 @@ zh_TW: posts: "文章" posts_lowercase: "文章" posts_long: "此討論話題有 {{number}} 篇文章" + posts_likes_MF: | + This topic has {count, plural, one {1 reply} other {# replies}} {ratio, select, + low {with a high like to post ratio} + med {with a very high like to post ratio} + high {with an extremely high like to post ratio} + other {}} original_post: "原始文章" views: "觀看" views_lowercase: @@ -1293,10 +1338,9 @@ zh_TW: with_topics: "%{filter} 討論話題" with_category: "%{filter} %{category} 討論話題" latest: - title: - zero: "最新主題" - one: "最新主題 (1)" - other: "最新主題 ({{count}})" + title: "最新" + title_with_count: + other: "最新 ({{count}})" help: "最近的討論話題" hot: title: "熱門" @@ -1312,23 +1356,14 @@ zh_TW: title_in: "分類 - {{categoryName}}" help: "所有討論話題以分類區分" unread: - title: - zero: "未讀" - one: "未讀 (1)" + title: "未讀" + title_with_count: other: "未讀 ({{count}})" help: "你所關注或追蹤的討論話題有未讀文章" lower_title_with_count: - one: "1 個未讀" other: "{{count}} 個未讀" new: - lower_title_with_count: - one: "1 個新話題" - other: "{{count}} 個新話題" lower_title: "新話題" - title: - zero: "新討論話題" - one: "新討論話題 (1)" - other: "新討論話題 ({{count}})" help: "最近幾天建立的主題" posted: title: "我的文章" @@ -1337,9 +1372,8 @@ zh_TW: title: "書籤" help: "你加進書籤的討論話題" category: - title: - zero: "{{categoryName}}" - one: "{{categoryName}} (1)" + title: "{{categoryName}}" + title_with_count: other: "{{categoryName}} ({{count}})" help: "{{categoryName}} 分類最近的討論話題" top: @@ -1397,13 +1431,14 @@ zh_TW: suspended: '已停權:' private_messages_short: "訊息" private_messages_title: "訊息" + mobile_title: "行動裝置" space_free: "{{size}} 可用空間" uploads: "上傳" backups: "備份檔" traffic_short: "流量" traffic: "網頁應用程式請求數" - page_views: "API Requests" - page_views_short: "API Requests" + page_views: "API 請求數量" + page_views_short: "API 請求數量" show_traffic_report: "顯示詳細的流量報表" reports: today: "今天" @@ -1576,11 +1611,9 @@ zh_TW: is_disabled: "此站設定已關閉復原" label: "還原" title: "復原備份" - confirm: "你確定要復原備份嗎?" rollback: label: "回溯" title: "回溯資料庫到以前的工作階段" - confirm: "你確定要回溯資料庫到以前的工作階段?" export_csv: user_archive_confirm: "你確定要下載你的文章嗎?" success: "開始匯出,處理完畢後將以私人訊息通知你。" @@ -1631,6 +1664,14 @@ zh_TW: color: "顏色" opacity: "不透明度" copy: "複製" + email_templates: + title: "電子郵件範本" + subject: "主旨" + multiple_subjects: "這個電子郵件範本有多重主旨." + body: "內容" + none_selected: "選擇一個電子郵件範本開始編輯" + revert: "恢復變更" + revert_confirm: "你確定要恢復這個變更?" css_html: title: "CSS/HTML" long_title: "CSS 與 HTML 客製化" @@ -1675,13 +1716,10 @@ zh_TW: love: name: '愛' description: "按讚按鈕的顏色" - wiki: - name: '共筆' - description: "共筆文章的背景顏色" email: - title: "電郵" + title: "電子郵件" settings: "設定" - all: "所有" + preview_digest: "預覽文摘" sending_test: "傳送測試郵件" error: "錯誤 - %{server_error}" test_error: "發送測試電子郵件時遇到錯誤。請檢查你輸入的電子郵件地址,並確認網路提供者沒有封鎖郵件的發送,然後再試一次。" @@ -1696,7 +1734,6 @@ zh_TW: send_test: "送出測試Email" sent_test: "已送出!" delivery_method: "傳送方式" - preview_digest: "預覽文摘" refresh: "重新整理" format: "格式" html: "html" @@ -1704,6 +1741,12 @@ zh_TW: last_seen_user: "最近出現的用戶:" reply_key: "回覆金鑰" skipped_reason: "跳過原因" + incoming_emails: + error: "錯誤" + modal: + error: "錯誤" + filters: + error_placeholder: "錯誤" logs: none: "找不到記錄。" filters: @@ -1722,6 +1765,7 @@ zh_TW: ip_address: "IP" topic_id: "討論話題 ID" post_id: "文章 ID" + category_id: "分類 ID" delete: '刪除' edit: '編輯' save: '儲存' @@ -1761,6 +1805,15 @@ zh_TW: delete_post: "刪除文章" impersonate: "檢視" anonymize_user: "匿名用戶" + change_category_settings: "變更分類設定" + delete_category: "刪除分類" + create_category: "建立分類" + block_user: "封鎖用戶" + unblock_user: "解除封鎖" + grant_admin: "授予管理員權限" + revoke_admin: "撤銷管理員權限" + grant_moderation: "授予板主權限" + revoke_moderation: "撤銷板主權限" screened_emails: title: "過濾的電子郵件地址" description: "以下的電子郵件地址將無法用來建立新用戶。" @@ -1824,9 +1877,6 @@ zh_TW: pending: '等待審核的用戶' newuser: '信任等級 0 的用戶 ( 新用戶 )' basic: '信任等級 1 的用戶 ( 初級用戶 )' - regular: '信任等級 2 的使用者(成員)' - leader: '信任等級 3 的使用者(正規)' - elder: '信任等級 4 的使用者(領導者)' staff: "管理員" admins: '管理員' moderators: '板主' @@ -1931,7 +1981,6 @@ zh_TW: unlock_trust_level: "解鎖信任等級" tl3_requirements: title: "信任等級 3 之條件" - table_title: "在過去100天內:" value_heading: "價值" requirement_heading: "要求" visits: "訪問" @@ -1992,8 +2041,12 @@ zh_TW: confirm: '確認' dropdown: "下拉" site_text: - none: "選擇一個內容類別開始編輯" title: '文字內容' + edit: '編輯' + revert: "恢復變更" + revert_confirm: "你確定要撤回這個改動?" + go_back: "回到搜尋" + show_overriden: '只顯示修改過的項目' site_settings: show_overriden: '只顯示修改過的項目' title: '設定' @@ -2081,10 +2134,6 @@ zh_TW: bad_count_warning: header: "警告 !" text: "查詢結果沒有授予徽章的樣本;當查詢結果回傳的使用者 ID 或文章 ID 不存在時此問題有可能發生。如此可能會發生未預期的結果 ―― 請再次檢查您的 SQL 語法。" - grant_count: - zero: "沒有指定徽章。" - one: "指定了 1 個徽章。" - other: "指定了 %{count} 個徽章。" sample: "樣本:" grant: with: %{username} @@ -2103,9 +2152,12 @@ zh_TW: title: "嵌入" host: "允許的主機" edit: "編輯" + category: "張貼到分類" add_host: "新增主機" settings: "嵌入設定" crawling_settings: "爬蟲設定" + feed_polling_enabled: "匯入帖子藉由 RSS/ATOM" + save: "儲存崁入設定" permalink: title: "固定連結" url: "網址" @@ -2136,6 +2188,7 @@ zh_TW: categories: 'g, c 分類' top: 'g, t 頂端' bookmarks: 'g, b 書籤' + profile: 'g, p 個人檔案' messages: 'g, m 私人訊息' navigation: title: '導航' @@ -2177,8 +2230,6 @@ zh_TW: mark_watching: 'm, w 關注討論話題' badges: title: 徽章 - allow_title: "允許使用它作為稱號" - multiple_grant: "可以多次授予" badge_count: other: "%{count} 徽章" more_badges: @@ -2198,85 +2249,3 @@ zh_TW: name: 其他 posting: name: 文章 - badge: - editor: - name: 編輯 - description: 首篇文章編輯 - basic_user: - name: 初級 - description: 取得所有基本社群功能 - member: - name: 成員 - description: 取得邀請功能 - regular: - name: 常客 - description: 取得重新分類、重新命名、連結跟隨(無 nofollow 屬性)、貴賓室功能 - leader: - name: 領袖 - description: 取得全域編輯、置頂、關閉、封存、分割、合併討論話題功能 - welcome: - name: 歡迎 - description: 收到一個讚 - autobiographer: - name: 自我介紹 - description: 填寫用戶個人 資料 - anniversary: - name: 周年紀念日 - description: 一年中的活躍使用者,至少發表一次 - nice_post: - name: 好文章 - description: 一篇文章收到 10 個讚。此徽章可多次獲得。 - good_post: - name: 棒文章 - description: 一篇文章收到 25 個讚。此徽章可多次獲得。 - great_post: - name: 神文章 - description: 一篇文章收到 50 個讚。此徽章可多次獲得。 - nice_topic: - name: 好話題 - description: 一篇討論話題獲得 10 個讚。本徽章可以多次取得。 - good_topic: - name: 棒話題 - description: 一篇討論話題獲得 25 個讚。本徽章可以多次取得。 - great_topic: - name: 神話題 - description: 一篇討論話題獲得 50 個讚。本徽章可以多次取得。 - nice_share: - name: 好分享 - description: 分享一篇文章給 25 位不同的訪客 - good_share: - name: 棒分享 - description: 分享一篇文章給 300 位不同的訪客 - great_share: - name: 神分享 - description: 分享一篇文章給 1000 位不同的訪客 - first_like: - name: 首次讚好 - description: 給此貼文按讚 - first_flag: - name: 首次標記 - description: 標記文章 - promoter: - name: 推手 - description: 已邀請一位用戶 - campaigner: - name: 說客 - champion: - name: 鬥士 - first_share: - name: 首個分享 - description: 分享文章 - first_link: - name: 首次連結 - description: 其他討論話題含內部連結 - first_quote: - name: 首先引用 - description: 標記使用者 - read_guidelines: - name: 觀看守則 - description: 觀看社群守則 - reader: - name: 讀者 - description: 觀看每個超過100篇文章的討論話題 - popular_link: - name: 熱門連結 diff --git a/config/locales/plurals.rb b/config/locales/plurals.rb index 8a13eda06e6..6ab9d3dc5a4 100644 --- a/config/locales/plurals.rb +++ b/config/locales/plurals.rb @@ -79,7 +79,7 @@ :ps => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, :pt => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, :pt_BR => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, - :ro => { :i18n => { :plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : n == 0 ? :few : :other } } } }, + :ro => { :i18n => { :plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : n == 0 || ((n % 100) >= 1 && (n % 100) <= 19) ? :few : :other } } } }, :ru => { :i18n => { :plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : :other } } } }, :se => { :i18n => { :plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } }, :sh => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } }, @@ -113,4 +113,3 @@ :zh_TW => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, :zu => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } - diff --git a/config/locales/server.ar.yml b/config/locales/server.ar.yml index 74f2f6b7269..c4e3d193866 100644 --- a/config/locales/server.ar.yml +++ b/config/locales/server.ar.yml @@ -7,38 +7,62 @@ ar: dates: - short_date_no_year: "يوم شهر" - short_date: "يوم شهر سنة" - long_date: "شهر يوم، سنه ساعة :دقائق" - title: "ديسكورس" - topics: "عناوين" - posts: "منشورات" - loading: "تحميل" - powered_by_html: 'مدعوم من ديسكورس ,لتفعيل أفضل رؤية مع جافاسكربت' + short_date_no_year: "D MMM" + short_date: "D MMM، YYYY" + long_date: "D MMMM, YYYY h:mma" + datetime_formats: &datetime_formats + formats: + short: "%d-%m-%Y" + short_no_year: "%-d %B" + date_only: "%-d %B، %Y" + date: + month_names: [null, كانون الثاني, شباط, آذار, نيسان, آيار, حزيران, تموز, أب, أيلول, تشرين الأول, تشرين الثاني, كانون الأول] + <<: *datetime_formats + title: "دسكورس" + topics: "المواضيع" + posts: "منشورات." + loading: "يحمّل" + powered_by_html: 'تدعمه دسكورس ، يفضّل عرضه وجافاسكرِبت مفعّل' log_in: "تسجيل الدخول" - via: "%{username} من موقع %{site_name}" - is_reserved: "محجوز" - purge_reason: "حذف آلي للحسابات المهجوره وغير النشطه " - disable_remote_images_download_reason: "لقد تم تعطيل تحميل الصور عن بعد بسبب عدم وجود مساحة كافية" + purge_reason: "حُذف آليا باعتباره حسابا إما مهجورا أو غير منشّطا" + disable_remote_images_download_reason: "عُطّل تنزيل الصور عن بعد بسبب نفاذ مساحة القرص الحرّة." anonymous: "مجهول" - errors: + emails: + incoming: + default_subject: "رسالة ورادة من %{email}" + show_trimmed_content: "اظهر محتوى أقل" + errors: + empty_email_error: "يحدث عندما يكون البريد المستلم فارغ" + no_message_id_error: "يحدث عندما لا يحتوي البريد على 'Message-Id' في العنوان" + no_body_detected_error: "يحدث عندما لا نستطيع اقتباس المحتوى و لا يوجد مرفق ." + inactive_user_error: "يحدث عندما يكون المرسل غير نشط " + blocked_user_error: "يحدث عندما يكون المرسل محظور" + bad_destination_address: "يحدع عندما لا يكون اي من عنوان البريد االكتروني في حقول To/Cc/Bcc تتطابق مع كون البريد القادم" + strangers_not_allowed_error: "يحدث عندما يحاول المستخدم انشاء موضوع جديد في قسم هو ليس عضواً فيه" + insufficient_trust_level_error: "يحدث عندما يحاول مستخدم انشاء موضوع جديد في قسم و تكون درجه ثقه المستخدم اقل من القسم المطلوب " + reply_user_not_matching_error: "يحدث عندما ياتي الرد من عنوان بريد ألكتروني مختلف من الذي أرسل اليه ألاشعار " + topic_not_found_error: "يحدث عندما يصل رد لموضوع تم حذفه" + topic_closed_error: "يحدث عندما يصل رد لموضوع تم اغلاقه " + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "إنها محددة بعدد حروف %{max} حرف; لقد أدخلت %{length}." - invalid_boolean: "قيمة منطقية غير صحيحة" - taken: "تم حجزه من قبل " - accepted: يجب أن تُقبل - blank: لا يمكن جعله فارغا - present: يجب أن يكون فارغ - confirmation: "ليست مطابقة ل %{attribute}" - empty: لا يمكن جعله فارغا + invalid_boolean: "قيمة منطقية غير صالحة." + taken: "أُخذ بالفعل" + accepted: يجب أن تُقبل. + blank: لا يمكن جعله فارغا. + present: يجب أن يكون فارغ. + confirmation: "ليست مطابقة ل %{attribute}." + empty: لا يمكن جعله فارغا. equal_to: يجب أن تكون مساوي لـ %{count} - even: يجب أن يكون زوجي - exclusion: محجوز + even: يجب أن يكون العدد زوجي. + exclusion: محجوز. greater_than: يجب أن تكون أكبر من %{count} greater_than_or_equal_to: يجب أن تكون أكبر من أو تساوي %{count} + has_already_been_used: "مستخدم بالفعل " inclusion: غير متضمن في القائمة invalid: غير صالح + is_invalid: "غير صالح ، حاول ان تضع وصف اكثر" less_than: يجب أن يكون أقل من %{count} less_than_or_equal_to: يجب أن تكون أقل من أو تساوي %{count} not_a_number: ليس عدد @@ -71,7 +95,7 @@ ar: other: طول خاطئ (يجب أن يكون %{count} حروف) other_than: "يجب أن تكون غير %{count}" template: - body: 'هناك مشاكل بالحقول التالية ' + body: 'حدثت مشاكل مع الحقول الآتية:' header: zero: لا أخطاء تمنع هذا %{model} من الحفظ one: خطأ واحد منع هذا %{model} من الحفظ @@ -80,103 +104,131 @@ ar: many: أخطاء كثيرة تمنع هذا %{model} من الحفظ other: '%{count} أخطاء منعت هذا %{model} من الحفظ' embed: - load_from_remote: "هناك خطأ في تحميل هذا المنشور." + load_from_remote: "حدث خطأ في تحميل المنشور." site_settings: min_username_length_exists: "لا يمكنك تعيين الحد الأدنى لطول اسم المستخدم أعلى من أقصر اسم المستخدم." - min_username_length_range: "لا يمكنك تعيين الحد الأدنى أعلى من الحد الأقصى." + min_username_length_range: "لا يمكن أن تكون القيمة الدنيا أكبر من العليا." max_username_length_exists: "لا يمكنك تعيين الحد الأقصى لطول اسم المستخدم أدنى من أطول اسم المستخدم." - max_username_length_range: "لا يمكنك تعيين الحد الأقصى أقل من الحد الأدنى." + max_username_length_range: "لا يمكن أن تكون القيمة العليا أصغر من الدنيا." default_categories_already_selected: "لا يمكنك تحديد فئة تستخدم في قائمة أخرى." - s3_upload_bucket_is_required: "لا يمكنك تفعيل الملفات المرفوعة إلى S3 إلا إذا أتممت 's3_upload_bucket'." + s3_upload_bucket_is_required: "لا يمكنك تفعيل الرفع إلى S3 حتّى توفّر 's3_upload_bucket'." bulk_invite: - file_should_be_csv: "الملف المرفوع يجب أن يكون بنسق وامتداد txt أو csv" + file_should_be_csv: "على نسق الملف الملف المرفوع أن يكون إمّا csv أو txt." backup: - operation_already_running: "هناك عملية قيد العمل حاليا. لا يمكن بدء مهمة جديدة في الوقت الحالي " - backup_file_should_be_tar_gz: "ملف الاحتياط يجب أن يكون أرشيف .tar.gz." - not_enough_space_on_disk: "ليست هناك مساحة كافية على القرص لتحميل هذه النسخة الاحتياطية" - not_logged_in: "يجب عليك تسجيل الدخول لفعل هذا." + operation_already_running: "ثمّة عملية تجري حاليا. لا يمكنك بدء مهمة جديدة الآن." + backup_file_should_be_tar_gz: "على الملف الاحتياطي أن يكون أرشيف \".tar.gz\"." + not_enough_space_on_disk: "ليس ثمّة مساحة كافية على القرص لرفع النسخة الاحتياطية هذه." + not_logged_in: "عليك تسجيل الدخول لفعل ذلك." not_found: "تعذر العثور على رابط العنوان المطلوب" invalid_access: "لا تمتلك صلاحيات لعرض المطلوب " - read_only_mode_enabled: "الموقع في وضع القراءة فقط . تم تعطيل التفاعلات " + read_only_mode_enabled: "الموقع في وضع القراءة فقط. عُطّلت التفاعلات." + reading_time: "وقت القراءة" + likes: "الإعجابات" too_many_replies: - zero: "نحن نعتذر، لكن الأعضاء الجدد مقيدين مؤقتا بـعدم الرد في نفس الموضوع." - one: "نحن نعتذر، لكن الأعضاء الجدد مقيدين مؤقتا بـرد واحد في نفس الموضوع." - two: "نحن نعتذر، لكن الأعضاء الجدد مقيدين مؤقتا بـردّين في نفس الموضوع." - few: "نحن نعتذر، لكن الأعضاء الجدد مقيدين مؤقتا بـردود قليلة في نفس الموضوع." - many: "نحن نعتذر، لكن الأعضاء الجدد مقيدين مؤقتا بـردود كثيرة في نفس الموضوع." - other: "نحن نعتذر، لكن الأعضاء الجدد مقيدين مؤقتا بـ%{count} ردود في نفس الموضوع." + zero: "يمكن للأعضاء الجدد الرد كما يحلو لهم في كل موضوع." + one: "آسفون، فلا يمكن للأعضاء الجدد سوى الرد مرة واحدة في نفس الموضوع." + two: "آسفون، فلا يمكن للأعضاء الجدد سوى الرد مرتين في نفس الموضوع." + few: "آسفون، فلا يمكن للأعضاء الجدد سوى الرد %{count} مرات في نفس الموضوع." + many: "آسفون، فلا يمكن للأعضاء الجدد سوى الرد %{count} مرة في نفس الموضوع." + other: "آسفون، فلا يمكن للأعضاء الجدد سوى الرد %{count} مرة في نفس الموضوع." embed: - start_discussion: "إبدأ نقاش" - continue: "الاستمرار في هذا النقاش" + start_discussion: "ابدأ نقاشا" + continue: "تابع النقاش" more_replies: - zero: "لا يوجد رد إضافي" - one: "رد واحد إضافي" - two: "ردّين إضافيين" - few: "ردود قليلة إضافية" - many: "ردود كثيرة إضافية" - other: "%{count} ردود إضافية" - loading: "تحميل النقاش" + zero: "لا ردود أخرى" + one: "رد واحد آخر" + two: "ردّان آخران" + few: "%{count} ردود أخرى" + many: "%{count} ردا آخر" + other: "%{count} رد آخر" + loading: "يحمّل النقاش..." permalink: "الرابط الثابت" imported_from: "هذا موضوع نقاش مصاحب للمدخل الأصلي على %{link}" - in_reply_to: "{اسم المستخدم}%" + in_reply_to: "◀ %{username}" replies: - zero: "لا يوجد رد" + zero: "لا ردود" one: "رد واحد" - two: "ردّين" - few: "ردود قليلة" - many: "ردود كثيرة" - other: "%{count} ردود" + two: "ردّان" + few: "%{count} ردود" + many: "%{count} ردا" + other: "%{count} رد" + no_mentions_allowed: "عذراً، لا يمكنك تنبيه أعضاء آخرين." too_many_mentions: - zero: "عذراً، لا يمكنكم تنويه مستخدمين آخرين." - one: "عذراً، يمكنك فقط تنويه مستخدم واحد في هذا المنشور." - other: "عذرا, يمكنك تذكير %{count} مستخدمين فقط في المشاركة." + zero: "عذرا, لا يمكنك تنبيه أي عضو آخر في مشاركة." + one: "عذراً، يمكنك تنبيه عضو آخر واحد فقط في مشاركة." + two: "عذراً، يمكنك تنبيه عضوان آخران فقط في مشاركة." + few: "عذرا, يمكنك تنبيه %{count} أعضاء آخرين فقط في مشاركة." + many: "عذرا, يمكنك تنبيه %{count} عضواً آخراً فقط في مشاركة." + other: "عذرا, يمكنك تنبيه %{count} عضو فقط في مشاركة." + no_mentions_allowed_newuser: "عذرا, الأعضاء الجدد لا يمكنهم تنبيه الأعضاء الآخرين." too_many_mentions_newuser: - zero: "عذرا, المستخدمون الجدد لا يمكنهم تذكير المستخدمين الأخرين." - one: "عذرا, المستخدمون الجدد يمكنهم تذكير مستخدم واحد أخر فقط في المشاركة." - other: "عذرا, المستخدمون الجدد يمكنهم تذكير %{count} مستخجمين فقط في المشاركة." + zero: "عذرا ، المستخدمون الجدد بامكانهم فقط تنبيه %{count} عضو في المشاركة ." + one: "عذرا ، المستخدمون الجدد بامكانهم فقط تنبيه عضو واحد فقط في المشاركة ." + two: "عذرا ، المستخدمون الجدد بامكانهم فقط تنبيه %{count} عضوين فقط في المشاركة ." + few: "عذرا ، المستخدمون الجدد بامكانهم فقط تنبيه %{count} أعضاء في المشاركة ." + many: "عذرا ، المستخدمون الجدد بامكانهم فقط تنبيه %{count} عضو في المشاركة ." + other: "عذرا ، المستخدمون الجدد بامكانهم فقط تنبيه %{count} عضو في المشاركة ." + no_images_allowed: "آسفون، لا يمكن للمستخدمين الجدد وضع صور في المنشورات." too_many_images: - zero: "عذراً. الأعضاء الجدد لا يمكنهم وضع الصور في المنشورات." - one: "عذراً. الأعضاء الجدد يمكنهم وضع صورة واحدة فقط في المنشور." - other: "عذرا, المستخدمون الجدد يمكنهم وضع %{count} صور فقط في المشاركة." + zero: "يمكن للمستخدمين الجدد وضع أيّ عدد من الصور في أي منشور." + one: "آسفون، يمكن للمستخدمين الجدد وضع صورة واحدة فقط في كل منشور." + two: "آسفون، يمكن للمستخدمين الجدد وضع صورتين فقط في كل منشور." + few: "آسفون، يمكن للمستخدمين الجدد وضع %{count} صور فقط في كل منشور." + many: "آسفون، يمكن للمستخدمين الجدد وضع %{count} صورة فقط في كل منشور." + other: "آسفون، يمكن للمستخدمين الجدد وضع %{count} صورة فقط في كل منشور." + no_attachments_allowed: "آسفون، لا يمكن للمستخدمين الجدد إرفاق ملفات إلى المنشورات." too_many_attachments: - zero: "عذراً. الأعضاء الجدد لا يمكنهم وضع مرفقات في المنشورات." - one: "عذراً. الأعضاء الجدد يمكنهم وضع مرفق واحد فقط في المنشور." - other: "عذرا, المستخدمون الجدد يمكنهم وضع %{count} مرفقات فقط في المشاركة." + zero: "يمكن للمستخدمين الجدد إرفاق أيّ عدد من الملفات إلى أي منشور." + one: "آسفون، يمكن للمستخدمين الجدد إرفاق ملف واحد فقط إلى كل منشور." + two: "آسفون، يمكن للمستخدمين الجدد إرفاق ملفين فقط إلى كل منشور." + few: "آسفون، يمكن للمستخدمين الجدد إرفاق %{count} ملفات فقط إلى كل منشور." + many: "آسفون، يمكن للمستخدمين الجدد إرفاق %{count} ملفا فقط إلى كل منشور." + other: "آسفون، يمكن للمستخدمين الجدد إرفاق %{count} ملف فقط إلى كل منشور." + no_links_allowed: "آسفون، لا يمكن للمستخدمين الجدد وضع روابط في المنشورات." too_many_links: - zero: "عذراً. الأعضاء الجدد لا يمكنهم وضع الروابط في المنشورات." - one: "عذراً. الأعضاء الجدد يمكنهم وضع رابط واحد فقط في المنشور." - other: "عذرا, المستخدمون الجدد يمكنهم وضع %{count} روابط فقط في المشاركة." + zero: "يمكن للمستخدمين الجدد وضع أيّ عدد من الروابط في أي منشور." + one: "آسفون، يمكن للمستخدمين الجدد وضع رابطا واحدا فقط في كل منشور." + two: "آسفون، يمكن للمستخدمين الجدد وضع رابطين فقط في كل منشور." + few: "آسفون، يمكن للمستخدمين الجدد وضع %{count} روابط فقط في كل منشور." + many: "آسفون، يمكن للمستخدمين الجدد وضع %{count} رابطا فقط في كل منشور." + other: "آسفون، يمكن للمستخدمين الجدد وضع %{count} رابط فقط في كل منشور." spamming_host: "عذرا لا يمكنك مشاركة رابط لهذا المضيف." - user_is_suspended: "المستخدمون الموقوفون لا يسمح لهم بالمشاركة." - topic_not_found: "هناك خطأ. ربما هذا الموضوع أغلق أو حذف وأنت تبحث عنه." + user_is_suspended: "ليس مسموحا للمستخدمين المعلّقة عضويتهم النشر." + topic_not_found: "حدث خطب ما. قد يكون الموضوع أُغلق أو حُذف وأنت تشاهده؟" just_posted_that: "هذا مماثل لما شاركته مؤخرا" has_already_been_used: "هو مستخدم بالفعل" invalid_characters: "يحتوي احرف غير صالحة " is_invalid: "غير صالح حاول ان تضع وصف اكثر" next_page: "الصفحة التالية ←" prev_page: "→ الصفحة السابقة " - page_num: "الصفحة رقم %{num}" + page_num: "الصفحة %{num}" home_title: "الصفحة الرئيسية " - topics_in_category: "المواضيع في '%{category}' الفئة" + topics_in_category: "المواضيع في فئة '%{category}'" rss_posts_in_topic: "مغذي RSS لـ'%{topic}'" - rss_topics_in_category: "مغذي RSS للمواضيع في '%{category}' الفئة" - author_wrote: "كتب %{author} :" - num_posts: "تعليق " - num_participants: "المشاركين" - read_full_topic: "قراءة العنوان كامل" + rss_topics_in_category: "مغذي RSS للمواضيع في فئة '%{category}'" + author_wrote: "كتب %{author}:" + num_posts: "المنشورات:" + num_participants: "المشاركون:" + read_full_topic: "اقرأ كامل الموضوع" private_message_abbrev: "رسالة" rss_description: latest: "آخر المواضيع" hot: "عناوين ساخنة" + top: "أفضل المواضيع" posts: "اخر المشاركات " - too_late_to_edit: "تم انشاء هذا التعليق منذ فترة وليس بالامكان تعديله او حذفه" + too_late_to_edit: "أُنشئ المنشور منذ فترة طويلة جدا، لذا تعديله أو حذفه لم يعد ممكنا." + revert_version_same: "ألاصدار الحالي يتطابق مع نفس ألاصدار الذي تحاول استرجاعه ." excerpt_image: "صورة" queue: delete_reason: "حذف عبر طابور مشاركة معتدل" groups: errors: can_not_modify_automatic: "لا يمكنك تعديل مجموعة تلقائية" - member_already_exist: " '%{username}' هو بالفعل عضو في هذه المجموع" + member_already_exist: " '%{username}' هو عضو في هذه المجموعة بالفعل." + invalid_domain: "'%{domain}' ليس نطاقا صالحا." + invalid_incoming_email: "'%{email_in}' ليس عنوان بريد الكتروني صالح ." + email_already_used_in_group: "'%{email}' مستخدم من قبل المجموعه '%{group_name}'. " + email_already_used_in_category: "'%{email}' مستخدم من قبل القسم '%{category_name}'." default_names: everyone: "الجميع" admins: "المسؤولين" @@ -189,12 +241,12 @@ ar: trust_level_4: "مستوى_الثقة_4" education: until_posts: - zero: "لا يوجد مشاركات" - one: "مشاركة واحدة" - two: "مشاركتين" - few: "مشاركات قليلة" - many: "مشاركات كثيرة" - other: "%{count} مشاركات" + zero: "لا منشورات" + one: "منشور واحد" + two: "منشوران" + few: "%{count} منشورات" + many: "%{count} منشورا" + other: "%{count} منشور" new-topic: | مرحبا بك في %{site_name} — **شكرا لك لأجل بدء محادثه جديدة!** @@ -206,15 +258,15 @@ ar: لمعلومات أكثر ، [انظر المبادئ التوجيهية مجتمعنا] (/guidelines). وهذه اللوحة ستظهر لك لأول مرة فقط %{education_posts_text}. new-reply: | - مرحباً بك في %{site_name} — **شكراً للمساهمة**! + مرحباً بك في %{site_name} — **شكراً لمشاركتك**! -هل يُحسن ردّك المحادثة في جانب معين؟ - -كن طيبا مع أصدقاءك أعضاء المجتمع. + -كن لطيفا مع أصدقاءك أعضاء المجتمع. - -نرحب بالنقد البناء, ولكن انتقاد الأفكار لا الناس! + -نرحب بالنقد البناء، ولكن انتقد الأفكار ولا تنتقد الأشخاص! - للمزيد, [انظر ارشادات المجتمع](/guidelines). هذه اللوحة ستظهر فقط لأول %{education_posts_text} لك. + للمزيد, [انظر إرشادات المجتمع](/guidelines). هذه اللوحة ستظهر فقط لأول %{education_posts_text} لك. avatar: | ### ماذا عن صورة لحسابك؟ @@ -253,41 +305,39 @@ ar: user_profile: bio_raw: "معلومات عنّي" errors: - messages: - is_invalid: "غير صالح حاول ان تضع وصف اكثر" - has_already_been_used: "مستخدم بالفعل " models: topic: attributes: base: - warning_requires_pm: "يمكنك ارفاق تحذيرات في الرسائل الخاصة فقط " - too_many_users: "يمكنك ارسال التحذيرات لمستخدم واحد فقط في نفس الوقت" - cant_send_pm: "عذرا، لا يمكنك إرسال رسالة خاصة لهذا المستخدم." - no_user_selected: "يجب تحديد مستخدم موجود " + warning_requires_pm: "يمكنك إرفاق التحذيرات إلى الرسائل الخاصة فقط." + too_many_users: "يمكنك إرسال التحذيرات إلى مستخدم واحد كل مرة." + cant_send_pm: "آسفون، لا يمكنك إرسال رسالة خاصة إلى هذا المستخدم." + no_user_selected: "عليك تحديد مستخدم صالح." user: attributes: password: - common: "كلمة المرور هذه ضعيفة وهي من اكثر 10000 كلمة مرور مستخدمة يرجى استخدام كلمة مرور اكثر امنا" - same_as_username: "كلمة المرور هي نفس اسم المستخدم. يرجى أختيار كلمة مرور أخرى أكثر امناً" - same_as_email: "كلمة المرور هي نفس عنوان البريد الألكتروني الخاص بك. يرجى أختيار كلمة مرور أخرى أكثر أماناً" + common: "هي واحدة من أكثر 10000 كلمة مرور شائعة. من فضلك استخدم كلمة مرور آمنة أكثر." + same_as_username: "هي نفس اسم المستخدم. من فضلك استخدم كلمة مرور آمنة أكثر." + same_as_email: "هي نفس بريدك الإلكتروني. من فضلك استخدم كلمة مرور آمنة أكثر." ip_address: signup_not_allowed: "التسجيل غير مسموح من هذا الحساب." color_scheme_color: attributes: hex: - invalid: "هذا اللون غير صالح" + invalid: "ليس لونا صالحا" + <<: *errors user_profile: no_info_me: "
" no_info_other: "
" vip_category_name: "استراحة" - vip_category_description: "الفئة مخصصة للأعضاء ذوي مستوى الثقة 3 أو أعلى." + vip_category_description: "فئة خاصة للمستخدمين ذوي مستوى الثقة 3 فأعلى." meta_category_name: "موقع التغذية الإرتجاعية" - meta_category_description: "نقاش حول هذا الموقع, كيفية تنظيمه والعمل عليه أكثر وكيف يمكننا تحسينه." - staff_category_name: "الإدارة" + meta_category_description: "النقاش حول هذا الموقع، وتنظيمه، وكيفية عمله وطرق تطويره." + staff_category_name: "الطاقم" staff_category_description: "فئة مخصصة للنقاش في مواضيع الإدارة. المواضيع مرئية فقط للأدارة وللمشرفين." assets_topic_body: "هذا الموضوع مشاهد بشكل دائم للأعضاء فقط . ولحفظ الصورة والملف استخدم موقع التصميم. لا تقوم بحذفها\n\n\nكيف يكون العمل هنا.\n\n1. الرد على الموضوع.\n\n2. رفع كل الصور التي تود أن تستخدمها في الشعار." lounge_welcome: - title: "مرحبا بك في الاستراحة." + title: "مرحبا بك في الاستراحة" body: |2 تهانينا! :confetti_ball: @@ -310,14 +360,16 @@ ar: [trust]: https://meta.discourse.org/t/what-do-user-trust-levels-do/4924 category: - topic_prefix: "عن الفئة %{category}." - replace_paragraph: "[استبدل هذا الفقرة الأولى بوصف قصير لفئتك الجديدة. سيظهر هذا التوجيه في منطقة اختيار الفئة, لذا حاول أن تبقيها أقل من 200 حرف. حتى عند تحريرك لهذا النص أو إنشائك لموضوع, هذه الفئة لن تظهر على صفحة الفئات.]" - post_template: "%{replace_paragraph}\n\nاستخدم الفقرات التالي لوصف طويل, إضافة لإنشاء أي فئة قواعد أو توجيهات.\n\nبعض الأشياء تؤخذ بعين الإعتبار في أسفل أي ردود لنقاش:\n\n- لما هذا الفئة؟لماذا يختار الناس هذه الفئة لمواضيعهم؟\n\n- كيف تختلف الفئات الأخرى عن التي لدينا؟\n\n- هل نحتاج هذه الفئة؟\n\n- هل يجب أن ندمج هذه مع فئة أخرى, أو تقسم إلى أكثر من قئة ؟\n" + topic_prefix: "عن فئة %{category}." + replace_paragraph: "(قم بإستبدال هذة القطعة بإختصار عن التصنيف الجديد. هذا الدليل سوف يظهر في منطقة إختيار التصنيف, لذا حاول ان تبقيها اقل من 200 حرف. ** حتي تقوم بتعديل هذا الوصف أو تقوم ب إضافة مقال, هذا التصنيف لن يظهر في صفحة التصنيفات**)" + post_template: "%{replace_paragraph}\n\nإستخدم الفقرات الآتية لوضع وصف أطول ، أو لإنشاء تعليمات أو قوانيناً لفئة جديدة :\n\n- لماذا يجب على الأعضاء والزوار استخدام هذه الفئة ؟ ولم انشئت ؟\n\n- ما هو الاختلاف بين هذه الفئة والفئات الأخرى الموجودة في الموقع ؟\n\n- ما هي النقاط الأساسية والعامة التي يجب أن تحتويه المواضيع في هذه الفئة ؟\n\n- هل نحتاج حقا إلى هذه الفئة ؟ وهل نستطيع دمجها مع فئة رئيسية أو فئة فرعية أخرى ؟\n" errors: uncategorized_parent: "غير مصنف لا يمكن أن يكون فئة الأم" self_parent: "الفئة الفرعية لا يمكن ان تكون كالفئة الرئيسية." depth: "لا يمكنك تضمين فئة فرعية تحت فئة فرعية اخرى" - email_in_already_exist: "البريد الإلكتروني الوارد '%{email_in}' مستخدم حاليا للفئة '%{category_name}'." + invalid_email_in: "'%{email_in}' ليس عنوان بريد الكتروني صالح ." + email_already_used_in_group: "'%{email}' مستخدم من قبل المجموعه '%{group_name}'. " + email_already_used_in_category: "'%{email}' مستخدم من قبل القسم '%{category_name}'." cannot_delete: uncategorized: "لايمكن حذف الغير مصنف" has_subcategories: "لايمكن حذف هذه الفئة لأنها تحتوي على فئات فرعية " @@ -329,80 +381,92 @@ ar: many: "لا يمكنك حذف هذه الفئة ﻷن لها مواضيع كثيرة.أقدم موضوع هو %{topic_link}." other: "لا يمكنك حذف هذه الفئة ﻷن لها %{count} مواضيع.أقدم موضوع هو %{topic_link}." topic_exists_no_oldest: "لايمكن حذف هذه الفئة لعدد المواضيع التي تحتويه. عدد المواضيع %{count}." + uncategorized_description: "المواضيع التي لا تحتاج للتصنيف , او لا تتناسق مع اي تصنفيات اخرى موجوده" trust_levels: newuser: title: "مستخدم جديد " basic: title: "مستخدم أساسي" - regular: + member: title: "عضو" - leader: + regular: title: "منتظم" - elder: + leader: title: "قائد" change_failed_explanation: "حاولت تخفيض رتبة %{user_name} إلى '%{new_trust_level}'. أيضا مستوى الثقة لهم حاليا '%{current_trust_level}'. %{user_name} سيبقى في '%{current_trust_level}' - إذا رغبت في تخفيض رتبة عضو أنظر لمستوى الثقة أولاً." rate_limiter: - slow_down: "لقد أنجزت هذا العمل مرات كثيرة، حاول مجددا." + slow_down: "لقد قمت بهذا الإجراء عدّة مرات. فحاول مجددا لاحقا." too_many_requests: "لدينا حد يومي لعدد المرات التي يمكن للعمل أن ينجز بها. رجاءا انتظر %{time_left} قبل المحاولة مجدداً." + by_type: + first_day_replies_per_day: "لقد وصلت للعدد الأقصى للردود التي يمكن للعضو الجديد إنشائها في يومهم الأول. رجاء انتظر %{time_left} قبل المحاولة مجددا." + first_day_topics_per_day: "لقد وصلت للعدد الأقصى للمواضيع التي يمكن للعضو الجديد إنشائها في يومهم الأول. رجاء انتظر %{time_left} قبل المحاولة مجددا." + create_topic: "أنت تنشأ مواضيع بسرعة عالية. رجاء انتظر %{time_left} قبل المحاولة مجددا." + create_post: "أنت ترد بسرعة عالية. رجاء انتظر %{time_left} قبل المحاولة مجددا." + delete_post: "أنت تقوم بمسح المنشورات بسرعه عاليه . الرجاء الانتظار %{time_left} قبل المحاوله مجدداً" + topics_per_day: "لقد وصلت للعدد الأقصى للمواضيع الجديدة اليوم. رجاء انتظر %{time_left} قبل المحاولة مجددا." + pms_per_day: "لقد وصلت للعدد الأقصى للرسائل اليوم. رجاء انتظر %{time_left} قبل المحاولة مجددا." + create_like: "لقد وصلت للعدد الأقصى للإعجابات اليوم. رجاء انتظر %{time_left} قبل المحاولة مجددا." + create_bookmark: "لقد وصلت للعدد الأقصى للتفضيلات اليوم. رجاء انتظر %{time_left} قبل المحاولة مجددا." + edit_post: "لقد وصلت للعدد الأقصى للتعديلات اليوم. رجاء انتظر %{time_left} قبل المحاولة مجددا." hours: - zero: "1 ساعة" - one: "1 ساعة" - two: "%{count} ساعة" + zero: "أقل من ساعة" + one: "ساعة واحدة" + two: "ساعتان" few: "%{count} ساعات" - many: "%{count} ساعات" - other: "%{count} ساعات" + many: "%{count} ساعة" + other: "%{count} ساعة" minutes: - zero: "1 دقيقة" - one: "1 دقيقة" - two: "%{count} دقيقة" + zero: "أقل من دقيقة" + one: "دقيقة واحدة" + two: "دقيقتان" few: "%{count} دقائق" - many: "%{count} دقائق" - other: "%{count} دقائق" + many: "%{count} دقيقة" + other: "%{count} دقيقة" seconds: - zero: "1 ثانية" - one: "1 ثانية" - two: "%{count} ثواني" - few: "%{count} ثواني" - many: "%{count} ثواني" - other: "%{count} ثواني" + zero: "أقل من ثانية" + one: "ثانية واحدة" + two: "ثانيتان" + few: "%{count} ثوان" + many: "%{count} ثانية" + other: "%{count} ثانية" datetime: distance_in_words: - half_a_minute: "< 1 دقيقة" + half_a_minute: "< 1دق" less_than_x_seconds: - zero: "< صفر ثانية" - one: "< ثانية واحدة" - two: "< ثانيتان" - few: "< ثواني قليلة" - many: "< ثواني كثيرة" - other: "< %{count} ثوان" + zero: "< %{count}ث" + one: "< %{count}ث" + two: "< %{count}ث" + few: "< %{count}ث" + many: "< %{count}ث" + other: "< %{count}ث" x_seconds: - zero: "1ث" - one: "1ث" - two: "ث {count}%" - few: "ث {count}%" - many: "ث {count}%" - other: "ث {count}%" + zero: "%{count}ث" + one: "%{count}ث" + two: "%{count}ث" + few: "%{count}ث" + many: "%{count}ث" + other: "%{count}ث" less_than_x_minutes: - zero: "< 1د" - one: "< 1د" - two: "< %{count} د" - few: "< %{count} د" - many: "< %{count} د" - other: "< %{count} د" + zero: "< %{count}دق" + one: "< %{count}دق" + two: "< %{count}دق" + few: "< %{count}دق" + many: "< %{count}دق" + other: "< %{count}دق" x_minutes: - zero: "1د" - one: "1د" - two: "%{count} د" - few: "%{count} د" - many: "%{count} د" - other: "%{count} د" + zero: "%{count}دق" + one: "%{count}دق" + two: "%{count}دق" + few: "%{count}دق" + many: "%{count}دق" + other: "%{count}دق" about_x_hours: - zero: "0 ساعة " - one: "ساعة واحدة" - two: "ساعتان" - few: "ساعات قليلة" - many: "ساعات كثيرة" - other: "%{count}ساعة" + zero: "%{count}س" + one: "%{count}س" + two: "%{count}س" + few: "%{count}س" + many: "%{count}س" + other: "%{count}س" x_days: zero: "0 يوم " one: "يوم واحد" @@ -446,132 +510,136 @@ ar: many: "س %{count}" other: "س %{count}" distance_in_words_verbose: - half_a_minute: "الأن" + half_a_minute: "منذ لحظات" less_than_x_seconds: - zero: "الآن" - one: "الآن" - two: "الآن" - few: "الآن" - many: "الآن" - other: "الآن" + zero: "منذ لحظات" + one: "منذ لحظات" + two: "منذ لحظات" + few: "منذ لحظات" + many: "منذ لحظات" + other: "منذ لحظات" x_seconds: - zero: "1 ثانية مضت" - one: "1 ثانية مضت" - two: "%{count} ثواني مضت" - few: "%{count} ثواني مضت" - many: "%{count} ثواني مضت" - other: "%{count} ثواني مضت" + zero: "قبل لحظات" + one: "قبل ثانية واحدة" + two: "قبل ثانيتين" + few: "قبل %{count} ثوان" + many: "قبل %{count} ثانية" + other: "قبل %{count} ثانية" less_than_x_minutes: - zero: "أقل من 1 دقيقة مضت" - one: "أقل من 1دقيقة مضت" - two: "أقل من %{count} دقيقتين مضت" - few: "أقل من %{count} دقائق مضت" - many: "أقل من %{count} دقائق مضت" - other: "أقل من %{count} دقائق مضت" + zero: "قبل لحظات" + one: "قبل أقل من دقيقة" + two: "قبل أقل من دقيقتين" + few: "قبل أقل من %{count} دقائق" + many: "قبل أقل من %{count} دقيقة" + other: "قبل أقل من %{count} دقيقة" x_minutes: - zero: "1 دقيقة مضت" - one: "1 دقيقة مضت" - two: "%{count} دقائق مضت" - few: "%{count} دقائق مضت" - many: "%{count} دقائق مضت" - other: "%{count} دقائق مضت" + zero: "قبل أقل من دقيقة" + one: "قبل دقيقة واحدة" + two: "قبل دقيقتين" + few: "قبل %{count} دقائق" + many: "قبل %{count} دقيقة" + other: "قبل %{count} دقيقة" about_x_hours: - zero: "1 ساعة مضت" - one: "1 ساعة مضت" - two: "%{count} ساعات مضت" - few: "%{count} ساعات مضت" - many: "%{count} ساعات مضت" - other: "%{count} ساعات مضت" + zero: "قبل أقل من ساعة" + one: "قبل ساعة واحدة" + two: "قبل ساعتين" + few: "قبل %{count} ساعات" + many: "قبل %{count} ساعة" + other: "قبل %{count} ساعة" x_days: - zero: "1 يوم مضى" - one: "1 يوم مضى" - two: "%{count} أيام مضت" - few: "%{count} أيام مضت" - many: "%{count} أيام مضت" - other: "%{count} أيام مضت" + zero: "قبل أقل من يوم" + one: "قبل يوم واحد" + two: "قبل يومين" + few: "قبل %{count} أيام" + many: "قبل %{count} يوما" + other: "قبل %{count} يوم" about_x_months: - zero: "حوالي 1 شهر مضى" - one: "حوالي 1 شهر مضى" - two: "حوالي %{count} أشهر مضت" - few: "حوالي %{count} أشهر مضت" - many: "حوالي %{count} أشهر مضت" - other: "حوالي %{count} أشهر مضت" + zero: "قبل حوالي أقل من شهر" + one: "قبل حوالي شهر واحد" + two: "قبل حوالي شهرين" + few: "قبل حوالي %{count} أشهر" + many: "قبل حوالي %{count} شهرا" + other: "قبل حوالي %{count} شهر" x_months: - zero: "1 شهر مضى" - one: "1 شهر مضى" - two: "%{count} أشهر مضىت" - few: "%{count} أشهر مضىت" - many: "%{count} أشهر مضىت" - other: "%{count} أشهر مضىت" + zero: "قبل أقل من شهر" + one: "قبل شهر واحد" + two: "قبل شهرين" + few: "قبل %{count} أشهر" + many: "قبل %{count} شهرا" + other: "قبل %{count} شهر" about_x_years: - zero: "حوالي 1 سنة مضت" - one: "حوالي 1 سنة مضت" - two: "حوالي %{count} سنوات مضت" - few: "حوالي %{count} سنوات مضت" - many: "حوالي %{count} سنوات مضت" - other: "حوالي %{count} سنوات مضت" + zero: "قبل حوالي أقل من سنة" + one: "قبل حوالي سنة واحدة" + two: "قبل حوالي سنتين" + few: "قبل حوالي %{count} سنوات" + many: "قبل حوالي %{count} سنة" + other: "قبل حوالي %{count} سنة" over_x_years: - zero: "منذ 1 سنة مضت" - one: "منذ 1 سنة مضت" - two: "منذ %{count} سنوات مضت" - few: "منذ %{count} سنوات مضت" - many: "منذ %{count} سنوات مضت" - other: "منذ %{count} سنوات مضت" + zero: "قبل أكثر من أقل من سنة" + one: "قبل أكثر من سنة واحد" + two: "قبل أكثر من سنتين" + few: "قبل أكثر من %{count} سنوات" + many: "قبل أكثر من %{count} سنة" + other: "قبل أكثر من %{count} سنة" almost_x_years: - zero: "تقريبا 1 سنة مضت" - one: "تقريبا 1 سنة مضت" - two: "تقريبا %{count} سنتين مضت" - few: "تقريبا %{count} سنوات مضت" - many: "تقريبا %{count} سنوات مضت" - other: "تقريبا %{count} سنوات مضت" + zero: "قبل حوالي أقل من سنة" + one: "قبل حوالي سنة واحدة" + two: "قبل حوالي سنتين" + few: "قبل حوالي %{count} سنوات" + many: "قبل حوالي %{count} سنة" + other: "قبل حوالي %{count} سنة" password_reset: - no_token: "عذراً , رابط تغيير كلمة المرور قديم . رجاءً أعد عملية إسترجاع كلمة المرور ." - choose_new: "يرجى اختيار كلمة مرور جديدة" - choose: "يرجى أختيار كلمة مرور" - update: 'تحديث كلمة المرور' + no_token: "آسفون، رابط تغيير كلمة المرور قديم جدا. انقر زر \"تسجيل الدخول\" واختر \"نسيت كلمة مروري\" لنرسل لك رابطا آخر." + choose_new: "من فضلك اختر كلمة مرور جديدة" + choose: "من فضلك اختر كلمة مرور" + update: 'حدّث كلمة المرور' save: 'تعين كلمة المرور' title: 'إعادة تعين كلمة المرور' - success: "تم تغير كلمة المرور بنجاح ويمكنك تسجيل الدخول الأن " - success_unapproved: "تم تغير كلمة المرور بنجاح." - continue: "الاستمرار لـ %{site_name}" + success: "غُيّرت كلمة مرورك بنجاح ونحن الآن قد سجلنا الدخول." + success_unapproved: "غُيّرت كلمة مرورك بنجاح." + continue: "تابع إلى %{site_name}" change_email: - confirmed: "تم تحديث بريدك اﻹلكتروني" - please_continue: "الاستمرار لـ %{site_name}" - error: "حدث خطأ عند تغير بريدك الإلكتروني. ربما يكون هذا البريد الإلكتروني قد أستوخدم من قبل ؟" + confirmed: "حُدّث بريدك الإلكتروني." + please_continue: "تابع إلى %{site_name}" + error: "حدث خطأ في تغيير عنوان بريدك الإلكتروني. لربما يكون العنوان مستخدما بالفعل." + already_done: "نأسف عنوان التاكيد هدا لم يعد صالحا بعد الان. ربما تم تغيير بريدك بالفعل؟" + authorizing_old: + title: "شكرا لك لتاكيدك عنوان بريدك الحالي." + description: "نحن الان نقوم بمراسله عنوانك الجديد للتأكيد." activation: - action: "أضغط هنا لتفعيل حسابك" - already_done: "رابط تأكيد الحساب لم يعد صالحاً , ربما الحساب نشط ؟" - please_continue: "تأكيد حسابك الجديد : جاري توجيهك إلى الصفحة الرئيسية ." - continue_button: "الاستمرار لـ %{site_name}" + action: "انقر هنا لتنشيط حسابك." + already_done: "آسفون، لم يعد رابط تأكيد الحساب صالحا. لربما يكون الحساب نشطا بالفعل." + please_continue: "أُكّد حسابك الجديد، سيُعاد توجيهك إلى الصفحة الرئيسية." + continue_button: "تابع إلى %{site_name}" welcome_to: "مرحبا بك في %{site_name}!" approval_required: "يجب على المشرف أن يقبل حسابك الجديد قبل أن تستطيع الدخول لهذا المنتدى. سوف تتلقى بريد إلكتروني عندما يتم قبول حسابك." - missing_session: "نحن لا نستطيع أن نتحقق أن حسابك قد تمّ إنشاءه ، يرجى التأكد بإن ملفات تعريف الاتباط ** الملفات المؤقته مفعّله لديك ** cookies ." + missing_session: "يتعذّر علينا معرفة إن كان حسابك قد أُنشئ أم لا، من فضلك تحقّق من أن الكعكات/الكوكيز مفعّلة." post_action_types: off_topic: title: 'خارج الموضوع' description: 'لا صلة للمشاركة بالنقاش الحالي على النحو المحدد بواسطة العنوان والمشاركة الأولى، وربما ينبغي نقلها لمكان أخر.' long_form: 'أبلغ أن هذا خارج الموضوع.' spam: - title: 'بريد مزعج' - description: 'هذه المشاركة هي إعلان. ليست مفيدة أو مناسبة للموضوع الحالي، ولكنه نوع ترويجي.' - long_form: 'تبليغ على أنه مزعج' - email_title: '"%{title}" تم الأبلاغ على أنه بريد مزعج' + title: 'سخام' + description: 'هذا المنشور إعلان. المنشور ليس مفيد أو مرتبط بالموضوع الحالي، ولكنّه ترويجي فقط.' + long_form: 'علّم هذا على أنّه سخام' + email_title: '"%{title}" عُلّم على أنّه سخام' email_body: "%{link}\n\n%{message}" inappropriate: title: 'غير مناسب' description: 'هذه المشاركة تشمل محتوى أي شخص عاقل سيعتبره عدواني، أو مسيئ، أو انتهاك لـمبادئ مجتمعنا التوجيهية.' long_form: 'ترفع علم هذا عن صورة غير ملائمة' notify_user: - title: 'رسالة @{{username}}' - description: 'هذه المشاركة تحتوي بعض الأشياء التي أريد أن أتكلم مع هذا الشخص حولها مباشرة وسرا. لا يمكنك عمل تبليغ.' + title: 'أرسل رسالة إلى @{{username}}' + description: 'أود الحديث مع هذا الشخص مباشرة وعلى انفراد عن هذا المنشور.' long_form: 'العضو أرسل' email_title: 'مشاركتك في "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: title: "شيء آخر " - description: 'تتطلب هذه الوظيفة الاهتمام مشرف لسبب آخر غير المذكورة اعلاه.' - long_form: 'علم هذا لتنبيه المراقب' - email_title: 'المشاركة "%{title}" تتطلب موافقة المشرف' + description: 'يحتاج هذا المنشور إجراء من الطاقم لسبب آخر لم يُذكر أعلاه.' + long_form: ' بَلِّغ عن هذا لتنبيه الطاقم ' + email_title: 'المنشور في "%{title}" يتطلب تنبيه الطاقم.' email_body: "%{link}\n\n%{message}" bookmark: title: 'المفضلة' @@ -596,7 +664,7 @@ ar: long_form: 'ترفع علم هذا عن صورة غير ملائمة' notify_moderators: title: "شيء آخر " - description: 'هذا الموضوع يتطلب اهتمام مشرف عام يعتمد على دليل التوجيهات, TOS, أو لسبب أخر غير مذكور أعلاه.' + description: 'هذا الموضوع يتطلب اهتمام الطاقم العام معتمداً على التوجيهات, شروط الخدمة, أو لسبب آخر لم يذكر أعلاه.' long_form: 'علم هذا لتنبيه المراقب' email_title: 'الموضوع "%{title}" يتطلب موافقة المشرف' email_body: "%{link}\n\n%{message}" @@ -632,6 +700,10 @@ ar: title: "الأعضاء جدد" xaxis: "يوم" yaxis: "عدد الأعضاء الجدد" + profile_views: + title: "مشاهدات ملف تعريف العضو" + xaxis: "يوم" + yaxis: "عدد مشاهدات ملف تعريف العضو" topics: title: "المواضيع" xaxis: "اليوم" @@ -783,37 +855,7 @@ ar: consumer_email_warning: "موقعك مهيئ لاستخدام Gmail (أو مستهلك خدمة بريد إلكتروني أخر) لإرسال بريد إلكتروني. حدود Gmail كمية رسائل البريد الإلكتروني التي يمكنك إرسالها. فكر باستخدام مزود خدمة بريد إلكتروني مثل mandrill.com لضمان أهداف البريد الإلكتروني." site_contact_username_warning: "أدخل اسم حسابات الأعضاء العاملين الودودين لإرسال رسالة مهمة آليا من تحديث site_contact_username في إعدادات الموقع." notification_email_warning: "رسائل التنبية البريدية لم تكن مرسلة من عنوان بريدي صالح على مجالك؛ توصيل البريد سيكون غير منتظم ولايمكن الاعتماد عليها. الرجاء وضع رسائل التنبية في عنوان بريدي صالح في إعدادات الموقع Site Settings." - content_types: - education_new_reply: - title: "مستخدم جديد للتعليم: الردود الأولى" - description: "ينبثق الدليل بطريقه اوتوماتيكيه فوق المؤلف عندما يبدا المستخدمون الجدد بكتابه اول ردين جديدين لهم " - education_new_topic: - title: "مستخدم جديد للتعليم: موضوعات الأولى" - description: "ينبثق الدليل بطريقه اوتوماتيكيه للمؤلف عندما يبدا المستخدمون الجدد بكتابه اول ردين جديدين لهم " - usage_tips: - title: "توجيه مستخدم الجديد" - description: "الإرشادات والمعلومات الأساسية للمستخدمين الجدد. " - welcome_user: - title: "مرحباً: عضو جديد" - description: "هذه الرسالة تُرسل تلقائيًا لجميع أعضائنا الجدد حال اشتراكهم" - welcome_invite: - title: "مرحباً: عضو مدعو" - description: "ترسل رسالة أليا لكل الأعضاء المدعوين حديثا عندما يقبلون دعوة من عضو أخر مشارك." - login_required_welcome_message: - title: "مطلوب لتسجيل الدخول : رسالة ترحيب" - description: "رسالة الترحيب التي تظهر للأعضاء المسجلين خروجهم عندما يفعلون إعداد \"تسجيل الدخول مطلوب\"" - login_required: - title: "مطلوب لتسجيل الدخول : الصفحة الرئيسية" - description: "النص الظاهر للأعضاء الغير مصرح بهم عند الحاجة لتسجيل الدخول للموقع." - head: - title: "عنوان HTML رئيسي " - description: "HTML الذي سيدرج داخل علامات
." - top: - title: "أعلى الصفحة" - description: "HTML التي ستكون مضافة في الأعلى لكل صفحة ( بعد رأس الصفحة، أو قبل الملاحة أو عنوان الموضوع)." - bottom: - title: "أسفل الصفحة" - description: "HTML التي ستضاف قبل علامة ." + subfolder_ends_in_slash: "إعدادات المجلدات الداخلية خاطئ;ال DISCOURSE_RELATIVE_URL_ROOT يجب ان تنتهي ب سلاش." site_settings: censored_words: "الكلمات التي ستستبدل تلقائيا مع ■■■■" delete_old_hidden_posts: "سيتم حذف الوظائف المخفية تلقائيًا إذا زادت مدة الإخفاء أكثر من 30 يومًا" @@ -828,7 +870,6 @@ ar: min_private_message_title_length: "الحد الأدنى المسموح به لطول عنوان لرسالة في الأحرف" min_search_term_length: "الحد الأدنى الصالح لطول مصطلح في الأحرف" allow_uncategorized_topics: "اسمح بتصميم النقاشات من غير فئات. تحذير: اذا كان هناك نقاشات غير مصنفه، يجب عليك تصنيفها قبل اغلاق هذا " - uncategorized_description: "الوصف للفئة غير المصنفة. اتركه فارغا لعدم الوصف." allow_duplicate_topic_titles: "اسمح بالمواضيع المماثلة والعناوين المكررة." unique_posts_mins: "كمية الدقائق التي يمكن للعضو قبلها إنشاء مشاركة مع نفس المحتوى مجددا" educate_until_posts: "عندما يبدا المستخدم كتابه منشورهم الاول.، اظهر انبثاق لوحه تعليمات المستخدم الجديد في المؤلف" @@ -841,7 +882,7 @@ ar: download_remote_images_to_local: "تحويل الصور البعيدة إلى صور محلية بواسطة تحميلها؛ بإستثناء الصور التالفة" download_remote_images_threshold: "ادني مساحه للقرص ضروربه لتحميل الصور البعيده محليا ( في المئه) " disabled_image_download_domains: "الصور البعيدة لن يتم تنزيلها من هذا المجال. قائمة Pipe-delimited." - ninja_edit_window: "ل(n) ثواني بعد النشر، التعديل الذي سيتم لن يصنع نسخه جديده في القائمه التاريخيه للمنشورات" + editing_grace_period: "خلال (n) ثواني بعد نشر المشاركة ، التعديل لن يقوم بانشاء نسخة جديدة في السجل الخاص بالتعديل ." post_edit_time_limit: "الكاتب يتستطيع تعديل و مسح مشاركته لعده (n) دقائق بعد النشر. اضبطه للعدد0 للابد" edit_history_visible_to_public: "اسمح لاي شخص ان يرى النسخ السابقه للمنشورات المعدله. عندما يتم تعطيلها.،فقط اعضاء فريق العمل يمكنهم رؤيتها " delete_removed_posts_after: "المشاركات التي تم إزالتها عن طريق الكتاب سيتم مسحها اوتوماتيكياً بعد(n) ساعات ة. اذا تم ضبطها علي 0، سيتم مسح المشاركه فوراً" @@ -871,7 +912,7 @@ ar: summary_likes_required: "الحد الأدنى للإعجابات في الموضوع قبل \"تلخيص هذا الموضوع\" مفعل." summary_percent_filter: "عندما يضغط المستخدم على \"تلخيص هذا الموضوع\"، يظهر أعلى % o المشاركات." summary_max_results: "الحد الأقصى للمشاركات العائدة بـ 'ملخص هذا الموضوع'" - enable_private_messages: "يسمح مستوى الثقة 1 للمستخدمين بإنشاء والرد على الرسائل" + enable_private_messages: "يسمح مستوى الثقة 1 (قابل للتغيير من خيار ادنى مستويات الثقة لارسال الرسائل ) للمستخدمين بإنشاء والرد على الرسائل" enable_long_polling: "ناقل الرسالة المستخدم للاشعارات يمكن أن يستخدم التصويت الطويل." long_polling_base_url: "قاعدة URL تستخدم للتصويت الطويل (عندما CDN يخدم المحتوى الديناميكي, تأكد لتعيين هذا لسحب الأصل) eg: http://origin.site.com" long_polling_interval: "المدة الزمنية التي سينتظرها الخادم قبل الرد على العملاء في حالة عدم وجود أية بيانات لارسالها (للأعضاء المسجلين فقط)" @@ -890,9 +931,10 @@ ar: notify_mods_when_user_blocked: "إذا تم حظر المستخدم تلقائيا، وإرسال رسالة الى جميع المشرفين." flag_sockpuppets: "إذا رد أحد المستخدمين جديد إلى موضوع من عنوان IP نفسه باسم المستخدم الجديد الذي بدأ هذا الموضوع، علم كل من مناصبهم كدعاية المحتملين." traditional_markdown_linebreaks: "استعمل السطور التالفه التقليديه في Markdown, التي تتطلب مساحتين بيضاوين للسطور التالفه" - allow_html_tables: "السماح للجداول لتكون مُدخلة بـMarkdown بإستخدام علامات HTML, و TABLE, THEAD, TD, TR, TH تكون قائمة بيضاء (تتطلب إعادة انشاء كامل لكل المشاركات القديمة التي تحتوي على جداول)" + allow_html_tables: "كل الجداول يجب ان تدخل ب لغة ال HTML مثال TABLE , THEAD , TD , TR , TH سوف يأوذن لهم ( تتطلب مراجعة لكل المقالات القديمة )" post_undo_action_window_mins: "عدد الدقائق التي يسمح فيها للأعضاء بالتراجع عن آخر إجراءاتهم على المنشور (إعجاب، اشارة، إلخ...)" must_approve_users: "يجب أن الموظفين يوافق على جميع حسابات المستخدم الجديدة قبل أن يتم السماح لهم للوصول إلى الموقع. تحذير: تمكين هذا لموقع الحية إلغاء وصول المستخدمين الحاليين غير الموظفين!" + pending_users_reminder_delay: "نبه المشرفين إذا وجد اعضاء ينتظرون الموافقة لمدة اطول من الساعات ، قم بوضع الخيار -1 لايقاف التنبيهات ." ga_tracking_code: "تحليلات Google (ga.js) تتعقب رمز الشيفرة، مثال: UA-12345678-9; انظر http://google.com/analytics" ga_domain_name: "تحليلات Google (ga.js) تتعقب اسم المجال، مثال: mysite.com; انظر http://google.com/analytics" ga_universal_tracking_code: "تحليلات Google العالمية (analytics.js) تتعقب رمز الشيفرة، مثال: UA-12345678-9; انظر http://google.com/analytics" @@ -901,6 +943,7 @@ ar: enable_noscript_support: "فعل دعم محرك بحث webcrawler عبر علامة غير نصية." allow_moderators_to_create_categories: "السماح للمشرفين إنشاء قسم جديد" cors_origins: "اسمح بالأصول للطلبات عبر المنشأ (CORS). كل أصل يجب أن يتضمن http:// أو https://. متغير env لـ DISCOURSE_ENABLE_CORS يجب أن يعين إلى true ليعمل CORS." + use_admin_ip_whitelist: "المدير فقط يمكنه تسجيل الدخول إذا كانت عناوين IP لهم معرفة في قائمة IP المحجوبة. (المدير > السجلات > IP المحجوبة)" top_menu: "حدد الأدوات التي تظهر في ملاحة الصفحة الرئيسية، وما ترتيبها. مثال الأخير|الجديد|غير مقروء|فئات|أعلى|مقروء|مشارك|مفضلات" post_menu: "تحديد العناصر التي تظهر في القائمة آخر، وبأي ترتيب. مثال مثل | تحرير | العلم | حذف | سهم | المرجعية | الرد" post_menu_hidden_items: "عناصر القائمة لإخفاء افتراضيا في القائمة آخر ما لم يتم النقر على القطع التوسع جرا." @@ -912,15 +955,15 @@ ar: suppress_reply_directly_above: "لا تظهر للتوسع في الرد لعلى وظيفة عندما يكون هناك سوى رد واحد مباشرة فوق هذا المنصب." suppress_reply_when_quoting: "لا تظهر للتوسع في الرد لعلى وظيفة عندما يكون هناك سوى رد واحد مباشرة فوق هذا المنصب." max_reply_history: "الحد الأقصى لعدد الردود على توسيع عند توسيع في الرد ل" - experimental_reply_expansion: "إخفاء ردود المتوسطة عند توسيع ردا على (تجريبي)" topics_per_period_in_top_summary: "عدد من أهم الموضوعات هو مبين في موجز أعلى الافتراضية المواضيع." topics_per_period_in_top_page: "عدد من أهم الموضوعات هو مبين في موجز أعلى الافتراضية المواضيع." redirect_users_to_top_page: "إعادة توجيه تلقائيا للمستخدمين الجدد وغائبة لمدة طويلة إلى أعلى الصفحة." + top_page_default_timeframe: "الوقت المثبت علي الصفحة الأكثر مشاهدة." show_email_on_profile: "إظهار بريدك المستخدم على صفحته الشخصية (مرئية فقط لأنفسهم والموظفين)" email_token_valid_hours: "نسيت كلمه السر/ تنشيط رموز الحساب صالحه ل(n) ساعات" email_token_grace_period_hours: "نسيت كلمه السر/ تنشيط رموز الحساب لا تزال صالحة لفترة سماح بالـ(n) ساعات بعد استبدالها." - enable_badges: "تفعيل نظام الشارات." - enable_whispers: "اسمح لمستخدمين باجراء محادثه سريه مع الطاقم " + enable_badges: "تفعيل نظام الأوسمة." + enable_whispers: "السماح للموظفين الخصوصين التواصل ضمن موضوع.(تجريبي)" allow_index_in_robots_txt: "تحديد في ملف robots.txt أن يسمح هذا الموقع ليتم فهرستها من قبل محركات البحث على شبكة الإنترنت." email_domains_blacklist: "قائمة pipe-delimited المجالات البريد الإلكتروني الذي لا يسمح للمستخدمين تسجيل حسابات مع. مثال: mailinator.com | trashmail.net" email_domains_whitelist: "قائمة pipe-delimited من مجالات البريد الإلكتروني التي يجب على المستخدمين تسجيل حسابات مع. تحذير: لن يسمح للمستخدمين مع مجالات البريد الإلكتروني الأخرى غير المذكورة هنا!" @@ -938,6 +981,7 @@ ar: max_username_length: "الحد الأعلى لطول اسم العضو في الأحرف." reserved_usernames: "الأعضاء الغير مسموح لها بالتسجيل." min_password_length: "أقل طول لكلمة المرور" + min_admin_password_length: "أقل طول مسموح به للكلمه مرور بالنسبه لاداري" block_common_passwords: "لا تسمح لكلمات المرور المسجلة في قائمة كلمات المرور الشائعةز" enable_sso: " اسمح تسجيل دخول واحد عبر موقع خارجي(تحذير :عنوان بريد المستخدم *يجب* ان يتم التحقق من صحته عبر الموقع الخارجي)" enable_sso_provider: "تنفيذ مزود بروتوكول Discourse SSO على نقطة نهاية /session/sso_provider, يتطلب sso_secret لتعينها" @@ -958,6 +1002,9 @@ ar: enable_twitter_logins: "تفعيل مصادقة تويتر , يطلب : twitter_consumer_key و twitter_consumer_secret" twitter_consumer_key: "مفتاح المستهلك للمصادقة تويتر، مسجلة في http://dev.twitter.com" twitter_consumer_secret: "مفتاح المستهلك للمصادقة تويتر، مسجلة في http://dev.twitter.com" + enable_instagram_logins: "تفعيل تسجيل الدخول عن طريق الانستغرام , يتطلب instagram_consumer_key و instagram_consumer_secret" + instagram_consumer_key: "مفتاح الاستخدام لتوثيق الانستغرام " + instagram_consumer_secret: "استخدم توثيق انستغرام السري " enable_facebook_logins: "تمكين مصادقة الفيسبوك، يتطلب facebook_app_id وfacebook_app_secret" facebook_app_id: "التطبيق معرف للمصادقة الفيسبوك، مسجلة في https://developers.facebook.com/apps" facebook_app_secret: "التطبيق معرف للمصادقة الفيسبوك، مسجلة في https://developers.facebook.com/apps" @@ -970,6 +1017,9 @@ ar: backup_frequency: "كمية النسخ الإحتياطية المتكررة التي أنشأناها، في اليوم." enable_s3_backups: "تحميل النسخ الاحتياطي لS3 عند اكتماله. هام: يتطلب اعتماد S3 صالحة دخلت في إعدادات الملفات." s3_backup_bucket: "الرفع عن بعد لإجراء نسخ إحتياطية. تحذير : تأكد من أنه رفع خاص." + s3_disable_cleanup: "عطل النسخ الاحتياطيه المحذوفه من S3 عندما يتم حذفها محلياً" + backup_time_of_day: "الوقت الذي يجب ان تأخد النسخ الاحتياطية فيه." + backup_with_uploads: "إضافة التحميلات ل النسخ الإحتياطية. إلغاء هذة الخاصية سوف تؤدي إلى أخذ نسخ إحتياطية من قاعدة البيانات فقط." active_user_rate_limit_secs: "كيف في كثير من الأحيان نقوم بتحديث حقل 'last_seen_at، في ثوان" verbose_localization: "شاهد تلميحات الترجمة الممتدة في واجهة المستخدم." previous_visit_timeout_hours: "متى زيارة تستمر قبل أن تنظر فيه الزيارة \"السابقة، في ساعات" @@ -1001,6 +1051,8 @@ ar: avatar_sizes: "قائمة أحجام الرمزية إنشاؤه تلقائيا." external_system_avatars_enabled: "استخدم خدمات الهه النظام الخارجي " external_system_avatars_url: "عنوان URL لخدمة الصور الرمزية النظام الخارجي. الاستعمال المسموح بها {username} {first_letter} {color} {size}" + default_opengraph_image_url: "عنوان رابط صورة ال اوبن جراف الثابتة" + allow_all_attachments_for_group_messages: "اسمح بجميع ملحقات البريد للرسائل الجماعيه " enable_flash_video_onebox: "تمكين التضمين من swf و FLV (أدوبي فلاش) وصلات في مربع واحد. تحذير: قد يعرض المخاطر الأمنية." default_invitee_trust_level: "مستوى الثقة الإفتراضي (0-4) للأعضاء المدعوين." default_trust_level: "مستوى الثقة الإفتراضي (0-4) للأعضاء المدعوين.تحذير! التغيرات ستضعك تحت خطر البريد الغير هام." @@ -1014,19 +1066,14 @@ ar: tl2_requires_likes_received: "كمية الإعجابات التي يجب على العضو إرسالها قبل ترقيته لمستوى الثقة 2." tl2_requires_likes_given: "كمية الإعجابات التي يجب على العضو جمعها قبل ترقيته لمستوى الثقة 2." tl2_requires_topic_reply_count: "كمية مواضيع العضو التي يجب الرد عليها قبل الترقية لمستوى الثقة 2." - tl3_requires_days_visited: "أقل عدد من الأيام التي يجب على المستخدم زيارة الموقع في آخر مئةيوم للتأهل لمستوى الثقة 3. (0 حتى 100)" - tl3_requires_topics_replied_to: "أقل عدد من المواضيع التي يجب على المستخدم الرد عليها في آخر 100 يوم للتأهل لمستوى الثقة 3. (0 أو أكثر)" - tl3_requires_topics_viewed: "نسبة الموضوعات التي تم إنشاؤها في آخر 100 يوم، تجعل المستخدم مؤهلًا لعرضه للترقية إلى مستوى الثقة الثالث3 . (من 0 الى 100)" - tl3_requires_posts_read: "النسبه المئويه للمنشورات التي تم انشاءها في اخر 100 يوم ,التي يحتاج المستخدم لمعينتها تؤهله للترقيه للمستوي الثقه 3. (0 الي 100)" tl3_requires_topics_viewed_all_time: "أقل عدد من المواضيع التي يجب على المستخدم مشاهدتها للتأهل لمستوى الثقة 3." tl3_requires_posts_read_all_time: "أقل عدد من المشاركات يجب على المستحدم قرائتها للتأهل لمستوى الثقة 3 ." - tl3_requires_max_flagged: "يجب علي المستخدم عدم الحصول علي اكثر من x مشاركات مؤشره من x مستخدمين مختلفين في اخر 100 يوم لليترقى للمستوي 3 من الثقه , عندما x تساوي قيمه (صفر او اكثر)" tl3_promotion_min_duration: "أقل عدد من الأيام التي تكون الترقية إلى مستوى الثقة 3 قد أنتهت قبل عودة المستخدم لمستوى الثقة 2." - tl3_requires_likes_given: "أقل عدد من الإعجابات التي يجب أن تُمنح في آخر 100 يوم للتأهل لمستوى الثقة 3." - tl3_requires_likes_received: "أقل عدد من الإعجابات التي يجب أن تُتلقى في آخر 100 يوم للتأهل لمستوى الثقة 3." tl3_links_no_follow: "لا تحذف rel=nofollow من روابط المشاركة بواسطة أعضاء مستوى الثقة 3." min_trust_to_create_topic: "أدنى مستوى ثقة مطلوب لإنشاء موضوع جديد." min_trust_to_edit_wiki_post: "الحد الأدنى لمستوى الثقة المطلوب لتعديل مشاركة معلمة كويكي." + min_trust_to_allow_self_wiki: "الحد الادنى لمستوى ثقه المطلوب لأستحقاق مستخدم مشنور wiki" + min_trust_to_send_messages: "المستوي الأدني المطلوب لإرسال رسالة خاصة" newuser_max_links: "عدد الروابط التي يمكن للمستخدم الجديد إضافتها للمشاركة." newuser_max_images: "عدد الصور التي يمكن للمستخدم الجديد إضافتها للمشاركة." newuser_max_attachments: "عدد المرفقات التي يمكن للمستخدم الجديد إضافتها للمشاركة." @@ -1040,11 +1087,12 @@ ar: title_max_word_length: "الحد الأقصى المسموح لطول كلمة، بالأحرف، في عنوان الموضوع." title_min_entropy: "أدنى إنتروبي (حروف فريدة، عدد غير إنجليزي للكثير) مطلوب لعنوان الموضوع." body_min_entropy: "أدنى إنتروبي (حروف فريدة، عدد غير إنجليزي للكثير) مطلوب لصلب المشاركة." + allow_uppercase_posts: "السماح بكتابة الاحرف الانجليزية الكبيرة في عنوان الموضوع او نص المشاركة ." title_fancy_entities: "تحويل أحرف ASCII مشتركة لكائنات HTML في عناوين الموضوع، ala SmartyPants http://daringfireball.net/projects/smartypants/" min_title_similar_length: "الحد الأدنى لطول العنوان قبل أن يتم البحث عن مواضيع مشابهة." min_body_similar_length: "الحد الادنى لطول المشاركة قبل أن يتم البحث عن مواضيع مشابه." category_colors: "قائمة قيمة الألوان الست عشرية مسموحة في الفئات." - category_style: "النمط المرئي لفئة الشارات." + category_style: "النمط المرئي لفئة الأوسمة." max_image_size_kb: "الحجم الاقص لتحميل صوره بالكيلو بايت.هذا يجب ضبطه في nginx (client_max_body_size) /اباتشي او البروكسي" max_attachment_size_kb: "أقصى حجم لتحميل المرفقات الملفات بالكيلوبايت. وهذا يجب أن يتم تكوينه في nginx (client_max_body_size) / أباتشي أو الوكيل. " authorized_extensions: "قائمة بالملفات المسموح رفعها (أستخدم '*' للسماح لجميع الأنواع)" @@ -1069,6 +1117,7 @@ ar: white_listed_spam_host_domains: "قائمة النطاقات المستثناة من اختبار مضيف البريد المزعج. لن يتم تقييد المستخدمين الجدد من إنشاء المشاركات مع الروابط إلى هذه النطاقات." staff_like_weight: "كم عدد مرات الترجيح الاضافيه لمنح اعجابات الطاقم " topic_view_duration_hours: "احسب عدد المواضيع التي تمت مشاهدتها مره واحده عبر ip/مستخدم كل N ساعات" + user_profile_view_duration_hours: "احسب عدد ملفات التعريف للعضو التي تمت مشاهدتها مرة لكل IP/عضو في N ساعات." levenshtein_distance_spammer_emails: "عند ربط رسائل البريد الإلكتروني spammer، الأرقام والحروف تختلف التي ستبقى تسمح بربط غامض." max_new_accounts_per_registration_ip: "اذا كان هناك بالفعل (N) مستوي ثقه الحسابات 0 من هذا IP ( و لم يكن عضو في الطاقم او TL2 او اعلى), توقف عن قبول تسجيلات الدخول الجديده من هذا IP" min_ban_entries_for_roll_up: "When clicking the Roll up button, will create a new subnet ban entry if there are at least (N) entries." @@ -1086,6 +1135,10 @@ ar: disable_emails: "منع Discourse من إرسال أي نوع من رسائل البريد الإلكتروني" strip_images_from_short_emails: "شريط الصور من البريد الإلكتروني لها حجم أقل من 2800 بايت" short_email_length: "طول أقصر بريد الكتروني بـ Bytes." + display_name_on_email_from: "أعرض الاسماء كاملة في البريد الالكتروني من المجال." + unsubscribe_via_email: "أسمح للمستخدمين بالغاء الاشتراك لرسائل البريد الالكتروني عن طريق أرسال بريد الكتروني يحتوي على 'unsubscribe' في العنوان او محتوى البريد" + unsubscribe_via_email_footer: "أرفق رابط الغاء الاشتراك الى اخر البريد المرسل " + delete_email_logs_after_days: "حذف سجل البريد بعد (ن) يوم. 0 لحفظ السجل للابد" pop3_polling_enabled: "تصويت عبرPOP3 لردود البريد الإلكتروني." pop3_polling_ssl: "أستخدم SSL عند الأتصال بمخدم POP3.(مُستحسن)" pop3_polling_period_mins: "الفترة دقائق بين التحقق من حساب POP3 للبريد الإلكتروني. ملاحظة : تتطلب إعادة تشغيل." @@ -1112,7 +1165,6 @@ ar: automatically_download_gravatars: "تحميل Gravatars للأعضاء عند تغيرهم البريد الإلكتروني الخاص بهم أو عند إنشائهم لحساب آخر." digest_topics: "العدد الاقصي من المواضيع لعرضها في مضمون البريد الإلكتروني " digest_min_excerpt_length: "الحد الادني من مشاركه مقتطفات خلاصه البريد الاكتروني,في الشخصيات" - suppress_digest_email_after_days: "احفظ خلاصه الرسائل الالكترونيه للمستخدمين الذين لم تتم رويتهم في الموقع لاكثر من (N) ايام" disable_digest_emails: "عطل ملخص رسائل البريد الإلكتروني لكل الأعضاء." detect_custom_avatars: "سواء او لا تفقد اذا كان المستخدم قام بتحميل صور شخصيه مخصصه" max_daily_gravatar_crawls: "العدد الاقصي من مرات Dicourse سوف يتفقد Gravatar لصور رمزيه مخصصه في اليوم" @@ -1122,15 +1174,18 @@ ar: allow_anonymous_posting: "اسمح للمستخدمين ان يغيروا لوضع المخفي" anonymous_posting_min_trust_level: "أدنى مستوى ثقة للسماح بنشر مشاركات مجهولة." anonymous_account_duration_minutes: "للحمايه الهويه اصنع حساب مجهول كل n دقائق لكل مستخدم.\nمثال:اذا ضبط 600 , بعد انقضي 600 دقيقه من اخر منشور و غير المستخدم للمجهول.تم انشاء حساب مجهول." + hide_user_profiles_from_public: "قم بإلغاء الصفحة الشخصية و حقيبة المستخدم و بطاقة المستخدم للمستخدمين المجهولين" allow_profile_backgrounds: "اسمح للأعضاء برفع خلفيات ملف التعريف." - sequential_replies_threshold: "عدد مشاركات عضو في صف واحد في موضوع قبل يجري تذكير حول الردود متسلسلة كثيرة جداً." + sequential_replies_threshold: "عدد المشاركات التي يجب على المستخدم انشاءها في عمود في الموضوع الواحد قبل ان يتم تنبيه بكثره الردود المتتاليه ." enable_mobile_theme: "اجهزه الموبايل تستخدم ثيم مناسب للجوال,امكانيه التحويل للموقع الكامل .الغي هذا اذا اردت استخدام انماط سريعه الاستجابه" dominating_topic_minimum_percent: "ما هي النسبه المئويه للمشاركات التي يجب علي المستخدم عملها في الموضوع قبل تلقيه لتنبيه عن خروجه لنطاق الموضوع" + disable_avatar_education_message: "عطل الرسالة التعليمية لتغيير الصورة الرمزية." daily_performance_report: "تحليل سجلات NGINX يومي ونشر موضوع \"قاقم فقط\" مع التفاصيل" - suppress_uncategorized_badge: "لا تظهر الشارة للمواضيع غير المصنفة في قائمة الموضوع." - permalink_normalizations: "يتم تطبيق التعابير القياسية قبل مطابقة صور الروابط الثابتة، على سبيل المثال: /(\\/topic.*)\\?.*/\\1 سوف تقطع الاستعلامات من الموضوع. التنسيق هو : التعبير القياسي+النص المستخدم \\ إلخ.. للوصول للقطع" + suppress_uncategorized_badge: "لا تظهر الوسام للمواضيع غير المصنفة في قائمة الموضوع." global_notice: "اعرض تنبيه, شعار عام طارئ ملاحظه لكل الزوار, غير الفراغ لاخفاء(HTML مسموح)" disable_edit_notifications: "لتعطيل تحرير الاشعارات بواسطة العضو النظام عندما يكون نشطاً 'download_remote_images_to_local'." + automatically_unpin_topics: "تلقائياً قم بنزع الدبوس عندا يصل المستخدم إلي نهاية الصفحه" + read_time_word_count: "عداد الكلمات للدقيقه لحساب الوقت المقدر للقراءه " full_name_required: "الإسم الكامل مطلوب وهو ضروري لإكمال الحساب " enable_names: "عرض الاسم الكامل للعضو , بطاقة العضو , ورسائل البريد الالكتروني , تعطيل عرض الاسم في اي مكان " display_name_on_posts: "عرض الاسم الكامل للعضو على التعليقات بالاضافة الى @username." @@ -1147,27 +1202,29 @@ ar: embed_username_key_from_feed: "مفتاح لسحب اسم مستخدم discourse من المغذي." embed_truncate: "اقتطاع الوظائف المدمجة." embed_post_limit: "أقصى عدد للمشاركات المضمنة." + embed_username_required: "إسم المستخدم مطلوب لإضافة مقالة" embed_whitelist_selector: "منتقي CSS للعناصر التي تسمح في التضمينات." embed_blacklist_selector: "منتقي CSS للعناصر التي حذفت من التضمينات." notify_about_flags_after: "اذا كانت هناك علامه انه لم يتم تاتعامل معه بعد هذه الساعات, ارسال رساله الي جهه الاتصال_بريده الالكتروني. اضبط 0 للتعطيل" enable_cdn_js_debugging: "السماح/logs لعرض أخطاء المناسبة عن طريق إضافة تتضمن تحليل عرض كل شبيبة." show_create_topics_notice: "إذا كان الموقع يحتوي على أقل من 5 مواضيع عامة , إظهار إشعار مطالبة المسؤولين إنشاء بعض المواضيع." delete_drafts_older_than_n_days: حذف المسودات مضى عليها أكثر من (ن) يوما. - show_logout_in_header: "عرض تسجيل الخروج في القائمة المنسدلة للمستخدم في رأس الصفحة." - vacuum_db_days: "شغل التحليل الكامل للمساحة لاستعادة مساحة DB بعد الهجرات (ضع 0 للإغلاق)" prevent_anons_from_downloading_files: "امنع المستخدمين المجهولين من تحميل المرفقات. تحذير:سوف تمنع اي شخص ليس لديه صوره موقع اصول نشره كمرفقات من العمل." slug_generation_method: "اختر طريقه توليد سبيكه . 'مشفره' سوف تقوم بتوليد سلسله مئويه مشفره.'لاشي' سوف يعطل السبيكه" enable_emoji: "تمكين الرموز التعبيرية " emoji_set: "كيف تريد أن تكون الرموز التعبيرية الخاصة بك؟" enforce_square_emoji: "أجبر نسبة جانب المربع لكل الرموز التعبيرية." - approve_post_count: "كمية مشاركات العضو الجديد التي يجب أن تتم الموافقة عليها" + approve_post_count: "عدد المنشورات للمستخدم الجديد او الاساسي يجب ان تتم الموافقه عليه " approve_unless_trust_level: "مشاركات للأعضاء أدنى من مستوى الثقة هذا يجب أن تتم الموافقة عليها." notify_about_queued_posts_after: "اذا كان هناك مشاركات تنتظر ليتم معينتها لاكثر من هذه الساعات, سوف يتم ارسال بريد الكتروني لبريد الاتصال . اختر 0 لتعطيل هذه الرسائل" default_email_digest_frequency: "عدد المرات التي يتلقى الأعضاء فيها ملخص لبريدهم الإلكتروني إفتراضيا." default_email_private_messages: "أرسل بريد إلكتروني عندما يراسل شخص ما العضو إفتراضيا." default_email_direct: "ارسل بريد الكتروني عندما يقوم احدهم بالرد/الاقتباس الي/ذكر او دعوه مستخدم افتراضيا" default_email_mailing_list_mode: "ارسل بريد إلكتروني لكل مشاركة جديدة افتراضيا." + disable_mailing_list_mode: "عدم السماح للمستخدمين بتفعيل خيار المراسله الجماعيه" default_email_always: "أرسل إشعار بريد إلكتروني حتى عندما يكون العضو متاح إفتراضيا." + default_email_previous_replies: "ارفق الردود السابقه في رسائل البريد افتراضياً" + default_email_in_reply_to: "ارفق مقتبسات الرد على المنشور في رسائل البريد افتراضياً" default_other_new_topic_duration_minutes: "الشروط العالمية الافتراضية لموضوع يعتبر جديد." default_other_auto_track_topics_after_msecs: "الوقت العالمي الافتراضي قبل الموضوع متعقب آليا." default_other_external_links_in_new_tab: "أفتح الروابط الخارجية في تبويب جديد إفتراضيا." @@ -1175,6 +1232,8 @@ ar: default_other_dynamic_favicon: "إعرض عدد المواضيع الجديدة/الحديثة في أيقونة المتصفح إفتراضيا." default_other_disable_jump_reply: "لا تتجاوز إلى مشاركة الضو بعد ردهم إفتراضيا." default_other_edit_history_public: "أنشئ مشاركة المراجعات العامة إفتراضيا." + default_other_like_notification_frequency: "أشعر المستخدمين بالاستحسان على المشورات افتراضياً" + default_topics_automatic_unpin: "تلقائياً قم إزالة تثبيت المواضيع عندما يصل العضو إلى الأسفل \"إفتراضيا\"." default_categories_watching: "قائمة الفئات التي تشاهد إفتراضيا." default_categories_tracking: "قائمة الفئات التي تتابع إفتراضيا." default_categories_muted: "قائمة الفئات التي توضع صامتة إفتراضيا." @@ -1193,6 +1252,7 @@ ar: invalid_string_max: "يجب ان لا تكون الاحرف اكثر من %{max} " invalid_reply_by_email_address: "القيمة يجب أن تحتوي '%{reply_key}' وتختلف عن إشعار البريد الإلكتروني." notification_types: + group_mentioned: "%{group_name} ذكرت في %{link}" mentioned: "%{display_username} ذكرك في %{link}" liked: "%{display_username} أعجب بمشاركتك في %{link}" replied: "%{display_username} رد على مشاركتك في %{link}" @@ -1202,7 +1262,6 @@ ar: moved_post: "%{display_username} نقل مشاركتك إلى %{link}" private_message: "%{display_username} أرسل لك رسالة: %{link}" invited_to_private_message: "%{display_username} دعاك لرسالة: %{link}" - invited_to_topic: "%{display_username} دعاك لموضوع: %{link}" invitee_accepted: "%{display_username} قبل دعوتك" linked: "%{display_username} ربطك في %{link}" granted_badge: "كسبت %{link}" @@ -1212,11 +1271,6 @@ ar: category: 'فئات' topic: 'نتائج ' user: 'مستخدمين ' - sso: - not_found: "لا تستطيع البحث او انشاء حساب جديد , راجع ادارة الموقع " - account_not_approved: "الحساب بإنتظار الموافقة , ستتلقى إشعار بالبريد الكتروني بعد الموافقة " - unknown_error: "حدث خطأ أثناء تحديث المعلومات، راجع إدارة الموقع" - timeout_expired: "انتهى وقت الجلسة , يرجى تسجيل الدخول مرة اخرى " original_poster: "المشاركات الأصلية " most_posts: "معظم المشاركات" most_recent_poster: "معظم المشاركات الاخيرة " @@ -1306,7 +1360,7 @@ ar: incorrect_username_email_or_password: "اسم المستخدم او كلمة المرور او البريد الالكتروني غير صحيح" wait_approval: "شكرًا على التسجيل. سيتم إبلاغك عندما تتم عملية الموافقة على حسابك." active: "حسابك مفعل وجاهز للاستخدام." - activate_email: "لقد انتهيت تقريبا! لقد ارسلنا رساله تفعيل الي %{email} .الرجاء اتباع التعليمات في الرساله لتفعيل حسابك.
اذا لم تصلك, تفقد مجلد البيد الغير هام, او حاول تسجيل الدخول مره اخرى للرسال بريد تفعيل اخر. .
" + activate_email: "انتهيت تقريبا! تم ارسال رسالة تفعيل لبريدك : %{email} رجاءا اتبع التعليمات المرفقة في الرسالة لتفعيل حسابك.
اذا لم تصلك رسالة التفعيل، تفقد مجلد البريد الغير هام، أو حاول تسجيل الدخول مرة أخرى لإرسال رسالة تفعيل أخرى.
"
not_activated: "لا يمكنك تسجيل الدخول حتى الان. أرسلنا رسالة تنشيط لك. يرجى اتباع التعليمات الواردة في البريد الإلكتروني لتفعيل حسابك"
not_allowed_from_ip_address: "ﻻ يمكنك تسجيل الدخول كـ %{username} من هذا الـIP"
admin_not_allowed_from_ip_address: "لا يمكنك تسجيل الدخول كمدير من خلال هذا العنوان الرقمي - IP."
@@ -1331,16 +1385,25 @@ ar:
characters: "يجب ان تحتوي الارقام والاحرف الصغيرة فقط "
unique: "يجب أن يكون فريدا"
blank: "يجب أن يكون موجود"
- must_begin_with_alphanumeric: "يجب البدء بحرف أو رقم أو _"
- must_end_with_alphanumeric: "يجب الإنتهاء بحرف أو رقم أو _"
+ must_end_with_alphanumeric: "يجب أن ينتهي برقم أو حرف "
must_not_contain_two_special_chars_in_seq: "يجب أن لا يحتوي على تسلسل من 2 أو رموز خاصة (.-_)"
- must_not_contain_confusing_suffix: "يجب أن لا تحتوي على ملحقة مربكة مثل : json. أو png. الخ."
+ must_not_end_with_confusing_suffix: "يجب أن لا ينتهي ب صيغ معقده كــ .json أو .png"
email:
not_allowed: "بريد الكتروني غير مسموح . يرجى استخدام بريد الكتروني آخر "
blocked: "غير مسموح"
ip_address:
blocked: "لا يُسمح بتسجيل جديد من عنوان ip الخاص بك "
max_new_accounts_per_registration_ip: "وفقًا لعنوان IP الخاص بك فقد تم حظر التسجيل (لقد وصلت للحد الأقصى المسموح به) تواصل مع أحد المشرفين."
+ flags_reminder:
+ subject_template:
+ zero: "لا يوجد تبليغات تنتظر التعامل معها"
+ one: "تبليغ 1 ينتظر التعامل معها"
+ two: "تبليغان ينتظران التعامل معها"
+ few: "%{count} تبليغات تنتظر التعامل معها"
+ many: "%{count} تبليغات تنتظر التعامل معها"
+ other: "%{count} تبليغات تنتظر التعامل معها"
+ unsubscribe_mailer:
+ subject_template: "اكد انك لا تريد استقبال بريد الكتروني من %{site_title} بعد ألان"
invite_mailer:
subject_template: "%{invitee_name} دعاك إلى '%{topic_title}' على %{site_domain_name}"
text_body_template: |
@@ -1384,95 +1447,10 @@ ar:
(إذا انتهت مدة صلاحية الرابط أعلاه، اختر "نسيت كلمة المرور" عند تسجيل الدخول مع عنوان البريد الإلكتروني الخاص بك.)
test_mailer:
subject_template: "[%{site_name}] بريد الكتروني بهدف الاختبار"
- text_body_template: |
- هذا بريد إختبار إلكتروني من
-
- [**%{base_url}**][0]
-
- أهداف البريد معقدة. هنا بعض الأشياء المهمة يجب عليك مراجعتها أولا:
-
- - كن *متأكد* لوضع `إشعارات البريد الإلكتروني` من: عنوان صحيح في إعدادات موقعك. **النطاق المخصص في أو "من" عنوان رسائل البريد الإلكتروني التي أرسلتها سيتم التحقق تجاه مجال بريدك الإلكتروني**.
-
- - معرفة كيفية عرض المصدر الخام للبريد الإلكتروني في عميل بريدك , لذا يمكنك البحث في رؤوس صفحات البريد الإلكتروني للأدلة المهمة. في Gmail, خيار "إظهار الأصلية" في القائمة المنسدلة في أعلى اليمين لكل بريد إلكتروني.
-
- - **مهم جدا:** هل الـ ISP الخاص بك له سجل DNS عكسي مدخل لربط أسماء النطاقات وعناوين IP التي أرسلت بريد منها؟ [اختبر سجل PTR العكسي][2] هنا. إذا كان ISP الخاص بك لم يدخل سجل مؤشر DNS العكسي المناسب, من غير المحتمل جدا تسليم أي من بريدك الإلكتروني.
-
- - هل مجالك لـ[سجل SPF][8] صحيح؟ [أختبر سجل SPF الخاص بك][1] هنا. لاحظ أن TXT هو نوع سجل رسمي صحيح لـSPF.
-
- - Iهل مجالك لـ [DKIM سجل][3] صحيح؟ هذا سيحسن بشكل كبير أهداف البريد الإلكتروني. [أختبر سجل DKIM الخاص بك][7] هنا.
-
- - إذا شغلت خادم البريد الخاص بك, راجع للتأكد من IPs لخادم بريدك [ليست في أي قوائم سوداء][4]. أيضا تحقق من إرسال تأكيد مضيف كامل التأهيل الذي يحل في DNS في رسالته الترحيبية. إذا كان لا, سيسبب رفض بريدك الإلكتروني من عدة خدمات.
-
- (الطريقة *السهلة* هي إنشاء حساب مجاني في [Mandrill][md] أو [Mailgun][mg] أو [Mailjet][mj], التي لديها عطاء مجاني والبريد مجاني والخطط وستكون جيدة للإتصالات القصيرة. لا تزال بحاجة لإعداد سجلات SPF و DKIM في DNS الخاص بك, رغم ذلك!)
-
- نأمل منك أن يلقي إختبار أهداف البريد الإلكتروني الموافقة!
-
- حظ جيد,
-
- أصدقائك في [Discourse](http://www.discourse.org)
-
- [0]: %{base_url}
- [1]: http://www.kitterman.com/spf/validate.html
- [2]: http://mxtoolbox.com/ReverseLookup.aspx
- [3]: http://www.dkim.org/
- [4]: http://whatismyipaddress.com/blacklist-check
- [7]: http://dkimcore.org/tools/dkimrecordcheck.html
- [8]: http://www.openspf.org/SPF_Record_Syntax
- [md]: http://mandrill.com
- [mg]: http://www.mailgun.com/
- [mj]: https://www.mailjet.com/pricing
new_version_mailer:
subject_template: "[%{site_name}] يوجد اصدار جديد , تحديث متوفر"
- text_body_template: |
- نسخة جديدة من [Discourse](http://www.discourse.org) متوفرة.
-
- نسختك: %{installed_version}
- النسخة الجديدة: **%{new_version}**
-
- ربما تريد أن:
-
- - ما الجدي في [GitHub changelog](https://github.com/discourse/discourse/commits/master).
-
- - التحديث من متصفحك من [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade).
-
- - زيارة [meta.discourse.org](http://meta.discourse.org) للأخبار, والمناقشة, ودعم Discourse.
new_version_mailer_with_notes:
subject_template: "[%{site_name}] التحديث متوفر"
- text_body_template: |
- نسخة جديدة من [Discourse](http://www.discourse.org) متوفرة.
-
- نسختك: %{installed_version}
- النسخة الجديدة: **%{new_version}**
-
- ربما تريد أن:
-
- - ما الجدي في [GitHub changelog](https://github.com/discourse/discourse/commits/master).
-
- - التحديث من متصفحك من [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade).
-
- - زيارة [meta.discourse.org](http://meta.discourse.org) للأخبار, والمناقشة, ودعم Discourse.
-
- ### ملاحظات الإصدارة
-
- %{notes}
- flags_reminder:
- flags_were_submitted:
- zero: "لم ترسل تبليغات خلال الساعات الماضية."
- one: "هذه التبليغات أرسلت خلال ساعة مضت."
- two: "هذه التبليغات أرسلت خلال ساعتان مضتا."
- few: "هذه التبليغات أرسلت خلال %{count} ساعات مضت."
- many: "هذه التبليغات أرسلت خلال %{count} ساعات مضت."
- other: "هذه التبليغات أرسلت خلال %{count} ساعات مضت."
- please_review: "يرجى مراجعة ذلك "
- post_number: "مشاركة"
- how_to_disable: 'يمكنك تعطيل أو تغيير تكرار تذكير البريد الإلكتروني عبر "إشعار حول الإعلامات بعد" الإعدادات.'
- subject_template:
- zero: "لا يوجد تبليغات تنتظر التعامل معها"
- one: "تبليغ 1 ينتظر التعامل معها"
- two: "تبليغان ينتظران التعامل معها"
- few: "%{count} تبليغات تنتظر التعامل معها"
- many: "%{count} تبليغات تنتظر التعامل معها"
- other: "%{count} تبليغات تنتظر التعامل معها"
queued_posts_reminder:
subject_template:
zero: "[%{site_name}] %{count} المشاركات التي تنتظر معينتها"
@@ -1514,101 +1492,6 @@ ar:
أيضا, إذا اختفت المشاركة مرة ثانية, ستظل مخفية حتى يتم التعامل معها من قبل الموظفين وربما يكون هناك مزيد من العمل, بما في ذلك من الممكن أن يعلق حسابك.
لمزيد من الإرشادات، يرجى الرجوع لموقعنا[دليل المجتمع](%{base_url}/guidelines).
- usage_tips:
- text_body_template: |
- هنا بعض الخطوات السريعة لتبدأ:
-
- ##قراءة
-
- لقراءة المزيد, **استمر بالتمرير لأسفل!**
-
- الردود الجديدة والمواضيع الجديدة ونحو ذلك, ستظهر تلقائياً -دون الحاجة لتحديث الصفحة.
-
- ## التصفح
-
- -للبحث, صفحة المستخدم الخاصة بك, أو القائمة ☰, استخدم **أيقونة الأزرار في الجزء العلوي الأيمن**.
-
- -اختيار عنوان موضوع سيأخذك دائماً الى **الرد التالي غير المقروء ** في الموضوع.
- للدخول أول أو آخر الموضوع, اختر رقم الرد أو آخِر تاريخ.
-
-
-
- - عند قراءة موضوع, اختر شريط التقدم من الزر الأيمن لعناصر تحكم في التنقل كاملة. انتقل للأعلى بسرعة باختيار عنوان الموضوع. أضغط ? للحصول على قائمة باختصارات لوحة المفاتيح السريعة جدا.
-
-
-
- ## الرد
-
- - للرد على **الموضوع بشكل عام**, استخدم
في الجزء السفلي جدا من الموضوع.
-
- - للرد على **شخص مخصص**, استخدم
على مشاركاتهم.
-
- - للرد **بموضوع جديد**, استخدم
إلى يمين المشاركة. كلا المواضيع القديمة والجديدة سيرتبطون مع بعضهم تلقائيا.
-
- لإدخال إقتباس, حدد النص الذي تريد إقتباسه, ثم أضغط أي زر رد. كرر للإقتباسات المتعددة!
-
-
-
- لإشعار شخص عن ردك, أشر بأسمائهم. أكتب `@` للبدء باختيار اسم العضو.
-
-
-
- لاستخدام [معيار الرسوم التعبيرية](http://www.emoji.codes/), أكتب فقط `:` لوصلها بالاسم, أو استخدم الوجوه التقليدية الضاحكة `;)`
-
-
-
- لتوليد اختصار لرابط, ألصقه في السطر بمفرده:
-
-
-
- ## التفاعل
-
- هناك أزرار التفاعل في أسفل كل مشاركة:
-
-
-
- لتسمح لشخص ما تعرفه الذي تستمتع وتقدر مشاركاتهم, استخدم زر **إعجاب** . شارك ما يعجبك!
-
- اذا رايت خطأ في منشور شخص ما .قم بتعديله شخصيا, أو [العاملون لدينا](%{base_url}/about), أعرف حول ذلك بزر **التبليغ** . يمكنك أيضا **مشاركة** رابط لمشاركة, أو **تفضيل** ليكون مرجع لك لاحقا على صفحة العضو.
-
-
- ##تنبيهات
-
-
- عندما يرد عليك احد,اقتبس منشورك,او ذكر اسم المستخدم خاصتك, هنالك رقم سوف يظهر فورا في الجزء العلوي الايمن من الصفحه. استعمله لتصل **لتنبيهاتك**
-
-
-
-
-
- لا تخف اذا نسيت ردا-سوف يصلك بريد الكتروني بكل التنبيهات التي وصلتك عندما كنت بعيدا.
-
-
- ##تفضيلاتك
-
-
- كل المواضيع في اقل من **يومين مضت** تعتبر جديدة.
-
-
- اي موضوع كنت **شاركت فيه بنشاط**(بصنعه,الردود, او القراءه لفتره ممتده ) سوفي تعقب تلقائيا.
-
-
- سوف ترى مؤشر الرقم الجديد الغير مقروى و الازرق بعد هذا الموضوع مباشره:
-
-
-
-
- يمكنك تغيير إشعاراتك لأي موضوع عبر لوحة التحكم بالإشعارات في أسفل الموضوع.
-
-
-
- يمكنك أيضا تعيين حالة الإشعار لكل فئة, إذا أردت أن ترى كل موضوع جديد في فئة خاصة.
-
- لتغيير أي من هذه الإعدادات, أنظر [تفضيلات المستخدم الخاصة بك](%{base_url}/my/preferences).
-
- ## ثقة المجتمع
-
- يمكنك المشاركة هنا, ومع مرور الوقت ستكسب ثقة المجتمع, كن عضو صالح, وسيتم رفع قيود العضو الجديد. لترفع [مستوى الثقة] بما فيه الكفاية (https://meta.discourse.org/t/what-do-user-trust-levels-do/4924), عليك اكتساب قدرات جديدة لمساعدتنا في إدارة مجتمعنا معا.
welcome_user:
subject_template: "مرحبا بك في %{site_name}!"
text_body_template: |
@@ -1678,20 +1561,16 @@ ar:
csv_export_succeeded:
subject_template: "اكتمل تصدير البيانات"
text_body_template: |
- تصدير البيانات الخاصة بك بنجاح! :dvd:
+ صُدِّرَت بياناتك بنجاح ! :dvd:
%{file_name} (%{file_size})
- رابط التحميل أعلاه ستكون صالحة لمدة 48 ساعة.
+ رابط التحميل أعلاه سيكون صالحاً لمدة 48 ساعة.
csv_export_failed:
subject_template: "فشل تصدير البيانات"
text_body_template: "نحن آسفون، لكنه فشل تصدير البيانات الخاصة بك. يرجى التحقق من السجلات أو اتصل بأحد المشرفين."
- email_reject_trust_level:
- subject_template: "[%{site_name}] بريد الكتروني -- غير موثوق"
- text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\nحسابك لا يمتلك مستوى الثقة المطلوب للنشر مواضيع جديدة إلى عنوان البريد الإلكتروني. إذا كنت تعتقد أن هذا الخطأ، اتصل بأعضاء المشرفين.\n"
email_reject_no_account:
subject_template: "[%{site_name}] بريد الكتروني -- حساب غير معروف"
- text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\nليس هنالك حساب عضو يمتلك هذا البريد الالكتروني. حاول أن ترسل من بريد الكتروني مختلف، أو أتصل بـ أحد المشرفين.\n\n"
email_reject_empty:
subject_template: "[%{site_name}] بريد الكتروني -- بدون محتوى"
text_body_template: |2
@@ -1706,36 +1585,23 @@ ar:
email_reject_invalid_access:
subject_template: "[%{site_name}] بريد الكتروني -- غير صالح"
text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\nحسابك لا يمتلك الصلاحيات لنشر مواضيع جديدة في تلك الفئة. إذا كنت تعتقد أن هذا الخطأ، اتصل بالاعضاء المشرفين.\n"
- email_reject_post_error:
- subject_template: "[%{site_name}] بريد الكتروني -- خطأ المشاركة"
- text_body_template: |
- نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل.
-
- بعض الأسباب المحتملة هي: التنسيق المعقد، رسالة كبيرة جدا، رسالة صغيرة جدا. يرجى المحاولة مرة أخرى، أو الرد عبر الموقع الإلكتروني إذا استمر هذا الوضع.
- email_reject_post_error_specified:
- subject_template: "[%{site_name}] بريد الكتروني -- خطأ المشاركة"
- text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\nالسبب:\n\n%{post_error}\n\nاذا كنت تستطيع تصحيح المشكلة، يرجى المحاولة لاحقاً.\n"
+ email_reject_strangers_not_allowed:
+ subject_template: "مشاكل البريد ألالكتروني [%{site_name}] -- دخول غير صالح"
+ email_reject_invalid_post:
+ subject_template: "مشاكل البريد ألالكتروني [%{site_name}] -- مشكله في النشر "
+ email_reject_invalid_post_specified:
+ subject_template: "مشاكل البريد ألالكتروني [%{site_name}] -- مشكله في النشر "
email_reject_reply_key:
subject_template: "[%{site_name}] بريد الكتروني -- مفتاح رد غير معروف"
- text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\nمفتاح الرد المُقدم غير صالح أو غير معروف، لذلك نحن لا نعرف ما هو هذا البريد الإلكتروني للرد عليه. أتصل بالأعضاء المشرفين.\n"
- email_reject_destination:
- subject_template: "[%{site_name}] بريد الكتروني -- عنوان غير معروف"
- text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\nلم يتم التعرف على أي من العناوين. الرجاء التأكد من أن عنوان الموقع هو في To: line (not Cc: or Bcc:)، والتي انت تقوم بإرسالها إلى عنوان البريد الإلكتروني الصحيح المقدمة من الاعضاء المشرفين.\n"
email_reject_topic_not_found:
subject_template: "[%{site_name}] بريد الكتروني -- موضوع غير موجود"
- text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\nالموضوع الذي تريد الرد عليه لم يعد موجودا، وربما تم حذفه؟ إذا كنت تعتقد أن هذا خطأ، اتصل أحد الاعضاء المشرفين. \n"
email_reject_topic_closed:
subject_template: "[%{site_name}] بريد الكتروني -- موضوع مغلق"
text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\nالموضوع الذي تريد الرد عليه مغلق حاليا والتي لم تعد تقبل ردود. إذا كنت تعتقد أن هذا خطأ، اتصل أحد الأعضاء المشرفين.\n"
email_reject_auto_generated:
subject_template: "[%{site_name}] بريد الكتروني -- توليد رد آلي"
- text_body_template: "نحن آسفون ، ولكن رسالة البريد الإلكتروني إلى %{destination} (titled %{former_title}) لا تعمل. \n\n بريدك الإلكتروني عُلّم كـ\"مولد تلقائي\"، وهو ما لا يمكن قبوله. إذا كنت تعتقد أن هذا خطأ، اتصل أحد الاعضاء المشرفين.\n"
email_error_notification:
subject_template: "[%{site_name}] بريد الكتروني -- خطأ مصادقة POP"
- text_body_template: |
- خطأ في المصادقة عند استطلاع الرسائل من خادم POP .
-
- من فضلك تأكد من تكوين إعدادات خادم POP من[إعدادات الموقع](%{base_url}/admin/site_settings/category/email).
too_many_spam_flags:
subject_template: "حساب جديد مقفول"
text_body_template: |
@@ -1746,31 +1612,10 @@ ar:
للمعلومات الاضافيه.الرجاء مراجعه [قوانين مجتمعنا] (%{base_url}/guidelines).
blocked_by_staff:
subject_template: "الحساب مُعطل"
- text_body_template: |
- مرحبا,
-
- هذه رسالة تلقائية من %{site_name} أن أحيطكم علما بأن تم حظر الحساب الخاص بك عن طريق الطاقم
- لمزيد من الإرشادات، يرجى الرجوع إلى موقعنا على [community guidelines](%{base_url}/guidelines).
user_automatically_blocked:
subject_template: "العضو الجديد %{username} تم حجبه بسبب تبليغات عليه في المجتمع"
- text_body_template: |
- هذه رسالة تلقائية.
-
- المستخدم الجديد [%{username}](%{base_url}%{user_url})تم حظره تلقائيا بسبب عدة بالغات من عدة مستخدمين %{username}'s post(s).
-
- رجاءًا [استعراض البلاغات](%{base_url}/admin/flags).إذا تم حظر %{username} بشكل خاطئ من المشاركة، أنقر فوق رفع الحظر [صفحة الإدارة](%{base_url}%{user_url}).
-
- يمكن تغيير هذا الحد من اعدادات الموقع `block_new_user` .
spam_post_blocked:
subject_template: "العضو الجديد %{username} تم حجب مشاركاته بسبب تكرار الروابط "
- text_body_template: |
- هذه رسالة تلقائية.
-
- عضو جديد [%{username}](%{base_url}%{user_url}) حاول إنشاء المشاركات متعددة مع روابط إلى %{domains},ولكن هذه المشاركات تم حظرها لتجنب البريد المزعج. المستخدم لا يزال قادراً على أنشاء مشاركات جديدة التي لم تصل إلى %{domains}.
-
- من فضلك [review the user](%{base_url}%{user_url}).
-
- هذا يمكن تعديلها عن طريق `` newuser_spam_host_threshold` وإعدادات موقع white_listed_spam_host_domains`.
unblocked:
subject_template: "الحساب مُفعل "
text_body_template: |+
@@ -1794,10 +1639,6 @@ ar:
download_remote_images_disabled:
subject_template: "الغاء تفعيل تحميل الصور عن بعد "
text_body_template: "تم تعطيل الإعداد 'download_remote_images_to_local' لأنه تم الوصول إلى حد مساحة القرص في 'download_remote_images_threshold'."
- unsubscribe_link: |
- لإلغاء الاشتراك من هذه الرسائل، قم بزيارة [user preferences](%{user_preferences_url}).
-
- لإيقاف تلقي إشعارات حول هذا الموضوع بالذات، [click here](%{unsubscribe_url}).
subject_re: "اعادة "
subject_pm: "[مسائًا]"
user_notifications:
@@ -1805,42 +1646,26 @@ ar:
unsubscribe:
title: "غير مشترك "
description: "لست مهتما في تلقي هذه الرسائل الالكترونيه؟ لا مشكله! اضغط تحت ليتم الغاء اشتركك فورا:"
- reply_by_email: "للاستجابه, رد علي هذه الرساله او قم بزياره%{base_url}%{url}% في متصفحك"
- visit_link_to_respond: "للرد، قم بزيارة %{base_url}%{url} في متصفحك."
posted_by: "مشاركة بواسطة %{username} على %{post_date}"
user_invited_to_private_message_pm:
subject_template: "[%{site_name}] %{username} دعاك لرسالة '%{topic_title}'"
- text_body_template: |2
-
- %{username} دعوتك إلى رسالة
-
- > **%{topic_title}**
- >
- > %{topic_excerpt}
-
- at
-
- > %{site_title} -- %{site_description}
-
- يرجى زيارة هذا الرابط لعرض الرسالة: %{base_url}%{url}
- user_invited_to_topic:
- subject_template: "[%{site_name}] %{username} دعوتك للموضوع '%{topic_title}'"
- text_body_template: |2
-
- %{username} دعوتك للنقاش
-
- > **%{topic_title}**
- >
- > %{topic_excerpt}
-
- at
-
- > %{site_title} -- %{site_description}
-
- الرجاء زيارة هذا الرابط لعرض الرسالة: %{base_url}%{url}
+ user_invited_to_private_message_pm_staged:
+ subject_template: "[%{site_name}] %{username} دعاك للرسالة '%{topic_title}'"
user_replied:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+ user_replied_pm:
+ text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1850,6 +1675,8 @@ ar:
user_quoted:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1859,6 +1686,19 @@ ar:
user_mentioned:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+ user_group_mentioned:
+ subject_template: "[%{site_name}] %{topic_title}"
+ text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1868,6 +1708,8 @@ ar:
user_posted:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1877,10 +1719,20 @@ ar:
user_posted_pm:
subject_template: "[%{site_name}] [مساءً] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
+ ---
+ %{respond_instructions}
+ user_posted_pm_staged:
+ subject_template: "%{optional_re}%{topic_title}"
+ text_body_template: |2
+
+ %{message}
+
---
%{respond_instructions}
digest:
@@ -1923,11 +1775,6 @@ ar:
انقر على الرابط التالي لاختيار كلمة مرور لحسابك الجديد:
%{base_url}/users/password-reset/%{email_token}
- authorize_email:
- subject_template: "[%{site_name}] تأكيد البريد الإلكتروني الجديد "
- text_body_template: |
- قم بتاكيد عنوان بريدك الالكتروني لـ %{site_name} عن طريق الضغط علي الرابط التالي:
- %{base_url}/users/authorize-email/%{email_token}
signup_after_approval:
subject_template: "قد وافقت على %{site_name}!"
text_body_template: |
@@ -1947,14 +1794,14 @@ ar:
signup:
subject_template: "[%{site_name}] تأكيد حسابك الجديد "
text_body_template: |
- مرحبا بكم في %{site_name}!
+ أهلا وسهلا بك في %{site_name}!
+
+ أُنقر على الرابط التالي لتأكيد وتفعيل حسابك الجديد :
- انقر على الرابط التالي لتأكيد وتفعيل حسابك الجديد:
%{base_url}/users/activate-account/%{email_token}
- إذا كان الرابط أعلاه غير قابلة للنقر، حاول نسخ ولصقه في شريط العناوين في مستعرض ويب الخاص بك.
+ إذا كان الرابط أعلاه غير قابل للنقر، حاول نسخه ولصقه في شريط العناوين في متصفح الويب عندك.
page_not_found:
- title: "الصفحة المطلوبة غير موجودة او ليس لديك صلاحيات لرؤيتها "
popular_topics: "شعبي "
recent_topics: "الأخيرة"
see_more: "المزيد"
@@ -1979,8 +1826,6 @@ ar:
images:
too_large: "نعتذر، الصورة الذي تريد رفعها كبيرة جداً ( الحد الاقصى هو %{max_size_kb} كيلوبايت )،يرجى اعادة تغيير حجمها ثم حاول مرة اخرى."
size_not_found: "نعتذر، لكننا لا يمكن تحديد حجم الصورة. ربما صورتك تالفة؟"
- avatar:
- missing: "عذرا، صورة العرض التي اخترتها ليست متوفرة على الخادم، هل تستطيع رفعها مرة أخرى ؟"
flag_reason:
sockpuppet: "عضو جديد إنشاء موضوع , وعضو أخر جديد في نفس عنوان IP . شاهد flag_sockpuppets إعداد الموقع"
spam_hosts: "حاول هذا العضو الجديد إنشاء مشاركات متعددة لها روابط بنفس المجال. شاهد newuser_spam_host_threshold إعداد الموقع."
@@ -2012,9 +1857,7 @@ ar:
تعديل محتويات المنشور الاول في هذا الموضوع %{page_name} page.
guidelines_topic:
title: "الأسئلة الشائعة/توجيهات"
- body: "\n\n## [هذا مكان راقي للنقاشات العامة](#الراقي)\nالرجاء التعامل في هذا المنتدى بنفس الاحترام الذي يكون في حديقة عامة، نحن أيضًا مجتمع مشارك للمصدر و mdahs ؛ المكان هنا لتبادل المهارات والمعرفة والاهتمامات عبر الحوارات.\n\nهذه ليست شروط صارمة و سريعة، مجرد مساعده لحفظ حقوق الأشخاص في مجتمعنا، استخدام هذه المبادئ والتوجيهات يساعد في الحفاظ على الجتمع جيدًا للنقاشات الراقية.\n\n\n\n## [تحسين النقاشات](#تحسين)\n\nساعدنا على جعل هذا المكان جيد للمناقشة، من خلال العمل الدائم لتحسين المناقشات ببعض الطرق، مهما كانت صغيرة، اذا لم تكن متأكدًا أن ما تكتبه سيضيف قيمة، فكر فيما ستكتبه وحاول مرة أخرى في وقت لاحق.\n\nالموضوعات التي تتم مناقشتها هنا مهمة بالنسبة لنا، ونريد منك أن تناقشها كما لو أنها مهمة بالنسبة لك، احترم الموضوعات والاشخاص، حتى لو لم تكن متفقًا مع بعض ما يقال.\n\nأحد طرق تحسين النقاش هو اكتشاف ما يجري، يرجى قضاء بعض الوقت في تصفح المواضيع هنا قبل الرد أو نشر موضوعك، لتكون لديك فرصة افضل في تلبية حاجات الآخرين اللذين يشاركونك اهتماماتك.\n\n\n\n## [تقبل الآخرين، حتى لو كنت غير متفق](#تقبل)\n\nقد ترغب في الرد على من اختلفت معهم، هذا جيد/ ولكن تذكر، انتقد الافكار وليس الأشخاص، يرجى تجنب :\n\n* الاهانة.\n* Ad hominem attacks.\n* الرد على اسلوب المنشور بدلا من المضمون الفعلي.\n* لا تحتسب المتناقضات.\nبدلا من ذلك، وفر الأدلة البينة التي تعمل على تحسين المحادثة.\n\n\n\n## [مشاركاتكم](#شارك)\n\nالمحادثات التي تكون لدينا متناغمة مع الجميع، ساعدونا في التأثير على مستقبل المجتمع، عن طريق مناقشة ما يجعل لهذا المنتدى أهمية و mdash ؛ وتجنب غير ذلك.\n\nيوفر النقاش\
- \ الأدوات التي تمكن الجميع من معرفة أفضل (واسوأ) المشاركات: كالمفضلة، العلامات المرجعية، الاعجابات، البلاغات، الردود، التعديلات، وما الى ذلك. استخدمها لتحسين تجربة الجميع.\nدعونا نحاول ترك المكان أفضل مما كان.\n\n\n\n## [اذا رأيت مشكلة، بلّغ عنها ](#الابلاغ-عن-المشاكل)\n\nالمشرفون لديهم سلطة خاصة، وهم مسؤولون عن هذا المنتدى، ولكن حتى أنتم بمساعدتكم، يستطيع المشرفون تسيير المجتمع، ليس عمال النظافة أو الشرطة.\n\nعندما ترى سلوك سيئ، لا ترد عليه، وتشجع السلوك السيئ بالاعتراف به، وتستهلك طاقتك، قم بالإبلاغ عنه، اذا وصلت بلاغات بما فيه الكفاية، سيتم اتخاذ الإجراءات اللازمة، اما تلقائيا، أو عن طريق مشرف.\n\nمن أجل الحفاظ على سلامة المجتمع، المشرفين لديهم الحق في إزالة اي محتوى أو حذف أي حساب لأي سبب في اي وقت، المشرفون لا يتابعون جميع المنشورات الجديدة بأي شكل كان، المشرفون ومشغلوا الموقع لا يتحملون أية مسؤولية عن اي محتو يتم نشره بواسطة المجتمع.\n\n\n\n## [دائما كن محترما](#محترم)\n\nلا شيء يخرب المحادثة الجيدة، مثل الوقاحة:\n\n* كم محترمًا، لا تنشر أي شيء تهجمي، أو خطاب كراهية.\n* ابق المجتمع نظيفا، لا تنشر أي شيء فاحش أو جنسي صريح.\n* احترم الآخرين، لا تضايق أو تحزن شخص، لا تنتحل شخصية أحد آخر، أو تنشر معلوماتهم الخاصة.\n* احترم منتدانا، لا تعمل ازعاجا - spam - أو تخرب أو خلاف ذك في المنتدى.\n\nهذه المصطلحات ليست محددة مع تعريف دقيق و mdahs ؛ عليك تجنب ظهور اي من هذه الأشياء. اذا كنت غير مقتنع، أسال نفسك ما ذا سيكون شعورك اذا نشرت على الصفحة الاولى في صحيفة نيويورك تايمز.\nهذا منتدى عام، ومؤشرات محركات البحث تحتوي هذه النقاشات، حافظ على اللغة، الروابط والصور الآمنة للعائلة والاصدقاء.\n\n\n\
- \n## [حافظ عليه مرتبا](#المحافظة-على-الترتيب)\n\nأبذل مزيدا من الجهد في وضع الأمور في مكانها المناسب، حتى نتمكن من قضاء المزيد من الوقت في المناقشات ونقلل من التنظيف، هكذا:\n\n* لا تبدأ موضوع في قسم غير مناسب.\n* لا تنشر نفس المشاركة في مواضيع متعددة.\n* لا ترد ردودا دون محتوى مناسب.\n* لا تحول مسار الموضوع من المنتصف. \n* لا توقع مشاركاتك أو mdash؛ كل منشوراتك مرتبطة بمعلومات ملفك الشخصي.\n\nبدلا من كتابة \"+1\" أو كتابة \" نتفق عليه \"، استخدم زر أعجبني، من أخذ المواضيع لمواضيع مختلفة جذريا، استخدم ردا برابط الموضوع مرتبط .\n\n\n\n## [انشر فقط شيء تملكه](#سرقة)\nلا تستيطع نشر أي شيء رقمي يملكه شخص آخر دون إذن، لا تستطيع نشر وصف، رابط ، أو سرقة ممتلكات شخص ما الفكرية(البرامج والفيديو والصوت والصور)، أو انتهاك اي قانون آخر.\n\n\n\n## [بدعم منك](#دعم)\n\nيتم تشغيل هذا الموقع من قِبل [friendly local staff](/about) وأنت، و المجتمع، إذا كان لديك اي أسئلة أخرى حول كيف تعمل الأشياء هنا، افتح موضوع جديد في [site feedback category](/c/site-feedback)وأُدعنا للمناقشة! إذا كان هناك أي قضية حرجة أو حاجة ماسة لم يتم التعامل معها بموضوع ميت أو أو بلاغ، اتصل بنا عبر [staff page] (/about).\n\n\n\n## [شروط الخدمة](#شروط-الخدمة)\n\nنعم، الكلام القانوني ممل، ولكن يجب أن نحمي أنفسنا و ndahs ؛ من الاشخاص الغير ودودين، لدينا [Terms of Service](/tos) وصف لك (ولنا) السلوك والحقوق ذات الصلة بالمحتوى والخصوصية، لاستخدام هذه الخدمة، يجب أن توافق على التزامك بالشروط والقوانين[TOS](/tos).\n"
+ body: "\n\n## [هذا مكان راقي للنقاشات العامة](#الراقي)\nالرجاء التعامل في هذا المنتدى بنفس الاحترام الذي يكون في حديقة عامة، نحن أيضًا مجتمع مشارك للمصدر و — المكان هنا لتبادل المهارات والمعرفة والاهتمامات عبر الحوارات.\n\nهذه ليست شروط صارمة و سريعة، مجرد مساعده لحفظ حقوق الأشخاص في مجتمعنا، استخدام هذه المبادئ والتوجيهات يساعد في الحفاظ على الجتمع جيدًا للنقاشات الراقية.\n\n\n\n## [تحسين النقاشات](#تحسين)\n\nساعدنا على جعل هذا المكان جيد للمناقشة، من خلال العمل الدائم لتحسين المناقشات ببعض الطرق، مهما كانت صغيرة، اذا لم تكن متأكدًا أن ما تكتبه سيضيف قيمة، فكر فيما ستكتبه وحاول مرة أخرى في وقت لاحق.\n\nالموضوعات التي تتم مناقشتها هنا مهمة بالنسبة لنا، ونريد منك أن تناقشها كما لو أنها مهمة بالنسبة لك، احترم الموضوعات والاشخاص، حتى لو لم تكن متفقًا مع بعض ما يقال.\n\nأحد طرق تحسين النقاش هو اكتشاف ما يجري، يرجى قضاء بعض الوقت في تصفح المواضيع هنا قبل الرد أو نشر موضوعك، لتكون لديك فرصة افضل في تلبية حاجات الآخرين اللذين يشاركونك اهتماماتك.\n\n\n\n## [تقبل الآخرين، حتى لو كنت غير متفق](#تقبل)\n\nقد ترغب في الرد على من اختلفت معهم، هذا جيد/ ولكن تذكر، انتقد الافكار وليس الأشخاص، يرجى تجنب :\n\n* الاهانة.\n* الشخصنة : انتقاد الشخص لا الفكرة .\n* الرد على اسلوب المنشور بدلا من المضمون الفعلي.\n* لا تحتسب المتناقضات.\nبدلا من ذلك، وفر الأدلة البينة التي تعمل على تحسين المحادثة.\n\n\n\n## [مشاركاتكم](#شارك)\n\nالمحادثات التي تكون لدينا متناغمة مع الجميع، ساعدونا في التأثير على مستقبل المجتمع، عن طريق مناقشة ما يجعل لهذا المنتدى أهمية و — وتجنب غير ذلك.\n\nيوفر النقاش الأدوات التي تمكن الجميع من معرفة أفضل (واسوأ) المشاركات: كالمفضلة، العلامات المرجعية، الاعجابات، البلاغات، الردود، التعديلات، وما الى ذلك. استخدمها لتحسين تجربة الجميع.\nدعونا نحاول ترك المكان أفضل مما كان.\n\n\n\n## [اذا رأيت مشكلة، بلّغ عنها ](#الابلاغ-عن-المشاكل)\n\nالمشرفون لديهم سلطة خاصة، وهم مسؤولون عن هذا المنتدى، ولكن حتى أنتم بمساعدتكم، يستطيع المشرفون تسيير المجتمع، ليس عمال النظافة أو الشرطة.\n\nعندما ترى سلوك سيئ، لا ترد عليه، وتشجع السلوك السيئ بالاعتراف به، وتستهلك طاقتك، قم بالإبلاغ عنه، اذا وصلت بلاغات بما فيه الكفاية، سيتم اتخاذ الإجراءات اللازمة، اما تلقائيا، أو عن طريق مشرف.\n\nمن أجل الحفاظ على سلامة المجتمع، المشرفين لديهم الحق في إزالة اي محتوى أو حذف أي حساب لأي سبب في اي وقت، المشرفون لا يتابعون جميع المنشورات الجديدة بأي شكل كان، المشرفون ومشغلوا الموقع لا يتحملون أية مسؤولية عن اي محتو يتم نشره بواسطة المجتمع.\n\n\n\n## [دائما كن محترما](#محترم)\n\nلا شيء يخرب المحادثة الجيدة، مثل الوقاحة:\n\n* كم محترمًا، لا تنشر أي شيء تهجمي، أو خطاب كراهية.\n* ابق المجتمع نظيفا، لا تنشر أي شيء فاحش أو جنسي صريح.\n* احترم الآخرين، لا تضايق أو تحزن شخص، لا تنتحل شخصية أحد آخر، أو تنشر معلوماتهم الخاصة.\n* احترم منتدانا، لا تعمل ازعاجا - spam - أو تخرب أو خلاف ذك في المنتدى.\n\nهذه المصطلحات ليست محددة مع تعريف دقيق و — عليك تجنب ظهور اي من هذه الأشياء. اذا كنت غير مقتنع، أسال نفسك ما ذا سيكون شعورك اذا نشرت على الصفحة الاولى في صحيفة نيويورك تايمز.\nهذا منتدى عام، ومؤشرات محركات البحث تحتوي هذه النقاشات، حافظ على اللغة، الروابط والصور الآمنة للعائلة والاصدقاء.\n\n\n\n## [حافظ عليه مرتبا](#المحافظة-على-الترتيب)\n\nأبذل مزيدا من الجهد في وضع الأمور في مكانها المناسب، حتى نتمكن من قضاء المزيد من الوقت في المناقشات ونقلل من التنظيف، هكذا:\n\n* لا تبدأ موضوع في قسم غير مناسب.\n* لا تنشر نفس المشاركة في مواضيع متعددة.\n* لا ترد ردودا دون محتوى مناسب.\n* لا تحول مسار الموضوع من المنتصف. \n* لا توقع مشاركاتك أو — كل منشوراتك مرتبطة بمعلومات ملفك الشخصي.\n\nبدلا من كتابة \"+1\" أو كتابة \" نتفق عليه \"، استخدم زر أعجبني، من أخذ المواضيع لمواضيع مختلفة جذريا، استخدم ردا برابط الموضوع مرتبط .\n\n\n\n## [انشر فقط شيء تملكه](#سرقة)\nلا تستيطع نشر أي شيء رقمي يملكه شخص آخر دون إذن، لا تستطيع نشر وصف، رابط ، أو سرقة ممتلكات شخص ما الفكرية(البرامج والفيديو والصوت والصور)، أو انتهاك اي قانون آخر.\n\n\n\n## [بدعم منك](#دعم)\n\nيتم تشغيل هذا الموقع من قِبل [friendly local staff](/about) وأنت، و المجتمع، إذا كان لديك اي أسئلة أخرى حول كيف تعمل الأشياء هنا، افتح موضوع جديد في [site feedback category](/c/site-feedback)وأُدعنا للمناقشة! إذا كان هناك أي قضية حرجة أو حاجة ماسة لم يتم التعامل معها بموضوع ميت أو أو بلاغ، اتصل بنا عبر [staff page] (/about).\n\n\n\n## [شروط الخدمة](#شروط-الخدمة)\n\nنعم، الكلام القانوني ممل، ولكن يجب أن نحمي أنفسنا و – من الاشخاص الغير ودودين، لدينا [Terms of Service](/tos) وصف لك (ولنا) السلوك والحقوق ذات الصلة بالمحتوى والخصوصية، لاستخدام هذه الخدمة، يجب أن توافق على التزامك بالشروط والقوانين[TOS](/tos).\n"
tos_topic:
title: "شروط الخدمة"
body: |
@@ -2154,86 +1997,7 @@ ar:
متأقلم أصلا مع [ شروط خدمة WordPress](http://en.wordpress.com/tos/).
privacy_topic:
title: "سياسة الخصوصية"
- body: "\n\n## [ما هي البيانات التي نقوم بجمعها؟](#جمع)\n\nنحن نجمع معلومات عنك عندما تسجل في موقعنا، وعندما تشارك في المنتدى عن طريق القراءة أو الكتابة، ونقوم بتقييم ما تم مشاركته هنا .\n\n\nيمكنك زيارة موقعنا بدون تسجيل، ولكن عند التسجيل في موقعنا، سيطلب منك ادخال اسمك وعنوان بريدك الالكتروني، وسيتم التحقق من بريدك الالكتروني بإرسال رسالة الى بريدك الالكتروني تحتوي على رابط خاص، عند الضغط على هذا الرابط، نحن سنعرف أنك مالك البريد الالكتروني المتحكم فيه.\n\nعندما تقوم بالتسجيل في موقعنا والنشر، سنقوم بتسجيل عنوان IP الذي نشرت منه، أيضا قد تحتفظ سجلات الخادم عناوين IP جميع الطلبات من الخادم.\n\n\n\n## [في ماذا نستخدم المعلومات الخاصة بك؟](#استخدام)\n\nيمكننا استخدام المعلومات التي نجمعها عنك بإحدى الطرق التالية:\n\n* لتخصيص تجربتك و mdahs؛ المعلومات الخاصة بك تساعدنا على الاستجابة بشكل أفضل لاحتياجاتك الفردية.\n* لتحسين موقعنا و mdash ؛ نسعى باستمرار لتحسين ما يعرضه الموقع استنادًا الى المعلومات والتغذية الراجعة - الملاحظات - التي نتلقاها منك.\n* لتحسين خدمة العملاء و mdash ؛ المعلومات الخاصة بك تساعدنا على الاستجابة بشكل أكثر فعالية لطلبات الدعم وخدمة العملاء.\n* لإرسال رسائل البريد الالكتروني الدورية و mdash ؛ سنستخدم عنوان البريد الالكتروني الذي وفرته لنا لإرسال معلومات إليك، الاشعارات التي تطلبها حول التحديثات في المواضيع، أو الاستجابة لاسم المستخدم الخاص بك، كالرد على الاستفسارات، او الطلبات أو اسئلة اخرى.\n\n\n\n## [كيف نقوم بحماية معلوماتك ؟](#حماية)\n\nنقوم بتطبيق مجموعة من الإجراءات الأمنية للمحافظة على أمن وسلامة معلوماتك الشخصية، عندما تقوم بإرسال أو إدخال أو الدخول لمعلوماتك الشخصية.\n\
- \n\n\n## [ما هي سياسة الاحتفاظ بالبيانات الخاصة بك ؟](#الاحتفاظ-بالبيانات)\n\nسوف نبذل جهونا بإخلاص للتالي :\n\n* الاحتفاظ بسجلات عناوين IP لجميع الطلبات لهذا الخادم لمدة لا تزيد عن 90 يومًا.\n* الاحتفاظ بعناوين IP الخاصة بالمستخدمين المسجلين ومنشوراتهم لمدة لا تزيد عن 5 سنوات.\n\n\n\n## [هل نستخدم الكعكات - cookies - ملفات تعريف الارتباط ؟ ](#كعكات)\n\nنعم، الكعكات هي عبارة عن ملفات صغيرة يقوم الموقع أو مزود الخدمة بنقلها الى القرص الصلب لحاسبك من خلال متصفحك (اذا سمحتم بذلك)، هذه الكعكات تعرف الموقع على متصفحك، فن كان لديك حساب مسجل، سيتم ربطه مع حسابك.\n\nنحن نستخدم ملفات تعريف الارتباط - cookies - لفهم وحفظ التفضيلات الخاصة بك للزيارات في المستقبل، وجمع البيانات العامة حول حركة المرور والتفاعل في الموقع حتى نتمكن من تقديم تجربة وأدوات افضل في المستقبل، نحن قد نتعاقد مع مقدمي خدمات من الطرف الثالث لمساعدتنا في تحسين فهمنا لزوار الموقع، مقدمي الخدمات لا يسمح لهم بإستخدام المعلومات التي تم جمعها نيابة عنا، إلّا لمساعدتنا في سلوكنا وتحسين أعمالنا.\n\n\n\n## [هل نقوم بالإفصاح عن أي معلومات لأطراف خارجية؟](#إفصاح)\n\nنحن لا نبيع، ولا نتاجر أو ننقل المعلومات الشخصية الى أطراف خارجية. وهذا لا يشمل الطرف الخاجية الموثوق بها والتي تساعد في تشغيل موقعنا، واجراء أعمالنا، أو تقديم الخدمات لكم، طالما أن تلك الأطراف موافقة للحفاظ على سرية المعلومات، يجوز لنا الافراج عن معوماتك الشخصية عندما نرى أنه هو المناسب للإمتثال للقانون، مع فرض سياسة موقعنا، أو حماية حقوقنا أو حقوق الآخرين، أو حقوق الملكية، أو السلامة. ومع ذلك، يمكننا تقديم معلومات الزائرين دون تحديد الهوية، الى أطراف أخرى للتسويق والاعلان،\
- \ أو غيرها من الاستخدامات.\n\n\n\n## [روابط الطرف الثالث](#الطرف-الثالث)\n\nأحيانًا، نفترض، أنه عند وجود مواقع طرف ثالث تقجم خدمات أو منتجات على موقعنا، كان لدى مواقع الطرف الثالث هذه، سياسات خصوصية منفصلة ومستقلة، لن يكون لدينا أية مسؤولية عن محتوى وأنشطة هذه المواقع المرتبطة، ومع ذلك، نحن نسعى إلى حماية موقعنا وسلامته، ونرحب بأي ملاحظات حول هذه المواقع. \n\n\n\n## [الالتزام بقانون حماية خصوصية الأطفال على الانترنت ](#coppa)\n\nموقعنا والمنتجات والخدمات موجهه للأشخاص اللذين لا تقل أعمارهم عن 13 سنة، إذا كان هذا الخادم في الولايات المتحدة الأمريكية، من شروط COPPA\n ([Children's Online Privacy Protection Act](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act))\nعدم استخدم هذا الموقع.\n\n\n\n## [سياسة الخصوصية على الانترنت](#متصل)\n\nتنطبق سياسة الخصوصية على الانترنت فقط على المعلومات التي يتم جمعها من خلال موقعنا، ولاتنطبق على المعلومات التي يتم جمعها أثناء عدم الاتصال.\n\n\n\n## [الموافقة](#الموافقة)\n\nبإستخدام موقعنا، أنت توافق على سياسة الخصوصية لموقعنا.\n\n\n\n## [تغييرات على سياسة الخصوصية](#تغييرات)\n\nإذا قمنا بتغيير سياسة الخصوصية، سوف نقوم بنشر هذه التغييرات في هذه الصفحة.\n\nهذه الوثيقة هي نسخة من CC-BY-SA تم تحديثها في 31 مايو عام 2013م .\n"
- static:
- search_help: |
-
-
-
-
-
-
-
order:views | order:latest | order:likes | |||
status:open | status:closed | status:archived | status:noreplies | status:single_user | |
category:foo | user:foo | group:foo | badge:foo | ||
in:likes | in:posted | in:watching | in:tracking | in:private | |
in:bookmarks | in:first | ||||
posts_count:num | min_age:days | max_age:days |
-
-
- rainbows category:parks status:open order:latest
سيبحث عن المواضيع المحتوية كلمة "rainbows" في الفئة "parks" التي لم تغلق أو تؤرشف, رتبت بتاريخ أخر المشاركة.
-
- badges: - long_descriptions: - autobiographer: | - منحت هذه الشارة لتعبئتك صفحة المستخدم الشخصية واختيار صورة شخصية. السماح للمجتمع معرفة المزيد حولك وماذاترغب يجعل المجتمع أكثر ارتباطاً - first_like: | - منحت هذه الشارة لك لإعجابك للمرة الأولى بالمشاركة بواسطة :heart: button. الإعجاب بالمشاركات وسيلة رائعة تسمح لرفاقك في المجتمع معرفة أن المشاركة كانت مثيرة للاهتمام ومفيدة وجيدة، أو ممتعة. شارك ما يعجبك! - first_link: | - منحت لك هذه الشارة لأنك قمت أول مرة بوضع رابط لموضوع آخر في الردود. المواضيع المترابطة تساعد القراء المتابعين على إيجاد المواضيع المتعلقة بحوارهم ، ويظهر الصلة بين المواضيع. - first_quote: |+ - منحت هذه الشارة لإقتباسك المرة الأولى منشورًا في ردك. نقلًا عن الأجزاء ذات الصلة من المنشورات السابقة في ردودك يساعد على إبقاء المناقشات مرتكزة وحول موضوع المنشور. - - first_share: | - منحت هذه الشارة لمشاركتك لأول مرة رابط الرد أو المنشور باستعمال زر المشاركة. مشاركة الروابط وسيلة رائعة لإظهار النقاشات المهمة للآخرين وتنمية المجتمع الخاص بك. - read_guidelines: | - منحت هذه الشارة لأنك قرأت مبادئ و توجيهات المجتمع . اتباع هذه المبادئ والتوجيهات البسيطة تساعد على بناء مجتمع آمن وممتع دائمًا. - reader: | - منحت هذه الشارة لقراءتك موضوع طويل. القراءة أمر اساسي، القراءة عن كثب تساعدك على متابعة الحوار و كتابة ردود أفضل ومتكاملة. - editor: | - منحت هذه الشارة لتحريرك مشاركتك، لا تترد في تحرير مشاركاتك في أي وقت لتحسينها، وإصلاح الأخطاء الصغيرة، أو إضافة شئ نسيته. - first_flag: | - منحت هذه الشارة لتبليغك عن منشور، و التبليغ ذو أهمية بالغة لصحة مجتمعك، اذا لاحظت أي منشور يتطلب متابعة المشرف رجاءًا لا تتردد في الابلاغ عنه - يمكنك أيضًا استخدام مربع الابلاغ لإرسال رسالة الى المستخدمين الآخرين. - nice_share: | - منحت هذه الشارة لزيارة 25 شخصاً لرابط المشاركة الذي نشرته، عمل رائع ! مشاركة روابط النقاشات المثيرة للاهتمام مع أصدقاءك وسيلة ممتازة لتنمية مجتمعنا. - welcome: | - منحت هذه الشارة لأنك تلقيت علامة الإعجاب الأولى على منشورك، لقد وجد رفاقك أن منشورك مثيرٌ للاهتمام وممتعا، أو مفيدًا ! - anniversary: | - منحت هذه الشارة لأنك كنت عضوًا لمدة سنة، لقد نشرت منشورًا واحدًا على الأقل في هذه السنة. شكرًا لمساهمتك في مجتمعنا ! - good_share: | - منحت هذه الشارة لمشاركتك رابط المنشور الذي زاره 300 زائر، نجاح باهر! لقد عرضت نقاشًا مهما لـالكثير من الأشخاص الجدد وساعدت على تنمية مجتمعنا. - great_share: | - منحت هذه الشارة لمشاركتك رابط المنشور الذي زاره 100زائر، عمل رائع! لقد شجعت على مناقشة مهمة لجمهور جديد ضخم لهذا المجتمع وساعدت على تنميته بشكل كبير. - nice_post: | - هذه الشارة تمنح لوجود رد حصل على 10 إعجابات. عمل جميل! - nice_topic: | - هذه الشارة تمنح لوجود رد حصل على 10 إعجابات. عمل جميل! - good_post: | - هذه الشارة تمنح لوجود رد حصل على 25 إعجاب. عمل جيد! - good_topic: | - هذه الشارة تمنح لوجود رد حصل على 25 إعجاب. عمل جيد! - great_post: | - هذه الشارة تمنح لوجود رد حصل على 50 إعجاب. ياللعجب! - great_topic: | - هذه الشارة تمنح لوجود رد حصل على 50 إعجاب. ياللعجب! - basic: | - منحت هذه الشارة لأنك وصلت مستوى الثقة الأول 1 ، شكرًا لتعليقاتك وقراءتك عدد من المواضيع لتتعرف على مجتمعنا، وقد تم رفع جميع قيود المستخدم الجديد عنك، و مُنحت الامكانيات الأسياسة في المجتمع، مثل الرسائل الشخصية، و الإبلاغ، و تحرير الويكي والقدرة على نشر الصور والروابط المتعددة. - member: | - منحت هذه الشارة لأنك وصلت مستوى الثقة الثاني 2، شكرًا لمشاركتك لأسابيع منذ انضمامك لمجتعنا، يمكنك الآن إرسال دعوات للأعضاء من صفحتك الشخصية أو من المواضيع، إنشاء مجموعة الرسائل، وإعطاء علامات إعجاب أكثر في اليوم الواحد. - regular: |+ - يتم منح هذه الشارة عندما تصل لمستوى الثقة 3. شكرا لكونك جزءا منضبطاً من مجتمعنا على مدى أشهر، أحد القراء الأكثر نشاطا ومساهمة معتمدا، لما يجعل هذا المجتمع عظيم. يمكنك الآن إعادة تصنيف وإعادة تسمية الموضوعات، والوصول إلى الاستراحة الخاصة وأقدر على الإعلام بالبريد المزعج، وغيرها كثير من الإعجابات لكل يوم. - - leader: | - هذه الشارة تمنح لك عندما تصل للمرحلة 4. أنت قائد في هذا المجتمع مرشح من الطاقم كمثال جيد في المجتمع في أقوالك وأفعالك. لديك القدرة على تعديل كل المشاركات، إدارة المواضيع بالتثبيت والإغلاق والتقسيم والدمج والأرشفة والعديد من الإعجابات كل يوم. + body: "\n\n## [ما هي البيانات التي نقوم بجمعها؟](#جمع)\n\nنحن نجمع معلومات عنك عندما تسجل في موقعنا، وعندما تشارك في المنتدى عن طريق القراءة أو الكتابة، ونقوم بتقييم ما تم مشاركته هنا .\n\n\nيمكنك زيارة موقعنا بدون تسجيل، ولكن عند التسجيل في موقعنا، سيطلب منك ادخال اسمك وعنوان بريدك الالكتروني، وسيتم التحقق من بريدك الالكتروني بإرسال رسالة الى بريدك الالكتروني تحتوي على رابط خاص، عند الضغط على هذا الرابط، نحن سنعرف أنك مالك البريد الالكتروني المتحكم فيه.\n\nعندما تقوم بالتسجيل في موقعنا والنشر، سنقوم بتسجيل عنوان IP الذي نشرت منه، أيضا قد تحتفظ سجلات الخادم عناوين IP جميع الطلبات من الخادم.\n\n\n\n## [في ماذا نستخدم المعلومات الخاصة بك؟](#استخدام)\n\nيمكننا استخدام المعلومات التي نجمعها عنك بإحدى الطرق التالية:\n\n* لتخصيص تجربتك و mdahs؛ المعلومات الخاصة بك تساعدنا على الاستجابة بشكل أفضل لاحتياجاتك الفردية.\n* لتحسين موقعنا و mdash ؛ نسعى باستمرار لتحسين ما يعرضه الموقع استنادًا الى المعلومات والتغذية الراجعة - الملاحظات - التي نتلقاها منك.\n* لتحسين خدمة العملاء و mdash ؛ المعلومات الخاصة بك تساعدنا على الاستجابة بشكل أكثر فعالية لطلبات الدعم وخدمة العملاء.\n* لإرسال رسائل البريد الالكتروني الدورية و mdash ؛ سنستخدم عنوان البريد الالكتروني الذي وفرته لنا لإرسال معلومات إليك، الاشعارات التي تطلبها حول التحديثات في المواضيع، أو الاستجابة لاسم المستخدم الخاص بك، كالرد على الاستفسارات، او الطلبات أو اسئلة اخرى.\n\n\n\n## [كيف نقوم بحماية معلوماتك ؟](#حماية)\n\nنقوم بتطبيق مجموعة من الإجراءات الأمنية للمحافظة على أمن وسلامة معلوماتك الشخصية، عندما تقوم بإرسال أو إدخال أو الدخول لمعلوماتك الشخصية.\n\n\n\n## [ما هي سياسة الاحتفاظ بالبيانات الخاصة بك ؟](#الاحتفاظ-بالبيانات)\n\nسوف نبذل جهونا بإخلاص للتالي :\n\n* الاحتفاظ بسجلات عناوين IP لجميع الطلبات لهذا الخادم لمدة لا تزيد عن 90 يومًا.\n* الاحتفاظ بعناوين IP الخاصة بالمستخدمين المسجلين ومنشوراتهم لمدة لا تزيد عن 5 سنوات.\n\n\n\n## [هل نستخدم الكعكات - cookies - ملفات تعريف الارتباط ؟ ](#كعكات)\n\nنعم، الكعكات هي عبارة عن ملفات صغيرة يقوم الموقع أو مزود الخدمة بنقلها الى القرص الصلب لحاسبك من خلال متصفحك (اذا سمحتم بذلك)، هذه الكعكات تعرف الموقع على متصفحك، فن كان لديك حساب مسجل، سيتم ربطه مع حسابك.\n\nنحن نستخدم ملفات تعريف الارتباط - cookies - لفهم وحفظ التفضيلات الخاصة بك للزيارات في المستقبل، وجمع البيانات العامة حول حركة المرور والتفاعل في الموقع حتى نتمكن من تقديم تجربة وأدوات افضل في المستقبل، نحن قد نتعاقد مع مقدمي خدمات من الطرف الثالث لمساعدتنا في تحسين فهمنا لزوار الموقع، مقدمي الخدمات لا يسمح لهم بإستخدام المعلومات التي تم جمعها نيابة عنا، إلّا لمساعدتنا في سلوكنا وتحسين أعمالنا.\n\n\n\n## [هل نقوم بالإفصاح عن أي معلومات لأطراف خارجية؟](#إفصاح)\n\nنحن لا نبيع، ولا نتاجر أو ننقل المعلومات الشخصية الى أطراف خارجية. وهذا لا يشمل الطرف الخاجية الموثوق بها والتي تساعد في تشغيل موقعنا، واجراء أعمالنا، أو تقديم الخدمات لكم، طالما أن تلك الأطراف موافقة للحفاظ على سرية المعلومات، يجوز لنا الافراج عن معوماتك الشخصية عندما نرى أنه هو المناسب للإمتثال للقانون، مع فرض سياسة موقعنا، أو حماية حقوقنا أو حقوق الآخرين، أو حقوق الملكية، أو السلامة. ومع ذلك، يمكننا تقديم معلومات الزائرين دون تحديد الهوية، الى أطراف أخرى للتسويق والاعلان، أو غيرها من الاستخدامات.\n\n\n\n## [روابط الطرف الثالث](#الطرف-الثالث)\n\nأحيانًا، نفترض، أنه عند وجود مواقع طرف ثالث تقجم خدمات أو منتجات على موقعنا، كان لدى مواقع الطرف الثالث هذه، سياسات خصوصية منفصلة ومستقلة، لن يكون لدينا أية مسؤولية عن محتوى وأنشطة هذه المواقع المرتبطة، ومع ذلك، نحن نسعى إلى حماية موقعنا وسلامته، ونرحب بأي ملاحظات حول هذه المواقع. \n\n\n\n## [الالتزام بقانون حماية خصوصية الأطفال على الانترنت ](#coppa)\n\nموقعنا والمنتجات والخدمات موجهه للأشخاص اللذين لا تقل أعمارهم عن 13 سنة، إذا كان هذا الخادم في الولايات المتحدة الأمريكية، من شروط COPPA\n ([Children's Online Privacy Protection Act](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act))\nعدم استخدم هذا الموقع.\n\n\n\n## [سياسة الخصوصية على الانترنت](#متصل)\n\nتنطبق سياسة الخصوصية على الانترنت فقط على المعلومات التي يتم جمعها من خلال موقعنا، ولاتنطبق على المعلومات التي يتم جمعها أثناء عدم الاتصال.\n\n\n\n## [الموافقة](#الموافقة)\n\nبإستخدام موقعنا، أنت توافق على سياسة الخصوصية لموقعنا.\n\n\n\n## [تغييرات على سياسة الخصوصية](#تغييرات)\n\nإذا قمنا بتغيير سياسة الخصوصية، سوف نقوم بنشر هذه التغييرات في هذه الصفحة.\n\nهذه الوثيقة هي نسخة من CC-BY-SA تم تحديثها في 31 مايو عام 2013م .\n" admin_login: success: "البريد أُرسل" error: "خطأ!" @@ -2244,3 +2008,8 @@ ar: performance_report: initial_post_raw: 'هذا الموضوع يحتوي على معلومات الاداء اليومي للموقع ' initial_topic_title: التبليغ عن اداء الموقع + time: + <<: *datetime_formats + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.bs_BA.yml b/config/locales/server.bs_BA.yml index a0ac846100d..dab422bd42d 100644 --- a/config/locales/server.bs_BA.yml +++ b/config/locales/server.bs_BA.yml @@ -16,11 +16,9 @@ bs_BA: loading: "Loading" powered_by_html: 'Powered by Discourse, best viewed with JavaScript enabled' log_in: "Log In" - via: "%{username} via %{site_name}" - is_reserved: "is reserved" purge_reason: "Automatically deleted due to being old and unverified" disable_remote_images_download_reason: "Remote images download was disabled because there wasn't enough disk space available." - errors: + errors: &errors messages: too_long_validation: "is limited to %{max} characters; you entered %{length}." invalid_boolean: "Invalid boolean." @@ -42,26 +40,6 @@ bs_BA: permalink: "Permalink" imported_from: "This is a companion discussion topic for the original entry at %{link}" in_reply_to: "▶ %{username}" - too_many_mentions: - zero: "Sorry, you can't mention other users." - one: "Sorry, you can only mention one other user in a post." - other: "Sorry, you can only mention %{count} users in a post." - too_many_mentions_newuser: - zero: "Sorry, new users can't mention other users." - one: "Sorry, new users can only mention one other user in a post." - other: "Sorry, new users can only mention %{count} users in a post." - too_many_images: - zero: "Sorry, new users can't put images in posts." - one: "Sorry, new users can only put one image in a post." - other: "Sorry, new users can only put %{count} images in a post." - too_many_attachments: - zero: "Sorry, new users can't put attachments in posts." - one: "Sorry, new users can only put one attachment in a post." - other: "Sorry, new users can only put %{count} attachments in a post." - too_many_links: - zero: "Sorry, new users can't put links in posts." - one: "Sorry, new users can only put one link in a post." - other: "Sorry, new users can only put %{count} links in a post." spamming_host: "Sorry you cannot post a link to that host." user_is_suspended: "Suspended users are not allowed to post." just_posted_that: "is too similar to what you recently posted" @@ -150,9 +128,6 @@ bs_BA: user_profile: bio_raw: "O Meni" errors: - messages: - is_invalid: "nije validno; pokušaj sa malo više opisa" - has_already_been_used: "već se koristi" models: topic: attributes: @@ -169,6 +144,7 @@ bs_BA: attributes: hex: invalid: "is not a valid color" + <<: *errors user_profile: no_info_me: "
" no_info_other: "
" @@ -203,8 +179,6 @@ bs_BA: [trust]: https://meta.discourse.org/t/what-do-user-trust-levels-do/4924 category: topic_prefix: "About the %{category} category" - replace_paragraph: "[Replace this first paragraph with a short description of your new category. This guidance will appear in the category selection area, so try to keep it below 200 characters. Until you edit this text or create topics, this category won't appear on the categories page.]" - post_template: "%{replace_paragraph}\n\nUse the following paragraphs for a longer description, as well as to establish any category guidelines or rules.\n\nSome things to consider in any discussion replies below:\n\n- What is this category for? Why should people select this category for their topic?\n\n- How is this different than the other categories we already have?\n\n- Do we need this category?\n\n- Should we merge this with another category, or split it into more categories?\n" errors: uncategorized_parent: "Uncategorized can't have a parent category" self_parent: "A subcategory's parent cannot be itself" @@ -218,15 +192,8 @@ bs_BA: title: "novi korisnik" basic: title: "korisnik" - regular: - title: "član" - leader: - title: "pokretač" - elder: - title: "vođa" change_failed_explanation: "You attempted to demote %{user_name} to '%{new_trust_level}'. However their trust level is already '%{current_trust_level}'. %{user_name} will remain at '%{current_trust_level}' - if you wish to demote user lock trust level first" rate_limiter: - slow_down: "You have performed this action too many times, try again later" too_many_requests: "We have a daily limit on how many times that action can be taken. Please wait %{time_left} before trying again." datetime: distance_in_words: @@ -266,16 +233,11 @@ bs_BA: description: 'Ovaj post sadrži tekst koji je uvredljiv i pogrdan. I kao takav kosi se sa našim pravilima korišćenja.' long_form: 'opomeni kao neprikladno' notify_user: - title: 'Obavijesti {{username}}' - description: 'Ovaj post sadrži materijal o kojem želim da raspravljam sa osobom direktno, privatno i bez opomene.' long_form: 'korisnik obavješten' email_title: 'Tvoj post u temi "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: title: "Obavijesti Moderatore" - description: 'Ovaj post treba prijaviti moderatoru jer se kosi sa pravilima korišćenja, ili drugim razlogom ne navedenim gore.' - long_form: 'obavješten moderator' - email_title: 'Postu u temi "%{title}" treba pažnju moderatora' email_body: "%{link}\n\n%{message}" bookmark: title: 'Sačuvaj' @@ -300,7 +262,6 @@ bs_BA: long_form: 'opomenuto kao neprikladno' notify_moderators: title: "Obavijesti Moderatore" - description: 'Ovu temu treba prijaviti moderatoru jer se kosi sa pravilima korišćenja, ili drugim razlogom ne navedenim gore.' long_form: 'moderator obaviješten' email_title: 'Ova tema "%{title}" treba pažnju moderatora' email_body: "%{link}\n\n%{message}" @@ -424,37 +385,6 @@ bs_BA: consumer_email_warning: "Your site is configured to use Gmail (or another consumer email service) to send email. Gmail limits how many emails you can send. Consider using an email service provider like mandrill.com to ensure email deliverability." site_contact_username_warning: "The site_contact_username setting is blank. Please update it in the Site Settings. Set it to the username of an admin user who should be the sender of system messages." notification_email_warning: "The notification_email setting is blank. Please update it in the Site Settings." - content_types: - education_new_reply: - title: "New User Education: First Replies" - description: "Pop up just-in-time guidance automatically displayed above the composer when new users begin typing their first two new replies." - education_new_topic: - title: "New User Education: First Topics" - description: "Pop up just-in-time guidance automatically displayed above the composer when new users begin typing their first two new topics." - usage_tips: - title: "New User Guidance" - description: "Guidance and essential information for new users." - welcome_user: - title: "Welcome: New User" - description: "A private message automatically sent to all new users when they sign up." - welcome_invite: - title: "Welcome: Invited User" - description: "A private message automatically sent to all new invited users when they accept the invitation from another user to participate." - login_required_welcome_message: - title: "Login Required: Welcome Message" - description: "Welcome message that is displayed to logged out users when the 'login required' setting is enabled." - login_required: - title: "Login Required: Homepage" - description: "The text displayed for unauthorized users when login is required on the site." - head: - title: "HTML head" - description: "HTML that will be inserted inside the
tags." - top: - title: "Top of the pages" - description: "HTML that will be added at the top of every page (after the header, before the navigation or the topic title)." - bottom: - title: "Bottom of the pages" - description: "HTML that will be added at the bottom of every page." site_settings: censored_words: "Words that will be automatically replaced with ■■■■" delete_old_hidden_posts: "Auto-delete any hidden posts that stay hidden for more than 30 days." @@ -467,7 +397,6 @@ bs_BA: max_topic_title_length: "Maximum allowed topic title length in characters" min_private_message_title_length: "Minimum allowed title length for a private message in characters" min_search_term_length: "Minimum valid search term length in characters" - uncategorized_description: "The description of the uncategorized category. Leave blank for no description." allow_duplicate_topic_titles: "Allow topics with identical, duplicate titles." unique_posts_mins: "How many minutes before a user can make a post with the same content again" educate_until_posts: "When the user starts typing their first (n) new posts, show the pop-up new user education panel in the composer." @@ -479,7 +408,6 @@ bs_BA: download_remote_images_to_local: "Convert remote images to local images by downloading them; this prevents broken images." download_remote_images_threshold: "Minimum disk space necessary to download remote images locally (in percent)" disabled_image_download_domains: "Remote images will never be downloaded from these domains. Pipe-delimited list." - ninja_edit_window: "For (n) seconds after posting, editing will not create a new version in the post history." post_edit_time_limit: "The author can edit or delete their post for (n) minutes after posting. Set to 0 for forever." edit_history_visible_to_public: "Allow everyone to see previous versions of an edited post. When disabled, only staff members can view." delete_removed_posts_after: "Posts removed by the author will be automatically deleted after (n) hours. If set to 0, posts will be deleted immediately." @@ -501,7 +429,6 @@ bs_BA: summary_posts_required: "Minimum posts in a topic before 'Summarize This Topic' is enabled" summary_likes_required: "Minimum likes in a topic before 'Summarize This Topic' is enabled" summary_percent_filter: "When a user clicks 'Summarize This Topic', show the top % of posts" - enable_private_messages: "Allow trust level 1 users to create private messages and reply to private messages" enable_long_polling: "Message bus used for notification can use long polling" long_polling_interval: "Interval before a new long poll is issued in milliseconds " polling_interval: "How often should logged in user clients poll in milliseconds" @@ -615,16 +542,9 @@ bs_BA: tl2_requires_likes_received: "How many likes a user must receive before promotion to trust level 2." tl2_requires_likes_given: "How many likes a user must cast before promotion to trust level 2." tl2_requires_topic_reply_count: "How many topics user must reply to before promotion to trust level 2." - tl3_requires_days_visited: "Minimum number of days that a user needs to have visited the site in the last 100 days to qualify for promotion to trust level 3. (0 to 100)" - tl3_requires_topics_replied_to: "Minimum number of topics a user needs to have replied to in the last 100 days to qualify for promotion to trust level 3. (0 or higher)" - tl3_requires_topics_viewed: "The percentage of topics created in the last 100 days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)" - tl3_requires_posts_read: "The percentage of posts created in the last 100 days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)" tl3_requires_topics_viewed_all_time: "The minimum total number of topics a user must have viewed to qualify for trust level 3." tl3_requires_posts_read_all_time: "The minimum total number of posts a user must have read to qualify for trust level 3." - tl3_requires_max_flagged: "User must not have had more than x posts flagged by x different users in the last 100 days to qualify for promotion to trust level 3, where x is this setting's value. (0 or higher)" tl3_promotion_min_duration: "The minimum number of days that a promotion to trust level 3 lasts before a user can be demoted back to trust level 2." - tl3_requires_likes_given: "The minimum number of likes that must be given in the last 100 days to qualify for promotion to trust level 3." - tl3_requires_likes_received: "The minimum number of likes that must be received in the last 100 days to qualify for promotion to trust level 3." tl3_links_no_follow: "Do not remove rel=nofollow from links posted by trust level 3 users." min_trust_to_create_topic: "The minimum trust level required to create a new topic." min_trust_to_edit_wiki_post: "The minimum trust level required to edit post marked as wiki." @@ -694,7 +614,6 @@ bs_BA: max_daily_gravatar_crawls: "Maximum number of times Discourse will check Gravatar for custom avatars in a day" public_user_custom_fields: "A whitelist of custom fields for a user that can be shown publically." allow_profile_backgrounds: "Allow users to upload profile backgrounds." - sequential_replies_threshold: "Number posts a user has to make in a row in a topic before being reminded about too many sequential replies. " enable_mobile_theme: "Mobile devices use a mobile-friendly theme, with the ability to switch to the full site. Disable this if you want to use a custom stylesheet that is fully responsive." dominating_topic_minimum_percent: "What percentage of posts a user has to make in a topic before being reminded about overly dominating a topic." suppress_uncategorized_badge: "Don't show the badge for uncategorized topics in topic lists." @@ -718,7 +637,6 @@ bs_BA: notify_about_flags_after: "If there are flags that haven't been handled after this many hours, send an email to the contact_email. Set to 0 to disable." enable_cdn_js_debugging: "Allow /logs to display proper errors by adding crossorigin permissions on all js includes." show_create_topics_notice: "If the site has fewer than 5 public topics, show a notice asking admins to create some topics." - vacuum_db_days: "Run VACUUM FULL ANALYZE to reclaim DB space after migrations (set to 0 to disable)" prevent_anons_from_downloading_files: "Prevent anonymous users from downloading files. WARNING: this will prevent any site assets posted as attachments from working." errors: invalid_email: "Invalid email address." @@ -837,56 +755,10 @@ bs_BA: subject_template: "Set password for your %{site_name} account" test_mailer: subject_template: "[%{site_name}] Email Deliverability Test" - text_body_template: | - This is a test email from - - [**%{base_url}**][0] - - Email deliverability is complicated. Here are a few important things you should check first: - - - Be *sure* to set the `notification email` from: address correctly in your site settings. **The domain specified in the "from" address of the emails you send is the domain your email will be validated against**. - - - Know how to view the raw source of the email in your mail client, so you can examine email headers for important clues. in Gmail, it is the "show original" option in the drop-down menu at the top right of each mail. - - - **IMPORTANT:** Does your ISP have a reverse DNS record entered to associate the domain names and IP addresses you send mail from? [Test your Reverse PTR record][2] here. If your ISP does not enter the proper reverse DNS pointer record, it's very unlikely any of your email will be delivered. - - - Is your domain's [SPF record][8] correct? [Test your SPF record][1] here. Note that TXT is the correct official record type for SPF. - - - Is your domain's [DKIM record][3] correct? This will significantly improve email deliverability. [Test your DKIM record][7] here. - - - If you run your own mail server, check to make sure the IPs of your mail server are [not on any email blacklists][4]. Also verify that it is definitely sending a fully-qualified hostname that resolves in DNS in its HELO message. If not, this will cause your email to be rejected by many mail services. - - (The *easy* way is to create a free account on [Mandrill][md] or [Mailgun][mg] or [Mailjet][mj], which have free generous free mailing plans and will be fine for small communities. You'll still need to set up the SPF and DKIM records in your DNS, though!) - - We hope you received this email deliverability test OK! - - Good luck, - - Your friends at [Discourse](http://www.discourse.org) - - [0]: %{base_url} - [1]: http://www.kitterman.com/spf/validate.html - [2]: http://mxtoolbox.com/ReverseLookup.aspx - [3]: http://www.dkim.org/ - [4]: http://whatismyipaddress.com/blacklist-check - [5]: %{base_url}/unsubscribe - [7]: http://dkimcore.org/tools/dkimrecordcheck.html - [8]: http://www.openspf.org/SPF_Record_Syntax - [md]: http://mandrill.com - [mg]: http://www.mailgun.com/ - [mj]: http://www.mailjet.com/pricing - - ---- - - There should be an unsubscribe footer on every email you send, so let's mock one up. This email was sent by Name of Company, 55 Main Street, Anytown, USA 12345. If you would like to opt out of future emails, [click here to unsubscribe][5]. new_version_mailer: subject_template: "[%{site_name}] New Discourse version, update available" new_version_mailer_with_notes: subject_template: "[%{site_name}] update available" - flags_reminder: - please_review: "Please review them." - post_number: "post" - how_to_disable: 'Disable this email by changing the
notify_about_flags_after
setting to 0.' flag_reasons: off_topic: "Your post was flagged as **off-topic**: the community thinks it does not fit into the topic, as currently defined by the title and the first post." inappropriate: "Your post was flagged as **inappropriate**: the community thinks it is offensive, abusive, or a violation of [the community guidelines](/guidelines)." @@ -996,56 +868,16 @@ bs_BA: csv_export_failed: subject_template: "Export failed" text_body_template: "The export has failed. Please check the logs." - email_reject_trust_level: - subject_template: "Email issue -- Insufficient Trust Level" - text_body_template: | - We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. - - Your account does not have the required trust level to post new topics to this email address. If you believe this is in error, contact a staff member. email_reject_no_account: subject_template: "Email issue -- No Account" - text_body_template: | - We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. - - There is no known account with this email address. Try sending from a different email address, or contact a staff member. email_reject_empty: subject_template: "Email issue -- No Content" email_reject_parsing: subject_template: "Email issue -- Content unrecognized" - email_reject_post_error: - subject_template: "Email issue -- Posting error" - text_body_template: | - We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. - - Some possible causes are: complex formatting, message too large, message too small. Please try again, or post via the website if this continues. - email_reject_post_error_specified: - subject_template: "Email issue -- Posting error" - text_body_template: | - We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. - - Reason: - - %{post_error} - - If you can correct the problem, please try again. email_reject_reply_key: subject_template: "Email issue -- Bad Reply Key" - text_body_template: | - We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. - - The provided reply key is invalid or unknown, so we don't know what this email is in reply to. Contact a staff member. - email_reject_destination: - subject_template: "Email issue -- Bad Destination Address(es)" - text_body_template: | - We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. - - None of the destination addresses are recognized by the forum. Please make sure that the forum is in the To: line (not CC or BCC), and that you are sending to the email address provided by the forum administrators. email_error_notification: subject_template: "Email issue -- POP authentication error" - text_body_template: | - There has been an authentication error while polling mails from the POP server. - - Please make sure you have properly configured the POP credentials in [the site settings](%{base_url}/admin/site_settings/category/email). too_many_spam_flags: subject_template: "New account blocked" text_body_template: | @@ -1058,32 +890,10 @@ bs_BA: For additional guidance, please refer to our [community guidelines](%{base_url}/guidelines). blocked_by_staff: subject_template: "Account blocked" - text_body_template: | - Hello, - - This is an automated message from %{site_name} to inform you that your account has been blocked by a staff member. - - For additional guidance, please refer to our [community guidelines](%{base_url}/guidelines). user_automatically_blocked: subject_template: "New user %{username} blocked due to community flags" - text_body_template: | - This is an automated message. - - The new user [%{username}](%{base_url}%{user_url}) was automatically blocked because multiple users flagged %{username}'s post(s). - - Please [review the flags](%{base_url}/admin/flags). If %{username} was incorrectly blocked from posting, click the unblock button on [the admin page for this user](%{base_url}%{user_url}). - - This threshold can be changed via the `block_new_user` site settings. spam_post_blocked: subject_template: "New user %{username} posts blocked due to repeated links" - text_body_template: | - This is an automated message. - - The new user [%{username}](%{base_url}%{user_url}) tried to create multiple posts with links to %{domains}, but those posts were blocked to avoid spam. The user is still able to create new posts that do not link to %{domains}. - - Please [review the user](%{base_url}%{user_url}). - - This can be modified via the `newuser_spam_host_threshold` and `white_listed_spam_host_domains` site settings. unblocked: subject_template: "Account unblocked" text_body_template: | @@ -1107,60 +917,19 @@ bs_BA: unsubscribe: title: "Odjavi se" description: "Niste zainteresovani za ove email-e? Nema problema! Kliknite ovdje da se odjavite:" - reply_by_email: "Da odgovorite, reply to this email or visit %{base_url}%{url} in your browser." - visit_link_to_respond: "Da odgovorite, posjetite %{base_url}%{url} u vašem browseru." posted_by: "Odgovoreno %{username} dana %{post_date}" user_invited_to_private_message_pm: subject_template: "[%{site_name}] %{username} invited you to a private message '%{topic_title}'" - text_body_template: | - %{username} invited you to a private message '%{topic_title}' on %{site_name}: - - Please visit this link to view the topic: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_quoted: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_mentioned: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_posted: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_posted_pm: subject_template: "[%{site_name}] [PM] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} digest: why: "Ukratko šta se dešavalo na %{site_link} od vaše zadnje posjete %{last_seen_at}." subject_template: "[%{site_name}] Pregled za %{date}" @@ -1198,12 +967,6 @@ bs_BA: Kliknite na link ispod da kreirate šifru za vaš nalog: %{base_url}/users/password-reset/%{email_token} - authorize_email: - subject_template: "[%{site_name}] Potvrdite vaš novi email" - text_body_template: | - Confirm your new email address for %{site_name} by clicking on the following link: - - %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "You've been approved on %{site_name}!" text_body_template: | @@ -1230,7 +993,6 @@ bs_BA: Ako link iznad ne može da se klikne onda ga kopirajte i ubacite u vaš internet pretraživač. page_not_found: - title: "Strana koju tražite je nepostojeća ili privatna." popular_topics: "Popularne" recent_topics: "Nove" see_more: "Više" @@ -1284,3 +1046,6 @@ bs_BA: title: "Terms of Service" privacy_topic: title: "Privacy Policy" + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.cs.yml b/config/locales/server.cs.yml index 1a9c46a5603..ab1be99c652 100644 --- a/config/locales/server.cs.yml +++ b/config/locales/server.cs.yml @@ -10,17 +10,24 @@ cs: short_date_no_year: "D. MMM" short_date: "D. MMM, YYYY" long_date: "D. MMMM YYYY h:mma" + datetime_formats: &datetime_formats + formats: + short: "%-d. %-m. %Y" + short_no_year: "%-d. %B" + date_only: "%-d %B %Y" + date: + month_names: [null, ledna, února, března, dubna, května, června, července, srpna, září, října, listopadu, prosince] + <<: *datetime_formats title: "Discourse" topics: "Témata" posts: "příspěvky" loading: "Nahrávám" powered_by_html: 'Systém běží na Discourse, nejlépe funguje se zapnutým JavaScriptem' log_in: "Přihlásit se" - via: "%{username} přes %{site_name}" - is_reserved: "je rezervováno" + purge_reason: "Automaticky smazán jako opuštěný, neaktivovaný účet" disable_remote_images_download_reason: "Stahování obrázků z cizích serverů bylo vypnuto protože na disku není dostatek místa." anonymous: "Anonymní" - errors: + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "je limitováno na %{max} znaků; zadali jste %{length}." @@ -36,8 +43,10 @@ cs: exclusion: je rezervováno greater_than: musí být větší než %{count} greater_than_or_equal_to: musí být větší nebo rovno %{count} + has_already_been_used: "již byl použit" inclusion: není zahrnutý v seznamu invalid: je neplatný + is_invalid: "je neplatný; zkus být trochu více popisný" less_than: musí být menší než %{count} less_than_or_equal_to: musí být menší nebo roven %{count} not_a_number: není číslo @@ -45,6 +54,7 @@ cs: odd: musí být lichý record_invalid: 'Ověření selhalo: %{errors}' restrict_dependent_destroy: + one: "Nelze odstranit záznam, protože závisející %{record} existuje" many: "Nemůžu smazat záznam protože na něm závisí %{record}." too_long: one: je příliš dlouhý ( maximálně %{count} znak) @@ -61,8 +71,18 @@ cs: other_than: "musí být jiný než %{count}" template: body: 'Nastaly problémy s následujícími poli: ' + header: + one: 1 chyba zamezila uložení modelu %{model} + few: '%{count} chyb zamezilo uložení modelu %{model}' + other: '%{count} chyb zamezilo uložení modelu %{model}' embed: load_from_remote: "Při načítání příspěvku nastala chyba." + site_settings: + min_username_length_exists: "Nemůžeš nastavit minimální délku uživatelského jména delší než je nejkratší uživatelské jméno." + min_username_length_range: "Nemůžeš nastavit minimum nad maximum." + max_username_length_exists: "Nemůžeš nastavit délku maximální uživatelského jména kratší než je nejdelší uživatelské jméno. " + max_username_length_range: "Nemůžeš nastavit maximum pod minimum." + default_categories_already_selected: "Nemůžeš vybrat kategorii používanou v jiném seznamu." bulk_invite: file_should_be_csv: "Nahraný soubrou by měl být ve formátu csv nebo txt." backup: @@ -91,26 +111,6 @@ cs: one: "1 reakce" few: "%{count} reakce" other: "%{count} reakcí" - too_many_mentions: - zero: "Bohužel, nemůžete zmiňovat ostatní uživatele." - one: "Bohužel, můžete zmínit jen jednoho uživatele v jednom příspěvku." - other: "Bohužel, můžete zmínit jen %{count} uživatelů v jednom příspěvku." - too_many_mentions_newuser: - zero: "Bohužel, návštěvníci nemohou zmiňovat ostatní uživatele." - one: "Bohužel, návštěvníci mohou zmínit jen jednoho uživatele v jednom příspěvku." - other: "Bohužel, návštěvníci mohou zmínit jen %{count} uživatelů v jednom příspěvku." - too_many_images: - zero: "Bohužel, návštěvníci nemohou vkládat obrázky do příspěvků." - one: "Bohužel, návštěvníci mohou do jednoho příspěvku vložit jen jeden obrázek." - other: "Bohužel, návštěvníci mohou do jednoho příspěvku vložit maximálně %{count} obrázků." - too_many_attachments: - zero: "Bohužel, noví uživatelé nemohou do příspěvků vkládat přílohy." - one: "Bohužel, noví uživatelé smějí do příspěvku vložit jen jednu přílohu." - other: "Bohužel, noví uživatelé smějí do příspěvku vložit jen %{count} příloh." - too_many_links: - zero: "Bohužel, návštěvníci nemohou vkládat odkazy do příspěvků." - one: "Bohužel, návštěvníci mohou do jednoho příspěvku vložit jen jeden odkaz." - other: "Bohužel, návštěvníci mohou do jednoho příspěvku vložit maximálně %{count} odkazů." spamming_host: "Bohužel, na tento server nemůžete odkazovat." user_is_suspended: "Vyloučení uživatelé nemohou přidávat příspěvky." just_posted_that: "je příliš podobný vašemu příspěvku z poslední doby" @@ -189,9 +189,6 @@ cs: user_profile: bio_raw: "O mně" errors: - messages: - is_invalid: "je neplatné; zkuste se vyjádřit více popisně" - has_already_been_used: "je již použito" models: topic: attributes: @@ -212,6 +209,7 @@ cs: attributes: hex: invalid: "není platná barva" + <<: *errors user_profile: no_info_me: "
" no_info_other: "
" @@ -225,8 +223,6 @@ cs: title: "Vítejte v Redakci" category: topic_prefix: "Definice kategorie pro %{category}" - replace_paragraph: "[Nahraďte tento první odstavec krátkých popisem nové kategorie. Zkuste se vejít do 200 znaků.]" - post_template: "%{replace_paragraph}\\\n\\\nPoužijte toto místo níže pro delší popis a stanovení pravidel diskuze!\n" errors: uncategorized_parent: "„Bez kategorie“ nemůže mít nadřazenou kategorii" self_parent: "Nadřazená kategorie nemůže zároveň být podkategorie" @@ -244,14 +240,9 @@ cs: title: "nový uživatel" basic: title: "základní uživatel" - regular: + member: title: "člen" - leader: - title: "normální" - elder: - title: "vůdce" rate_limiter: - slow_down: "Provedli jste tuhle akci moooockrát, zkuste to později" too_many_requests: "Děláte tuto akci příliš často. Prosím počkejte %{time_left} a zkuste to znovu." hours: one: "1 hodina" @@ -392,15 +383,10 @@ cs: title: 'Nevhodné' long_form: 'nahlášeno jako nevhodné' notify_user: - title: 'Zpráva @{{username}}' - description: 'Tato zpráva obsahuje něco o čem bych s autorem rád mluvil přímo a soukromě. Nevytvoří varování moderátorům.' email_title: 'Váš příspěvek v „%{title}“' email_body: "%{link}\\\n\\\n%{message}\n" notify_moderators: title: "Něco jiného" - description: 'Tento příspěvek vyžaduje pozornost moderátor z důvodů nevypsaných výše.' - long_form: 'nahlášeno moderátorům' - email_title: 'Příspěvek v tématu "%{title}" vyžaduje pozornost moderátora' email_body: "%{link}\\\n\\\n%{message}\n" bookmark: title: 'Záložka' @@ -425,7 +411,6 @@ cs: long_form: 'nahlášeno jako nevhodné' notify_moderators: title: "Něco jiného" - description: 'Toto téma vyžaduje pozornost moderátorů na základě pravidel komunity, pravidel použítí, nebo z jiného výše neuvedeného důvodu.' long_form: 'nahlášeno moderátorům' email_title: 'The topic "%{title}" requires moderator attention' email_body: "%{link}\\\n\\\n%{message}\n" @@ -456,6 +441,8 @@ cs: title: "Noví uživatelé" xaxis: "Den" yaxis: "Počet nových uživatelů" + profile_views: + xaxis: "Den" topics: title: "Témata" xaxis: "Den" @@ -536,6 +523,10 @@ cs: title: "Celkem" xaxis: "Den" yaxis: "Celkem API požadavků" + page_view_logged_in_mobile_reqs: + xaxis: "Den" + page_view_anon_mobile_reqs: + xaxis: "Den" http_background_reqs: title: "Pozadí" xaxis: "Den" @@ -559,6 +550,14 @@ cs: title: "Celkem" xaxis: "Den" yaxis: "Celkem požadavků" + time_to_first_response: + xaxis: "Den" + topics_with_no_response: + xaxis: "Den" + yaxis: "Celkem" + mobile_visits: + xaxis: "Den" + yaxis: "Počet návštěv" dashboard: rails_env_warning: "Váš server běží v módu %{env}." ruby_version_warning: "You are running a version of Ruby 2.0.0 that is known to have problems. Upgrade to patch level 247 or later." @@ -573,34 +572,6 @@ cs: image_magick_warning: 'Server je nakonfigurován, aby vytvářel náhledy velkých obrázků, ale není nainstalován ImageMagick. Nainstalujte ImageMagick pomocí vašeho oblíbeného balíčkovače, nebo navštivte web ImageMagick pro stažení aktuální verze.' contact_email_invalid: "Kontaktní email je neplatný. Prosím, aktualizujte položku contact_email v Nastavení webu." consumer_email_warning: "Váš web je nastaven, aby používal Gmail (nebo jinou uživatelskou emailovou službu) k odesílání emailů. Gmail limituje počet emailů, které můžete odeslat. Zvažte použití jiného emailového poskytovatele, jako je třeba mandrill.com k zajištění doručitelnosti emailů." - content_types: - education_new_reply: - title: "Školení nového uživatele: První odpovědi" - description: "Návod, který se automaticky zobrazí ve vyskakovacím okně nad editorem zpráv, když uživatelé píšou první dvě nové odpovědi." - education_new_topic: - title: "Školení nového uživatele: První témata" - description: "Návod, který se automaticky zobrazí ve vyskakovacím okně nad editorem zpráv, když uživatelé zakládají první dvě nová témata." - usage_tips: - title: "Příručka pro nové uživatele" - welcome_user: - title: "Uvítání: Nový uživatel" - welcome_invite: - title: "Uvítání: Pozvaný uživatel" - login_required_welcome_message: - title: "Vyžadováno přihlášení: Uvítací zpráva" - description: "Uvítací zpráva, která je zobrazena nepřihlášeným uživatelům, je-li zapnuto nastavení 'vyžadovat přihlášení'." - login_required: - title: "Vyžadováno přihlášení: Úvodní stránka" - description: "Text, který se zobrazí nepřihlášených uživatelům na webu, je-li přihlášení vyžadováno." - head: - title: "HTML hlavička" - description: "HTML that will be inserted inside the
tags." - top: - title: "Vršek stránky" - description: "HTML přidané na vršek každé stránky (za hlavičku, ale před navigaci a před název tématu)." - bottom: - title: "Patička stránky" - description: "HTML, které bude přidáno před tag " site_settings: default_locale: "Výchozí jazyk této Discourse instance (kód ve formátu ISO 639-1)" allow_user_locale: "Povolit uživatelům nastavit si jazyk fóra" @@ -737,6 +708,8 @@ cs: subject_template: "Zálohování selhalo." csv_export_succeeded: subject_template: "Exportování dat dokončeno" + csv_export_failed: + subject_template: "Exportování dat selhalo" too_many_spam_flags: subject_template: "Účet zablokován" blocked_by_staff: @@ -763,64 +736,27 @@ cs: unsubscribe: title: "Odhlásit z odběru emailů" description: "Nechcete již od nás dostávat emaily? Žádný problém! Klikněte na odkaz níže pro okamžité odhlášení z odběru emailů:" - reply_by_email: "Pro odpověd stačí odepsat na tento email, nebo navštivte %{base_url}%{url} ve vašem prohlížeči." - visit_link_to_respond: "Pro odpověď navštive %{base_url}%{url} ve vašem prohlížeči." posted_by: "Zaslal uživatel %{username} dne %{post_date}" + user_invited_to_private_message_pm: + subject_template: "[%{site_name}] %{username} Vás pozval do konverzace '%{topic_title}'" user_replied: subject_template: "[%{site_name}] %{username} vás citoval v '%{topic_title}'" - text_body_template: | - %{username} vás citoval v '%{topic_title}' na %{site_name}: - - --- - %{message} - - --- - Prosím navšivte tento odkaz, chcete-li odpovědět: %{base_url}%{url} user_quoted: subject_template: "[%{site_name}] %{username} vás citoval v '%{topic_title}'" - text_body_template: | - %{username} vás citoval v '%{topic_title}' na %{site_name}: - - --- - %{message} - - --- - Prosím navšivte tento odkaz, chcete-li odpovědět: %{base_url}%{url} user_mentioned: subject_template: "[%{site_name}] %{username} vás citoval v '%{topic_title}'" - text_body_template: | - %{username} vás citoval v '%{topic_title}' na %{site_name}: - - --- - %{message} - - --- - Prosím navšivte tento odkaz, chcete-li odpovědět: %{base_url}%{url} user_posted: subject_template: "[%{site_name}] %{username} vás citoval v '%{topic_title}'" - text_body_template: | - %{username} vás citoval v '%{topic_title}' na %{site_name}: - - --- - %{message} - - --- - Prosím navšivte tento odkaz, chcete-li odpovědět: %{base_url}%{url} user_posted_pm: subject_template: "[%{site_name}] [PM] %{topic_title}" - text_body_template: | - %{username} vás citoval v '%{topic_title}' na %{site_name}: - - --- - %{message} - - --- - Prosím navšivte tento odkaz, chcete-li odpovědět: %{base_url}%{url} digest: new_activity: "Nová aktivita ve vašich tématech a příspěvcích:" + top_topics: "Populární příspěvky" + other_new_topics: "Populární témata" click_here: "klikněte zde" from: "souhrn z %{site_name}" read_more: "Číst dále" + more_topics_category: "Více nových témat:" forgot_password: subject_template: "[%{site_name}] Obnovení hesla" text_body_template: | @@ -839,12 +775,8 @@ cs: Click the following link to choose a password: %{base_url}/users/password-reset/%{email_token} - authorize_email: - subject_template: "[%{site_name}] Potvrďte vaši novou emailovou adresu" - text_body_template: | - Potvrďte vaši novou emailovou adresu pro %{site_name} kliknutím na následující odkaz: - - %{base_url}/users/authorize-email/%{email_token} + admin_login: + subject_template: "[%{site_name}] Přihlášení" signup_after_approval: subject_template: "Byli jste schváleni na %{site_name}!" signup: @@ -856,7 +788,6 @@ cs: Pokud tento odkaz nefunguje, zkuste ho zkopírovat a vložit přes schránku do adresního řádku vaše webového prohlížeče. page_not_found: - title: "Stránka, kterou žádáte, na tomto diskuzním fóru neexistuje. Možná vám můžeme pomoci ji najít, nebo poradit jiné téma, které se vám může líbit:" popular_topics: "Populární" recent_topics: "Nedávné" see_more: "Více" @@ -901,3 +832,12 @@ cs: title: "Podmínky používání" privacy_topic: title: "Ochrana soukromí" + admin_login: + success: "E-mail odeslán" + error: "Chyba!" + submit_button: "Odeslat e-mail" + time: + <<: *datetime_formats + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.da.yml b/config/locales/server.da.yml index 042e41c36ff..13389dddef2 100644 --- a/config/locales/server.da.yml +++ b/config/locales/server.da.yml @@ -10,18 +10,24 @@ da: short_date_no_year: "D MMM" short_date: "D MMM, YYYY" long_date: "MMMM D, YYYY h:mma" + datetime_formats: &datetime_formats + formats: + short: "%d-%m--%Y" + short_no_year: "%-d. %B" + date_only: "%-d. %B, %Y" + date: + month_names: [null, Januar, Februar, Marts, April, Maj, Juni, Juli, August, September, Oktober, November, December] + <<: *datetime_formats title: "Discourse" topics: "Emner" posts: "indlæg" loading: "Indlæser" powered_by_html: 'Siden er lavet med Discourse, opleves bedst med JavaScript slået til' log_in: "Log ind" - via: "%{username} via %{site_name}" - is_reserved: "er reservet" purge_reason: "Automatisk slettet som forladt, ikke aktiveret, konto" disable_remote_images_download_reason: "Fjerndownload af billeder deaktiveret grundet utilstrækkelig diskplads" anonymous: "Anonym" - errors: + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "er begrænset til %{max} tegn; du har brugt %{length}." @@ -37,8 +43,10 @@ da: exclusion: er reserveret greater_than: skal være større end %{count} greater_than_or_equal_to: skal være større eller lig med %{count} + has_already_been_used: "er allerede blevet brugt" inclusion: er ikke inkluderet i listen invalid: er ikke gyldig + is_invalid: "er ugyldig; prøv at være mere beskrivende" less_than: skal være mindre end %{count} less_than_or_equal_to: skal være mindre end eller lig med %{count} not_a_number: er ikke et nummer @@ -60,8 +68,18 @@ da: other_than: "skal være andet end %{count}" template: body: 'Der var problemer med følgende felter:' + header: + one: Een fejl forhindrede denne %{model} for at gemme. + other: '%{count} fejl forhindrede denne %{model} i at gemme.' embed: load_from_remote: "Der opstod en fejl ved indlæsningen af dette indlæg." + site_settings: + min_username_length_exists: "Du kan ikke sætte minimumslængden for brugernavne over det korteste eksisterende brugernavn." + min_username_length_range: "Du kan ikke sætte minimum til mere end maksimum." + max_username_length_exists: "Du kan ikke sætte maksimumlængden for brugernavne under det længste eksisterende brugernavn." + max_username_length_range: "Du kan ikke sætte maksimum til mindre end minimum." + default_categories_already_selected: "Du kan ikke vælge en kategori der er brugt i en anden liste." + s3_upload_bucket_is_required: "Du kan ikke oploade til S3 med mindre du har angivet 's3_upload_bucket'." bulk_invite: file_should_be_csv: "Den uploadede fil skal være i .csv eller .txt format." backup: @@ -88,26 +106,6 @@ da: replies: one: "1 svar" other: "%{count} svar" - too_many_mentions: - zero: "Beklager, du kan ikke nævne andre brugere." - one: "Beklager, du kan kun nævne én anden bruger i et indlæg." - other: "Beklager, du kan kun nævne %{count} andre brugere i et indlæg." - too_many_mentions_newuser: - zero: "Beklager, nye brugere kan ikke nævne andre brugere." - one: "Beklager, nye brugere kan kun nævne én anden bruger i et indlæg." - other: "Beklager, nye brugere kan kun nævne %{count} andre brugere i et indlæg." - too_many_images: - zero: "Beklager, nye brugere kan ikke indsætte billeder i indlæg." - one: "Beklager, nye brugere kan kun indsætte ét billede i et indlæg." - other: "Beklager, nye brugere kan kun indsætte %{count} billeder i et indlæg." - too_many_attachments: - zero: "Beklager, nye brugere kan ikke vedhæfte filer til et indlæg." - one: "Beklager, nye brugere kan kun vedhæfte én fil til et indlæg." - other: "Beklager, nye brugere kan kun vedhæfte %{count} filer til et indlæg." - too_many_links: - zero: "Beklager, nye brugere kan ikke indsætte links i indlæg." - one: "Beklager, nye brugere kan kun indsætte ét link i et indlæg." - other: "Beklager, nye brugere kan kun indsætte %{count} links i et indlæg." spamming_host: "Beklager, du kan ikke indsætte et link til det pågældende domæne." user_is_suspended: "Suspenderede brugere tilllades ikke at oprette indlæg." topic_not_found: "Der er gået noget galt. Måske er emnet blevet lukket eller slettet mens du kiggede på det?" @@ -133,6 +131,8 @@ da: posts: "Seneste indlæg" too_late_to_edit: "Dette indlæg er gammelt og kan ikke længere redigeres eller slettes." excerpt_image: "billede" + queue: + delete_reason: "Slettet via køen til moderation af indlæg." groups: errors: can_not_modify_automatic: "Du kan ikke modificere en automatisk gruppe" @@ -163,6 +163,14 @@ da: - Det er godt med kritik, men husk at kritisere *ideer*, ikke personer. For flere tips, [se vores retningslinier](/guidelines). Denne boks dukker kun op for dine første %{education_posts_text}. + avatar: | + ### Hvad med et billede til din konto? + + Du har oprettet et par emner og svar, men dit avatar er ikke så unik som du er -- det er bare et bogstav. + + Har du overvejet at **[gå til din brugerprofil](%{profile_path})** og uploade et billede, der repræsenterer dig? + + Det er lettere at følge diskussioner og finde interessant mennesker i samtaler, hvor alle har en unik avatar! dominating_topic: | ### Lad andre deltage i samtalen @@ -190,9 +198,6 @@ da: user_profile: bio_raw: "Om mig" errors: - messages: - is_invalid: "er ugyldig; prøv at være lidt mere beskrivende" - has_already_been_used: "er allerede blevet brugt" models: topic: attributes: @@ -213,11 +218,13 @@ da: attributes: hex: invalid: "er ikke en gyldig fave" + <<: *errors user_profile: no_info_me: "
" no_info_other: "
" vip_category_name: "Lounge" vip_category_description: "En ekslusiv kategori der kun er tilgængelig for medlemmer med tillidsniveu 3 eller højere." + meta_category_name: "Site Feedback" meta_category_description: "Diskussion om dette site, hvordan det er indrettet, hvordan det virker og hvordan vi kan forbedre det." staff_category_name: "Staff" staff_category_description: "Privat gruppe for staff diskussioner. Emner er kun synlige for administratorer og moderatorer." @@ -225,8 +232,6 @@ da: title: "Velkommen i loungen" category: topic_prefix: "Kategoridefinition for %{category}" - replace_paragraph: "[Erstat det første afsnit med en kort beskrivelse af din nye kategori. Denne tekst vises i området til valg af kategori, så prøv at holde den på under 200 tegn. Indtil du redigerer denne tekst eller opretter emner vil denne kategori ikke optræde på kategorisiden.]" - post_template: "%{replace_paragraph}\n\nBrug de følgende afsnit til en længere beskrivelse samt til at fastlægge retningslinjer eller regler for kategorien.\n\nNogle ting som du kan overveje i svarene nedenfor:\n\n- Hvad er kategorien beregnet til? Hvorfor skal folk vælge denne kategori til deres emne?\n\n- Hvordan er den anderledes end de andre kategorier vi allerede har?\n\n- Har vi behov for denne kategori?\n\n- Skal vi kombinere denne kategori med en anden kategori eller dele den op i flere kategorier?\n" errors: uncategorized_parent: "Ukategoriserede kan ikke have en overordnede kategori" self_parent: "En underkategori kan ikke være sin egen overordnede kategori." @@ -234,21 +239,21 @@ da: cannot_delete: uncategorized: "Kan ikke slette Ukategoriseret" has_subcategories: "Kan ikke slette denne kategori, fordi den har under kategorier." + topic_exists: + one: "Kan ikke slette denne kategori, da den indeholder et emne. Ældste emne er %{topic_link}" + other: "Kan ikke slette denne kategori, da den indeholder %{count} emner. Ældste emne er %{topic_link}" topic_exists_no_oldest: "Kan ikke slette denne kategori fordi antallet af emner er %{count}" trust_levels: newuser: title: "ny bruger" basic: title: "basis-bruger" - regular: - title: "medlem" - leader: - title: "stamgæst" - elder: - title: "leder" rate_limiter: - slow_down: "Du har forsøgt denne handling for ofte, prøv igen senere" + slow_down: "Du har udført denne handling for mange gange, prøv igen senere" too_many_requests: "Vi har en daglig grænse for hvor mange gange den pågældende handling kan udføres. Vent venligst %{time_left} før du prøver igen." + by_type: + create_topic: "Du opretter emner for hurtigt. Vent venligst %{time_left} før du prøver igen." + create_post: "Du svarer for hurtigt. Vent venligst %{time_left} før du prøver igen." hours: one: "1 time" other: "%{count} timer" @@ -330,6 +335,7 @@ da: one: "næsten 1 år siden" other: "næsten %{count} år siden" password_reset: + no_token: "Beklager, dit kodeords-reset link er udløbet. Vælg 'Log ind' knappen og brug 'Jeg har glemt mit kodeord' for at få et nyt link." choose_new: "Vælg et nyt kodeord" choose: "Vælg et kodeord" update: 'opdatér kodeord' @@ -343,11 +349,13 @@ da: please_continue: "Fortsæt til %{site_name}" error: "Der opstod en fejl under opdateringen af din e-mail-adresse. Måske er adressen allerede i brug?" activation: + action: "Klik her for at aktivere din konto" already_done: "Beklager, dette bekræftelses-link er ikke længere gyldigt. Måske er din konto allerede aktiv?" please_continue: "Din nye konto er bekræftet; du bliver nu ledt til forsiden." continue_button: "Fortsæt til %{site_name}" welcome_to: "Velkommen til %{site_name}!" approval_required: "En moderator skal godkende din nye konto før du kan tilgå forummet. Du får en e-mail, når din konto er godkendt!" + missing_session: "Vi kan ikke se, om din konto blev oprettet, se venligst om du har aktiveret cookies." post_action_types: off_topic: title: 'Uden for emnet' @@ -364,13 +372,11 @@ da: description: 'Dette indlæg har indhold som en rimelig person ville opfatte som stødende, udtryk for misbrug eller som et brud på vores sammenholds retningslinjer.' long_form: 'markerede dette som stødende' notify_user: - description: 'Dette indlæg indeholder noget jeg gerne vil drøfte direkte og privat med vedkommende, Bliver ikke markeret.' + long_form: 'sendt besked til brugeren' email_title: 'Dit indlæg i "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: title: "Noget andet" - description: 'Dette indlæg kræver moderatorernes opmærksomhed baseret på en anden grund som ikke er nævnt ovenfor.' - email_title: 'Et indlæg i "%{title}" kræver moderatorernes opmærksomhed' email_body: "%{link}\n\n%{message}" bookmark: title: 'Bogmærk' @@ -394,12 +400,17 @@ da: long_form: 'markeret upassende' notify_moderators: title: "Noget andet" + long_form: 'markerede dette til gennemsyn' email_title: 'Emnet "%{title}" kræver moderator-opmærksomhed' email_body: "%{link}\n\n%{message}" + flagging: + you_must_edit: '
Dit indlæg er blevet markeret af fællesskabet. Se dine beskeder.
' + user_must_edit: '
Dette indlæg er blevet markert af fællesskabet, og er midlertidigt skjult.
' archetypes: regular: title: "Almindeligt emne" banner: + title: "Banneremne" message: make: "Dette emne er nu et banner-emne. Det optræder i toppen af alle sider indtil brugeren fjerner det." remove: "Dette emne er ikke mere et banner-emne. Det optræder ikke længere i toppen af alle sider." @@ -424,6 +435,10 @@ da: title: "Nye brugere" xaxis: "Dag" yaxis: "Antal nye brugere" + profile_views: + title: "Bruger Profil Visninger" + xaxis: "Dag" + yaxis: "Antag sete brugerprofiler" topics: title: "Emner" xaxis: "Dag" @@ -494,18 +509,27 @@ da: page_view_anon_reqs: title: "Anonym" xaxis: "Dag" + yaxis: "Anonyme API-Forespørgsler" page_view_logged_in_reqs: title: "Logget ind" xaxis: "Dag" + yaxis: "Indloggede API-forespørgsler" page_view_crawler_reqs: + title: "Web Crawlers" xaxis: "Dag" + yaxis: "Web Crawler API-forespørgsler" page_view_total_reqs: title: "Total" xaxis: "Dag" + yaxis: "Totale API-forespørgsler" page_view_logged_in_mobile_reqs: + title: "Indloggede API-forespørgsler" xaxis: "Dag" + yaxis: "Mobile indloggede API-forespørgsler" page_view_anon_mobile_reqs: + title: "Anonyme API-forespørgsler" xaxis: "Dag" + yaxis: "Mobile anonyme API-forepørgsler" http_background_reqs: title: "Baggrund" xaxis: "Dag" @@ -527,7 +551,9 @@ da: xaxis: "Dag" yaxis: "Total" mobile_visits: + title: "Brugerbesøg" xaxis: "Dag" + yaxis: "Antal besøg" dashboard: rails_env_warning: "Din server kører i %{env}-tilstand." ruby_version_warning: "Du kører en version af Ruby 2.0.0 som har kendte problemer. Opgradér til patch-level 247 eller senere." @@ -541,34 +567,6 @@ da: s3_config_warning: 'Serveren er konfigureret til at uploade filer til s3, men mindst én af følgende indstillinger er ikke angivet: s3_access_key_id, s3_secret_access_key eller s3_upload_bucket. Gå til indstillinger og opdatér indstillingerne. Se "How to set up image uploads to S3?" for mere information.' image_magick_warning: 'Serveren er konfigureret til at lave thumbnails af store billeder, men ImageMagick er ikke installeret. Installér ImageMagick med din foretrukne package manager eller download den seneste udgave.' consumer_email_warning: "Dit site er konfigureret til at bruge Gmail (eller en anden offentlig e-mail-tjeneste) til at sende e-mail. Gmail har en grænse for, hvor mange mails du kan sende. Overvej at bruge en e-mail-udbyder som mandrill.com for at sikre at din mail bliver leveret." - content_types: - education_new_reply: - title: "Uddannelse af nye brugere: Første svar" - description: "Automatisk hjælp som vises over editoren når nye brugere begynder at skrive deres første to svar." - education_new_topic: - title: "Uddannelse af nye brugere: Første emner" - description: "Automatisk hjælp som vises over editoren når nye brugere begynder at skrive deres første to emner." - usage_tips: - title: "Tips til nye brugere" - description: "Vejledning og vigtig information til nye brugere." - welcome_user: - title: "Velkomst: Ny bruger" - welcome_invite: - title: "Velkomst: Inviteret bruger" - login_required_welcome_message: - title: "Log ind påkrævet: Velkomstbesked" - description: "Velkomstbesked som vises til anonyme brugere når indstillingen 'log ind påkrævet' er aktiveret." - login_required: - title: "Log ind påkrævet: Hjemmeside" - description: "Teksten som vises til anonyme brugere når login er påkrævet på sitet." - head: - title: "HTML head" - description: "HTML som indsættes i
-tags" - top: - title: "Toppen af siderne" - description: "HTML som vises i toppen af alle sider (efter headeren, før navgationen eller emnetitlen)" - bottom: - title: "Bunden af siderne" site_settings: default_locale: "Standardsproget for denne Discourse-instans (ISO 639-1 kode)." min_post_length: "Minimumlængde tilladt for indlæg i tegn" @@ -608,11 +606,16 @@ da: github_client_secret: "Client secret til Github-login, oprettes på at https://github.com/settings/applications." active_user_rate_limit_secs: "Hvor ofte vi opdaterer feltet 'last_seen_at', i sekunder." previous_visit_timeout_hours: "Hvor lang tid et besøg varer før vi regner det med i det 'forrige' besøg, i timer." + max_likes_per_day: "Maksimalt antal likes per bruger per dag." clean_orphan_uploads_grace_period_hours: "Grace-periode (i timer) før et forældreløst upload bliver fjernet." purge_deleted_uploads_grace_period_days: "Grace-periode (i dage) før et slettet upload bliver fjernet." + tl2_requires_likes_received: "Hvor mange likes en bruger skal modtage inden forfremmelse til tillidsniveau 2." + tl2_requires_likes_given: "Hvor mange likes en bruger skal give inden forfremmelse til tillidsniveau 2." min_trust_to_create_topic: "Det mindste tillidsniveau der skal til for at oprette et nyt emne." title_fancy_entities: "Omdan almindelige ASCII-tegn i emnetitler til fancy HTML-entities, i stil med SmartyPants http://daringfireball.net/projects/smartypants/" title_prettify: "Undgå hyppige tastefejl i titlen, inklusive overforbrug af store bogstaver, første bogstav med småt, gentagne ! og ?, ekstra . i slutningen, etc." + topic_post_like_heat_low: "Når forholdet likes:indlæg overstiger dette tal, bliver antal indlæg let fremhævet." + topic_post_like_heat_medium: "Når forholdet likes:indlæg overstiger dette tal, bliver antal indlæg moderat fremhævet." faq_url: "Hvis du hoster en FAQ et andet sted kan du indtaste den fulde URL her." tos_url: "Hvis du hoster dine forretningsbetingelser et andet sted kan du indtaste den fulde URL her." privacy_policy_url: "Hvis du hoster din privatlivspolitik et andet sted kan du indtaste den fulde URL her." @@ -624,6 +627,21 @@ da: enable_mobile_theme: "Mobile enheder bruger et mobilvenligt tema, med mulighed for at skifte til det fulde site. Deaktivér dette hvis du ønsker at anvende et brugerdefineret stylesheet som er fuldstændigt responsivt." short_progress_text_threshold: "Når antallet af indlæg overstiger dette tal viser statuslinjen kun det aktuelle indlægsnummer. Hvis du ændrer bredden af statuslinjen kan det være nødvendigt at opdatere denne værdi." default_code_lang: "Standard syntax highlighting som bruges i GitHub kodeblokke (lang-auto, ruby, python etc.)." + default_email_digest_frequency: "Hvor ofte brugerne som standard modtager e-mail-sammendrag. " + default_email_private_messages: "Send som standard en email når nogen sender brugeren en besked." + default_email_direct: "Send som standard en email når nogen citerer/svarer/nævner/inviterer brugeren." + default_email_mailing_list_mode: "Send som standard en email for hvert nyt indlæg." + default_email_always: "Send som standard en email-notifikation selv hvis brugeren er aktiv." + default_other_new_topic_duration_minutes: "Global standardkriterium for hvornår et emne regnes for nyt." + default_other_auto_track_topics_after_msecs: "Globalt standardtidsrum før et emne automatisk spores. " + default_other_external_links_in_new_tab: "Åbn som standard links på et nyt faneblad." + default_other_enable_quoting: "Slå som standard \"svar på den markerede tekst\" til." + default_other_dynamic_favicon: "Vis som standard nyt / opdateret emnetal på browserikon" + default_other_disable_jump_reply: "Spring ikke som standard til det nye indlæg efter brugeren har svaret" + default_other_edit_history_public: "Offentliggør som standard rettelser til indlæg." + default_categories_watching: "Liste over kategorier der som standard overvåges." + default_categories_tracking: "Liste over kategorier der som standard følges." + default_categories_muted: "Liste over kategorier der som standard ignoreres." notification_types: mentioned: "%{display_username} nævnte dig i %{link}" liked: "%{display_username} synes om dit indlæg i %{link}" @@ -642,6 +660,8 @@ da: most_posts: "Flest indlæg" most_recent_poster: "Seneste forfatter" frequent_poster: "Hyppig forfatter" + redirected_to_top_reasons: + new_user: "Velkommen til fællesskabet! Dette er de seneste mest populære emner." topic_statuses: archived_enabled: "Dette emne er nu arkiveret. Det er frosset fast og kan ikke ændres på nogen måde." archived_disabled: "Dette emne er nu ikke længere arkiveret. Det er ikke længere frosset fast, og kan ændres." @@ -676,8 +696,6 @@ da: subject_template: "[%{site_name}] test af e-mail-udsendelse" new_version_mailer_with_notes: subject_template: "[%{site_name}] Opdateringer er tilgængelige" - flags_reminder: - post_number: "indlæg" system_messages: post_hidden: subject_template: "Indlæg skjult på grund af feedback fra brugerne" @@ -705,61 +723,29 @@ da: Der er nye brugere, som afventer godkendelse (eller afvisning) før de kan tilgå dette forum. [Gennemgå dem venligst på administrationssiden](%{base_url}/admin/users/list/pending). + download_remote_images_disabled: + subject_template: "Download af eksterne billeder er slået fra" + text_body_template: "Indstillingen `download_remote_images_to_local` blev slået fra fordi grænsen for bug af diskplads i `download_remote_images_threshold` blev nået." + subject_re: "Re:" user_notifications: previous_discussion: "Forrige svar" unsubscribe: title: "Frameld" description: "Ønsker du ikke at modtage disse e-mails? Intet problem! Klik herunder for at framelde med det samme:" - reply_by_email: "For at svare kan du svare på denne e-mail eller gå til %{base_url}%{url} i din browser." - visit_link_to_respond: "For at svare kan du gå til %{base_url}%{url} i din browser." posted_by: "Oprettet af %{username} den %{post_date}" user_replied: subject_template: "[%{site_name}] %{username} svarede på dit indlæg i emnet '%{topic_title}'" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_quoted: subject_template: "[%{site_name}] %{username} citerede dig i emnet '%{topic_title}'" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_mentioned: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_posted: subject_template: "[%{site_name}] %{subject_prefix}%{username} skrev et indlæg i emnet '%{topic_title}'" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_posted_pm: subject_template: "[%{site_name}] [PM] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} digest: why: "Et kort resume af %{site_link} siden dit sidste besøg %{last_seen_at}" + subject_template: "Sammenfatning af [%{site_name}]" new_activity: "Ny aktivitet på dine emner og indlæg:" top_topics: "Populære emner" other_new_topics: "Populære emner" @@ -767,6 +753,7 @@ da: click_here: "klik her" from: "%{site_name} opsummering" read_more: "Læs mere" + more_topics_category: "Flere nye emner: " forgot_password: subject_template: "[%{site_name}] Nulstil kodeord" text_body_template: | @@ -786,15 +773,12 @@ da: Klik på følgende for at vælge et kodeord.: %{base_url}/users/password-reset/%{email_token} - authorize_email: - subject_template: "[%{site_name}] Bekræft din nye e-mail-adresse" - text_body_template: | - Bekræft din nye e-mail-adresse på %{site_name} ved at klikke på følgende link: - - %{base_url}/users/authorize-email/%{email_token} + account_created: + subject_template: "[%{site_name}] Din nye konto" signup_after_approval: subject_template: "Du er blevet godkendt på %{site_name}!" signup: + subject_template: "[%{site_name}] Bekræft din nye konto" text_body_template: | Velkommen til %{site_name}! @@ -803,23 +787,38 @@ da: Hvis linket ikke virker, så prøv at kopiere hele linket ind i adressefeltet på din web browser. page_not_found: - title: "Den side du efterspurgte findes ikke. Måske kan vi hjælpe dig med at finde den, eller et andet lignende emne:" popular_topics: "Populære" recent_topics: "Nye" see_more: "Flere" search_title: "Søg på denne side" search_google: "Google" + terms_of_service: + title: "Vilkår" + signup_form_message: 'Jeg har læst og accepterer vilkårene.' deleted: 'slettet' upload: unauthorized: "Beklager, filen, som du forsøger at uploade er ikke autoriseret (autoriserede filendelser: %{authorized_extensions})." pasted_image_filename: "Indsat billede" + file_missing: "Du skal angive en fil til overførsel." + attachments: + too_large: "Beklager, men den fil du prøver at overføre er for stor (maksimumstørelsen er %{max_size_kb}KB)" images: + too_large: "Beklager, men billedet som du forsøger at uploade er for stort (den maksimale størrelse er %{max_size_kb}KB). Gør det venligst mindre og prøv igen." size_not_found: "Beklager, men vi kunne ikke fastslå billedets størrelse. Måske er dit billede ødelagt?" flag_reason: sockpuppet: "En ny bruger oprettede et emne, og en anden ny bruger med den samme IP-adresse svarede på det. Se indstillingen af flag_sockpuppets." email_log: anonymous_user: "Brugeren er anonym" seen_recently: "Bruger har været logget på for nyligt" + post_not_found: "Kan ikke finde et indlæg med id %{post_id}" + notification_already_read: "Den notifikation som denne email handler om er allerede læst" + post_deleted: "indlægget er blevet slettet af forfatteren" + user_suspended: "brugeren blev suspenderet" + already_read: "brugeren har allerede læst dette indlæg" + message_blank: "beskeden er tom" + message_to_blank: "message.to er tom" + text_part_body_blank: "text_part.body er tom" + body_blank: "brødtekst er tom" about: "Om" guidelines: "Retningslinjer" privacy: "Privatliv" @@ -827,10 +826,60 @@ da: csv_export: boolean_yes: "Ja" boolean_no: "Nej" + static_topic_first_reply: | + Rediger det første indlæg i dette emne for at ændre indholdet af siden %{page_name} guidelines_topic: title: "FAQ/Retningslinjer" + tos_topic: + title: "Vilkår" + badges: + editor: + name: Redaktør + description: Rettet første indlæg + basic_user: + name: Basis + member: + name: Medlem + regular: + name: Regulær + leader: + name: Leder + welcome: + name: Velkommen + description: Modtog et like + autobiographer: + name: Selvbiograf + anniversary: + name: Jubilæum + nice_post: + name: Fint svar + description: Modtog 10 likes på et svar + good_post: + name: Godt svar + great_post: + name: Rigtigt godt svar + nice_topic: + name: Fint emne + good_topic: + name: Godt emne + admired: + name: Beundret + crazy_in_love: + name: Vildt forelsket + thank_you: + name: Tak + gives_back: + name: Giver tilbage + empathetic: + name: Empatisk + description: Har 500 likede indlæg og givet 1000 likes admin_login: success: "Email sendt" error: "Fejl!" email_input: "Admin email" submit_button: "Send email" + time: + <<: *datetime_formats + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index bbd860d3490..f27f9348958 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -10,18 +10,41 @@ de: short_date_no_year: "DD. MMM" short_date: "DD. MMM YYYY" long_date: "DD. MMMM YYYY, H:mm" + datetime_formats: &datetime_formats + formats: + short: "%d.%m.%Y" + short_no_year: "%-d. %B" + date_only: "%-d. %B %Y" + date: + month_names: [null, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] + <<: *datetime_formats title: "Discourse" topics: "Themen" posts: "Beiträge" loading: "Wird geladen" powered_by_html: 'Basiert auf Discourse, funktioniert am besten mit aktiviertem JavaScript' log_in: "Anmelden" - via: "%{username} via %{site_name}" - is_reserved: "ist reserviert" purge_reason: "Stillgelegtes, nicht aktives Konto wurde automatisch gelöscht." disable_remote_images_download_reason: "Der Download von Bildern wurde deaktiviert, weil nicht mehr genug Plattenplatz vorhanden war." anonymous: "Anonym" - errors: + emails: + incoming: + default_subject: "Eingehende E-Mail von %{email}" + show_trimmed_content: "Zeige gekürzten Inhalt" + errors: + empty_email_error: "Passiert wenn die empfangene E-Mail leer war." + no_message_id_error: "Passiert wenn in der E-Mail die Kopfzeile 'Message-Id' fehlt." + auto_generated_email_error: "Passiert wenn die Kopfzeile 'precedence' folgendes enthält: list, junk, bulk oder auto_reply, oder eine der anderen Kopfzeilen enthält: auto-submitted, auto-replied oder auto-generated." + no_body_detected_error: "Passiert wenn kein Inhalt extrahiert werden konnte und keine Anhänge vorhanden waren." + inactive_user_error: "Passiert wenn der Sender nicht aktiv ist." + blocked_user_error: "Passiert wenn der Sender geblockt wurde." + bad_destination_address: "Passiert wenn keine der E-Mail Adressen in den Feldern To/Cc/Bcc zu einer konfigurierten eingehenden E-Mail Adresse passt." + strangers_not_allowed_error: "Passiert wenn ein Nutzer versuchte ein neues Thema in einer Kategorie ohne Mitgliedschaft zu erstellen." + insufficient_trust_level_error: "Passiert wenn ein Nutzer versuchte ein neues Thema in einer Kategorie zu erstellen, ohne die erforderliche Vertrauensstufe dafür zu haben." + reply_user_not_matching_error: "Passiert wenn die Adresse der Antwort E-Mail von der Adresse abweicht, an die gesendet wurde." + topic_not_found_error: "Passiert wenn eine Antwort eintraf aber das verbundene Thema gelöscht wurde." + topic_closed_error: "Passiert wenn eine Antwort eintraf aber das verbundene Thema geschlossen wurde." + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "darf höchstens %{max} Zeichen lang sein; du hast %{length} eingegeben." @@ -37,8 +60,10 @@ de: exclusion: ist reserviert greater_than: muss größer als %{count} sein greater_than_or_equal_to: muss größer oder gleich %{count} sein + has_already_been_used: "wird bereits verwendet" inclusion: ist nicht in der Liste enthalten invalid: ist ungültig + is_invalid: "ist ungültig; bitte sei ein wenig deutlicher" less_than: muss weniger als %{count} sein less_than_or_equal_to: muss weniger oder gleich %{count} sein not_a_number: ist keine Zahl @@ -69,6 +94,9 @@ de: min_username_length_exists: "Die minimale Länge für den Benutzernamen kann nicht höher sein als der kürzeste Benutzername." min_username_length_range: "Du kannst das Minimum nicht höher setzen als das Maximum." max_username_length_exists: "Die maximale Länge für den Benutzernamen kann nicht kürzer sein als der längste Benutzername." + max_username_length_range: "Das Maximum darf nicht kleiner als das Minimum sein." + default_categories_already_selected: "Du kannst keine Kategorie auswählen, welche bereits in einer anderen Liste benutzt wird. " + s3_upload_bucket_is_required: "Uploads auf Amazon S3 können nicht aktiviert werden, bevor der 's3_upload_bucket' eingetragen wurde." bulk_invite: file_should_be_csv: "Die hochgeladene Datei sollte im CSV oder TXT Format vorliegen." backup: @@ -79,6 +107,8 @@ de: not_found: "Die angeforderte URL oder Ressource konnte nicht gefunden werden." invalid_access: "Du hast nicht die Erlaubnis, die angeforderte Ressource zu betrachten." read_only_mode_enabled: "Die Seite befindet sich im Nur-Lesen Modus. Änderungen sind deaktiviert." + reading_time: "Lesezeit" + likes: "Likes" too_many_replies: one: "Entschuldigung, aber neue Benutzer sind vorübergehend auf eine Antwort pro Thema beschränkt." other: "Entschuldigung, aber neue Benutzer sind vorübergehend auf %{count} Antworten pro Thema beschränkt." @@ -95,33 +125,33 @@ de: replies: one: "1 Antwort" other: "%{count} Antworten" + no_mentions_allowed: "Entschuldigung, du kannst keine Benutzer erwähnen." too_many_mentions: - zero: "Entschuldigung, du kannst keine anderen Nutzer erwähnen." - one: "Entschuldigung, du kannst nur einen anderen Nutzer in Deinem Beitrag erwähnen." - other: "Entschuldigung, du kannst nur %{count} Nutzer in einem Beitrag erwähnen." + one: "Entschuldigung, du kannst nur einen anderen Benutzer in einem Beitrag erwähnen." + other: "Entschuldigung, du kannst nur %{count} Benutzer in einem Beitrag erwähnen." + no_mentions_allowed_newuser: "Entschuldigung, neue Benutzer können andere Nutzer nicht erwähnen." too_many_mentions_newuser: - zero: "Entschuldigung, neue Benutzer können andere Nutzer nicht erwähnen." - one: "Entschuldige, neue Benutzer können nur einen anderen Nutzer in einem Beitrag erwähnen." - other: "Entschuldige, neue Benutzer können nur %{count} Nutzer in einem Beitrag erwähnen." + one: "Entschuldige, neue Benutzer können nur einen anderen Benutzer in einem Beitrag erwähnen." + other: "Entschuldige, neue Benutzer können nur %{count} Benutzer in einem Beitrag erwähnen." + no_images_allowed: "Entschuldige, neue Benutzer können Beiträgen keine Bilder hinzufügen." too_many_images: - zero: "Entschuldige, neue Benutzer können Beiträgen keine Bilder hinzufügen." one: "Entschuldige, neue Benutzer können Beiträgen höchstens ein Bild hinzufügen." other: "Entschuldige, neue Benutzer können Beiträgen höchstens %{count} Bilder hinzufügen." + no_attachments_allowed: "Entschuldige, neue Benutzer können Beiträgen keine Dateien hinzufügen." too_many_attachments: - zero: "Entschuldige, neue Benutzer können Beiträgen keine Dateien hinzufügen." one: "Entschuldige, neue Benutzer können Beiträgen höchstens eine Datei hinzufügen." other: "Entschuldige, neue Benutzer können Beiträgen höchstens %{count} Dateien hinzufügen." + no_links_allowed: "Entschuldige, neue Benutzer können Beiträgen keine Links hinzufügen." too_many_links: - zero: "Entschuldige, neue Benutzer können Beiträgen keine Links hinzufügen." one: "Entschuldige, neue Benutzer können Beiträgen höchstens einen Link hinzufügen." other: "Entschuldige, neue Benutzer können Beiträgen höchstens %{count} Links hinzufügen." spamming_host: "Entschuldigung, du kannst keine Links zu diesem Webserver posten." user_is_suspended: "Gesperrte Benutzer dürfen keine Beiträge schreiben." topic_not_found: "Etwas ist schief gelaufen. Wurde das Thema eventuell geschlossen oder gelöscht, während du es angeschaut hast?" just_posted_that: "ist einer einer vor Kurzem von dir geschriebenen Nachricht zu ähnlich" - has_already_been_used: "wird bereits verwendet" + has_already_been_used: "wurde bereits verwendet" invalid_characters: "enthält ungültige Zeichen" - is_invalid: "ist ungültig; bitte ein wenig anschaulicher" + is_invalid: "ist ungültig; bitte sei ein wenig deutlicher" next_page: "nächste Seite →" prev_page: "← vorherige Seite" page_num: "Seite %{num}" @@ -137,8 +167,13 @@ de: rss_description: latest: "Aktuelle Themen" hot: "Beliebte Themen" + top: "Die besten Themen" posts: "Letzte Beiträge" + private_posts: "Neueste private Nachricht" + group_posts: "Letzte Beiträge von %(Gruppen_name)" + group_mentions: "Neueste Nennungen von %{group_name}" too_late_to_edit: "Dieser Beitrag wurde vor zu langer Zeit erstellt. Er kann nicht mehr bearbeitet oder gelöscht werden." + revert_version_same: "Die aktuelle Version entspricht der Version, zu der du zurückkehren möchtest." excerpt_image: "Bild" queue: delete_reason: "Aus der Moderations-Warteschlange für Beiträge gelöscht" @@ -146,6 +181,10 @@ de: errors: can_not_modify_automatic: "Du kannst eine automatisch verwaltete Gruppe nicht verändern." member_already_exist: "'%{username}' ist bereits Mitglied dieser Gruppe." + invalid_domain: "'%{domain}' ist keine gültige Domain." + invalid_incoming_email: "'%{email}' ist keine gültige E-Mail Adresse." + email_already_used_in_group: "'%{email}' wird bereits von der Gruppe '%{group_name}' verwendet." + email_already_used_in_category: "'%{email}' wird bereits von der Kategorie '%{category_name}' verwendet." default_names: everyone: "jeder" admins: "admins" @@ -169,7 +208,7 @@ de: - Verwende gebräuchliche, gut definierte Wörter, damit dein Thema *gefunden* werden kann. Wähle eine Kategorie, um es mit ähnlichen Themen zu gruppieren. - Für mehr Tips, [siehe unsere Community-Richtlinien](/guidelines). Dieses Panel wird nur bei deinen ersten %{education_posts_text} angezeigt. + Mehr Tipps findest du in [unseren Community-Richtlinien](/guidelines). Dieses Panel wird nur bei deinen ersten %{education_posts_text} angezeigt. new-reply: | Willkommen bei %{site_name} — **Danke für deinen Beitrag zum Thema!** @@ -180,6 +219,14 @@ de: - Kritik ist in Ordnung, aber bitte kritisiere nur *Ideen*, nicht Menschen. Beachte bitte auch [unsere Richtlinien](/guidelines). Dieser Hilfetext wird nur bei deinen ersten %{education_posts_text} Beiträgen angezeigt. + avatar: | + ### Wie wäre es mit einem Bild für Deinen Account? + + Du hast schon einige Themen und Antworten geschrieben, aber Dein Profilbild ist nicht so einzigartig, wie Du es bist -- es ist nur ein Buchstabe. + + Vielleicht schaust Du mal in **[Dein Benutzerprofil](%{profile_path})** und lädst dort ein Bild hoch, das etwas über Dich aussagt? + + Es ist einfacher, Diskussionen zu folgen und interessante Leute zu finden, wenn jeder ein eindeutiges Profilbild hat! sequential_replies: | ### Bitte antworte mehreren Beiträge gleichzeitig @@ -215,9 +262,6 @@ de: user_profile: bio_raw: "Über mich" errors: - messages: - is_invalid: "ist ungültig; versuche ein wenig mehr zu erklären" - has_already_been_used: "wird bereits verwendet" models: topic: attributes: @@ -238,6 +282,7 @@ de: attributes: hex: invalid: "ist keine gültige Farbe" + <<: *errors user_profile: no_info_me: "
" no_info_other: "
" @@ -253,13 +298,15 @@ de: body: "\nGratuliere! :confetti_ball:\n\nWenn du dieses Thema sehen kannst, wurdest du vor Kurzem zum **Stammgast** (Vertrauensstufe 3) befördert.\n \nDu kannst nun …\n\n* den Titel eines jeden Themas ändern\n* Themen in andere Kategorien verschieben\n* Links veröffentlichen, die von Suchmaschinen weiterverfolgt werden (das automatische [nofollow](http://de.wikipedia.org/wiki/Nofollow) wird entfernt)\n* auf die private Lounge-Kategorie zugreifen, die für Benutzer mit Vertrauensstufe 3 oder höher sichtbar ist\n\nHier ist die [aktuelle Liste aller Stammgäste](/badges/3/regular). Vergiss nicht, hallo zu sagen!\n\nVielen Dank dafür, dass du ein wichtiger Teil dieser Community bist!\n\n(Wenn du mehr über Vertrauensstufen wissen möchtest, kannst du [dieses Thema lesen][trust]. Beachte bitte, dass nur jene Mitglieder Stammgäste bleiben, die auch im Laufe der Zeit die Anforderungen erfüllen.)\n\n[trust]: https://meta.discourse.org/t/what-do-user-trust-levels-do/4924\n" category: topic_prefix: "Über die Kategorie %{category}" - replace_paragraph: "[Ersetze den ersten Absatz mit einer kurzen Beschreibung deiner neuen Kategorie. Bitte benutze weniger als 200 Zeichen.]" - post_template: "%{replace_paragraph}\n\nBenutze den folgenden Platz für eine ausführliche Beschreibung sowie für Regeln und zur Diskussion!" + replace_paragraph: "(Ersetze diesen ersten Absatz mit einer kurzen Beschreibung deiner neuen Kategorie. Diese Richtlinie wird in der Kategorienauswahl angezeigt, versuche also weniger als 200 Zeichen zu benutzen. **Bis du diese Beschreibung geändert oder Themen angelegt hast, wird diese Kategorie nicht auf der Kategorie-Seite angezeigt.**)" + post_template: "%{replace_paragraph}\n\nBenutze die folgenden Abschnitte für eine ausführlichere Beschreibung oder um Richtlinien oder Regeln für diese Kategorie festzulegen:\n\n- Warum sollten Benutzer diese Kategorie nutzen? Wofür ist sie gedacht?\n\n- Wie genau unterscheidet sie sich von den Kategorien, die es bereits gibt?\n\n- Welche Themen sollte diese Kategorie im Allgemeinen beinhalten?\n\n- Brauchen wir diese Kategorie? Können wie sie mit einer anderen Kategorie oder Unter-Kategorie zusammenführen?\n" errors: uncategorized_parent: "Die \"unkategorisiert\" Kategorie kann keine Elternkategorie haben." self_parent: "Eine Kategorie kann nicht sich selbst untergeordnet werden." depth: "Unterkategorien können nicht ineinander verschachtelt werden." - email_in_already_exist: "Die E-Mail-Adresse '%{email_in}' für eingehende Themen wird bereits von der Kategorie '%{category_name}' verwendet." + invalid_email_in: "'%{email}' ist keine gültige E-Mail Adresse." + email_already_used_in_group: "'%{email}' wird bereits von der Gruppe '%{group_name}' verwendet." + email_already_used_in_category: "'%{email}' wird bereits von der Kategorie '%{category_name}' verwendet." cannot_delete: uncategorized: "Die \"unkategorisiert\" Kategorie kann nicht gelöscht werden." has_subcategories: "Diese Kategorie kann nicht gelöscht werden, weil sie Unterkategorien besitzt." @@ -267,21 +314,36 @@ de: one: "Diese Kategorie kann nicht gelöscht werden, weil sie ein Thema enthält. Das Thema ist %{topic_link}." other: "Diese Kategorie kann nicht gelöscht werden, weil sie %{count} Themen enthält. Das älteste Thema ist %{topic_link}." topic_exists_no_oldest: "Diese Kategorie kann nicht gelöscht werden, weil sie #{category.topic_count} Themen enthält." + uncategorized_description: "Themen welche keine Kategorie benötigen oder in keine existierende Kategorie passen." trust_levels: newuser: title: "Neuer Benutzer" basic: title: "Anwärter" - regular: + member: title: "Mitglied" - leader: + regular: title: "Stammgast" - elder: + leader: title: "Anführer" change_failed_explanation: "Du wolltest %{user_name} auf '%{new_trust_level}' zurückstufen. Die Vertrauensstufe ist jedoch bereits '%{current_trust_level}'. %{user_name} verbleibt auf '%{current_trust_level}'. Wenn du den Benutzer zurückstufen möchtest, musst du zuerst seine Vertrauensstufe sperren." rate_limiter: - slow_down: "Du hast diese Aktion zu oft durchgeführt. Versuch es später wieder. " + slow_down: "Du hast diese Aktion zu oft durchgeführt. Versuche es später wieder." too_many_requests: "Diese Aktion kann nur ein begrenztes Mal pro Tag durchgeführt werden. Bitte warte %{time_left} bis zum nächsten Versuch." + by_type: + first_day_replies_per_day: "Du hast die maximale Anzahl an Antworten erreicht, die ein neuer Benutzer am ersten Tag erstellen kann. Bitte warte %{time_left}, bis Du es wieder versuchst." + first_day_topics_per_day: "Du hast die maximale Anzahl an Themen erreicht, die ein neuer Benutzer am ersten Tag erstellen kann. Bitte warte %{time_left}, bis Du es wieder versuchst." + create_topic: "Du erstellst zu schnell zu viele Themen hintereinander. Bitte warte %{time_left}, bis Du es wieder versuchst." + create_post: "Du antwortest zu schnell. Bitte warte %{time_left}, bis Du es wieder versuchst." + delete_post: "Du löschst zu schnell Beiträge. Bitte warte %{time_left}, bis Du es wieder versuchst." + topics_per_day: "Du hast die maximale Anzahl an neuen Themen für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + pms_per_day: "Du hast die maximale Anzahl an Nachrichten für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + create_like: "Du hast die maximale Anzahl „Gefällt mir“ für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + create_bookmark: "Du hast die maximale Anzahl an Lesezeichen für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + edit_post: "Du hast die maximale Anzahl an Änderungen für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + live_post_counts: "Du forderst die Live-Anzahl der Antworten zu schnell an. Bitte warte %{time_left}, bis Du es wieder versuchst." + unsubscribe_via_email: "Du hast die maximale Anzahl an Abbestell-E-Mails für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + topic_invitations_per_day: "Du hast die maximale Zahl an neuen Thema-Einladungen für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." hours: one: "1 Stunde" other: "%{count} Stunden" @@ -363,19 +425,26 @@ de: one: "vor fast einem Jahr" other: "vor fast %{count} Jahren" password_reset: + no_token: "Entschuldige, aber der Link zum Zurücksetzen des Passworts ist zu alt. Wähle 'Ich habe mein Passwort vergessen' um einen neuen Link zu erhalten." choose_new: "Bitte wähle ein neues Passwort" choose: "Bitte wähle ein Passwort" update: 'Passwort aktualisieren' save: 'Passwort festlegen' title: 'Passwort zurücksetzen' - success: "Dein Passwort wurde erfolgreich geändert, du bist nun angemeldet." - success_unapproved: "Dein Passwort wurde erfolgreich verändert." + success: "Dein Passwort wurde erfolgreich geändert, und du bist nun angemeldet." + success_unapproved: "Dein Passwort wurde erfolgreich geändert." continue: "Weiter zu %{site_name}" change_email: confirmed: "Deine E-Mail-Adresse wurde aktualisiert." please_continue: "Weiter zu %{site_name}" - error: "Es gab einen Fehler beim Ändern deiner Mailadresse. Wird diese Adresse bereits genutzt?" + error: "Es gab einen Fehler beim Ändern deiner E-Mail-Adresse. Wird diese Adresse bereits genutzt?" + error_staged: "Es gab einen Fehler beim Ändern deiner E-Mail-Adresse. Die Adresse wird bereits von einem vorbereiteten Benutzer verwendet." + already_done: "Entschuldige, dieser Bestätigungs-Link ist nicht mehr gültig. Ist die E-Mail-Adresse bereits geändert?" + authorizing_old: + title: "Vielen Dank für die Bestätigung deiner aktuellen E-Mail-Adresse" + description: "Wir senden dir jetzt eine Bestätigungs-E-Mail an deine neue Adresse." activation: + action: "Klicke hier, um deinen Account zu aktivieren" already_done: "Entschuldige, dieser Link zur Aktivierung des Benutzerkontos ist nicht mehr gültig. Ist dein Konto schon aktiviert?" please_continue: "Dein neues Konto ist jetzt bestätigt; du wirst auf die Startseite weitergeleitet." continue_button: "Weiter zu %{site_name}" @@ -398,16 +467,16 @@ de: description: 'Dieser Beitrag enthält Inhalte, die eine vernünftige Person als anstößig, beleidigend oder unsere Richtlinien verletzend auffassen würde.' long_form: 'dies als unangemessen gemeldet' notify_user: - title: 'Nachricht an {{username}}' - description: 'Dieser Beitrag enthält etwas, worüber ich mit dem Autor direkt und persönlich reden möchte. Wird nicht gemeldet.' + title: 'Schreibe @{{username}} eine Nachricht' + description: 'Ich möchte mit dieser Person direkt und persönlich über ihren Beitrag reden.' long_form: 'angeschriebener Benutzer' email_title: 'Dein Beitrag in „%{title}“' email_body: "%{link}\n\n%{message}" notify_moderators: title: "Irgendetwas anderes" - description: 'Auf diesen Beitrag sollte aus einem anderen Grund ein Moderator aufmerksam gemacht werden.' + description: 'Auf diesen Beitrag sollte aus einem oben nicht aufgeführten Grund ein Moderator aufmerksam gemacht werden.' long_form: 'hat dies den Moderatoren gemeldet' - email_title: 'Der Beitrag "%{title}" sollte von einem Moderator begutachtet werden' + email_title: 'Ein Beitrag in "%{title}" sollte von einem Moderator begutachtet werden' email_body: "%{link}\n\n%{message}" bookmark: title: 'Lesezeichen' @@ -416,7 +485,7 @@ de: like: title: 'Gefällt mir' description: 'Dieser Beitrag gefällt mir' - long_form: 'dies gefällt mit' + long_form: 'hat dies gefallen' vote: title: 'Abstimmung' description: 'Stimme für diesen Beitrag' @@ -432,7 +501,7 @@ de: long_form: 'als unangemessen gemeldet' notify_moderators: title: "Irgendetwas anderes" - description: 'Dieses Thema muss von einem Moderator begutachtet werden, da es entweder nicht mit den Richtlinien oder den Nutzungsbedingungen in Einklang zu bringen ist, oder aus sonstigen oben nicht genannten Gründen.' + description: 'Dieser Beitrag muss von einem Mitarbeiter begutachtet werden, da er entweder nicht mit den Richtlinien oder den Nutzungsbedingungen in Einklang zu bringen ist, oder aus sonstigen oben nicht genannten Gründen.' long_form: ' hast dies den Moderatoren gemeldet' email_title: 'Das Thema "%{title}" benötigt die Aufmerksamkeit eines Moderators' email_body: "%{link}\n\n%{message}" @@ -449,12 +518,12 @@ de: remove: "Dieses Thema ist jetzt kein Banner mehr. Es wird nicht mehr auf jeder Seite ganz oben angezeigt." unsubscribed: title: 'Abo abbestellt' - description: "Dein Abo wurde abbestellt. Wir werden Dich nicht wieder kontaktieren!" + description: "Dein Abo wurde abbestellt. Wir werden dich nicht wieder kontaktieren!" oops: "Bitte klicke unten, falls du das nicht tun wolltest." error: "Beim Löschen des Abonnements trat ein Fehler auf." preferences_link: "Du kannst den Empfang von Zusammenfassungen per E-Mail auch in deinen Profil-Einstellungen deaktivieren." different_user_description: "Die Zusammenfassung wurde einem anderen als dem momentan angemeldeten Benutzer geschickt. Bitte melde dich ab und versuche es erneut." - not_found_description: "Entschuldige, wir konnten dein Abo nicht abbestellen. Möglicherweise ist der Link aus deiner Mail veraltet." + not_found_description: "Entschuldige, wir konnten dein Abo nicht abbestellen. Möglicherweise ist der Link aus deiner E-Mail veraltet." resubscribe: action: "Abo wieder aufnehmen" title: "Abo wieder aufgenommen!" @@ -468,9 +537,13 @@ de: title: "Neue Benutzer" xaxis: "Tag" yaxis: "Anzahl neuer Nutzer" + profile_views: + title: "Profilaufrufe" + xaxis: "Tag" + yaxis: "Anzahl der angezeigten Benutzerprofile" topics: title: "Themen" - xaxis: "Day" + xaxis: "Tag" yaxis: "Anzahl neuer Themen" posts: title: "Beiträge" @@ -558,6 +631,7 @@ de: page_view_anon_mobile_reqs: title: "Anonyme API-Anfrangen" xaxis: "Tag" + yaxis: "Mobile anonyme API Anfragen" http_background_reqs: title: "Hintergrund" xaxis: "Tag" @@ -599,7 +673,8 @@ de: ruby_version_warning: "Du verwendest eine Version von Ruby 2.0.0, die für Probleme bekannt ist. Aktualisiere auf Patchlevel 247 oder höher." host_names_warning: "Deine config/database.yml-Datei verwendet localhost als Hostname. Trage hier den Hostnamen deiner Webseite ein." gc_warning: 'Dein Server verwendet die Standardparameter für Rubys Garbage-Collector, die nicht optimal sind. Lese dieses Thema über Performanzeinstellungen (en): Tuning Ruby and Rails for Discourse.' - sidekiq_warning: 'Sidekiq läuft nicht. Viele Aufgaben, wie zum Beispiel das Versenden von Mails, werden asynchron durch Sidekiq ausgeführt. Stelle sicher, dass mindestens eine Sidekiq-Prozess läuft. Mehr über Sidekiq erfährst du hier (en).' + sidekiq_warning: 'Sidekiq läuft nicht. Viele Aufgaben, wie zum Beispiel das Versenden von E-Mails, werden asynchron durch Sidekiq ausgeführt. Stelle sicher, dass mindestens eine Sidekiq-Prozess läuft. Mehr über Sidekiq erfährst du hier (en).' + queue_size_warning: 'Eine hohe Anzahl an Aufgaben (%{queue_size}) befindet sich in der Warteschlange. Dies könnte auf ein Problem mit Sidekiq hinweisen oder du musst zusätzliche Sidekiq Worker starten.' memory_warning: 'Dein Server läuft mit weniger als 1 GB Hauptspeicher. Mindestens 1 GB Hauptspeicher werden empfohlen.' google_oauth2_config_warning: 'Der Server ist für Anmeldung und Login mit Google OAuth2 (enable_google_oauth2_logins) konfiguriert, aber die Client-ID und das Client-Gemeheimnis sind nicht gesetzt. Trage diese in den Einstellung ein. Eine Anleitung zu diesem Thema findest du hier.' facebook_config_warning: 'Der Server erlaubt die Anmeldung mit Facebook (enable_facebook_logins), aber die App ID und der Geheimcode sind nicht gesetzt. Besuche die Einstellungen um die fehlenden Einträge hinzuzufügen. Besuche den Leitfaden um mehr zu erfahren.' @@ -608,50 +683,25 @@ de: s3_config_warning: 'Der Server wurde konfiguriert um Dateien nach s3 hochzuladen, aber mindestens der folgenden Einstellungen fehlt: s3_access_key_id, s3_secret_access_key oder s3_upload_bucket. Besuche die Einstellungen um die fehlenden Einträge hinzuzufügen. Besuche "How to set up image uploads to S3?" um mehr zu erfahren.' s3_backup_config_warning: 'Der Server ist so konfiguriert, dass Datensicherungen auf S3 geladen werden, aber mindestens einer der folgenden Einstellungen: s3_access_key_id, s3_secret_access_key or s3_backup_bucket ist nicht festgelegt. Gehe Sie zu den Seiteneinstellungen und aktualisieren Sie die Einstellungen. Siehe "Wie konfiguriere ich das Hochladen von Bildern zu S3?" um mehr darüber zu erfahren.' image_magick_warning: 'Der Server wurde konfiguriert um Vorschaubilder von grossen Bildern zu erstellen, aber ImageMagick ist nicht installiertd. Installiere ImageMagick mit deinem bevorzugten Packetmanager oder besuche um das aktuelle Paket herunterzuladen.' + failing_emails_warning: "%{num_failed_jobs} E-Mails konnten nicht versendet werden. Überprüfe deine app.yml und stelle sicher, dass die E-Mail Servereinstellungen korrekt gesetzt sind. \nSieh dir hier die nicht versendeten E-Mails an." default_logo_warning: "Richte das Logo für deine Seite ein. Konfiguriere dafür logo_url, logo_small_url, und favicon_url unter Website-Einstellungen." contact_email_missing: "Gib eine Kontakt-E-Mail-Adresse an, damit du dringende Meldungen bezüglich deiner Seite erhalten kannst. Trage sie in den Einstellungen ein." contact_email_invalid: "Die Kontakt E-Mail-Adresse ist ungültig. Ändere sie in den Einstellungen." title_nag: "Gib einen Namen für deine Website ein. Aktualisiere dazu den „title“ in den Einstellungen." site_description_missing: "Gib eine kurze Beschreibung deiner Website ein, die in Suchergebnissen angezeigt werden soll. Aktualisiere dazu die „site_description“ in den Einstellungen." - consumer_email_warning: "Deine Seite verwendet Gmail (oder einen anderen für Endkunden gedachten Mailserver) um E-Mails zu versenden. Gmail hat eine Schranke bezüglich des Sendens von E-Mails. Um die E-Mail-Zustellung zu gewährleisten, solltest du die Verwendung eines anderen E-Mail-Diensts in Erwägung ziehen." + consumer_email_warning: "Deine Seite verwendet Gmail (oder einen anderen für Endkunden gedachten Mailserver) um E-Mails zu versenden. Gmail hat eine Schranke bezüglich des Sendens von E-Mails. Um die E-Mail-Zustellung zu gewährleisten, solltest du die Verwendung eines anderen E-Mail-Dienstes in Erwägung ziehen." site_contact_username_warning: "Gib den Namen des Benutzerkontos eines freundlichen Mitarbeiters an, der als Absender für wichtige automatische Nachrichten verwendet wird. Aktualisiere site_contact_username in den Website-Einstellungen." notification_email_warning: "Benachrichtigungs-E-Mails werden nicht von einer gültigen, zu deiner Domain gehörenden E-Mail-Adresse versandt; der E-Mail-Versand wird unberechenbar und unzuverlässig sein. Bitte trage in den Einstellungen unter notification_email eine gültige lokale E-Mail-Adresse ein." - content_types: - education_new_reply: - title: "Hilfe: Erste Beiträge" - description: "Die Hilfe wird automatisch überhalb des Editors eingeblendet, wenn neue Benutzer ihre ersten zwei Beiträge veröffentlichen." - education_new_topic: - title: "Hilfe: Erste Themen" - description: "Die Hilfe wird automatisch überhalb des Editors eingeblendet, wenn neue Benutzer ihre ersten zwei Themen veröffentlichen." - usage_tips: - title: "Leitfaden für neue Benutzer" - description: "Leitfaden und wichtige Informationen für neue Benutzer" - welcome_user: - title: "Willkommen: Neuer Benutzer" - description: "Eine Nachricht, welche automatisch an alle Benutzer gesendet wird welche sich anmelden." - welcome_invite: - title: "Willkommen: Eingeladener Benutzer" - description: "Eine Nachricht welche automatisch an alle eingeladenen Benutzer gesendet wird, wenn diese die Einladung eines anderen Benutzers annehmen." - login_required_welcome_message: - title: "Anmeldung erforderlich: Willkommensnachricht" - description: "Willkommensnachricht welche angezeigt wird wenn der Benutzer nicht angemeldet ist und die Einstellung 'login required' aktiviert ist." - login_required: - title: "Anmeldung erforderlich: Hauptseite" - description: "Der Text welcher nicht angemeldeten Benutzer angezeigt wird, wenn eine Anmeldung erforderlich ist." - head: - title: "HTML-Kopf" - description: "HTML, das zwischen den
Tags eingefügt wird." - top: - title: "Oberer Teil der Seiten" - description: "HTML, das am Anfang jeder Seite hinzugefügt wird (Nach dem Header, vor der Navigation oder dem Thementitel)." - bottom: - title: "Unterer Teil der Seiten" - description: "HTML das vor dem Tag eingefügt wird." + subfolder_ends_in_slash: "Deine Installation in einem Pfad ist nicht korrekt, DISCOURSE_RELATIVE_URL_ROOT endet mit einem Schrägstrich." + email_polling_errored_recently: + one: "Beim Abrufen von E-Mails ist in den letzten 24 Stunden ein Fehler aufgetreten. Weitere Informationen findest du im Fehlerprotokoll." + other: "Beim Abrufen von E-Mails sind in den letzten 24 Stunden %{count} Fehler aufgetreten. Weitere Informationen findest du im Fehlerprotokoll." site_settings: censored_words: "Wörter, die automatisch durch ■■■■ ersetzt werden" delete_old_hidden_posts: "Automatisch alle Beiträge löschen, die länger als 30 Tage versteckt bleiben." default_locale: "Die Standardsprache dieser Discourse-Instanz (kodiert in ISO 639-1)." allow_user_locale: "Erlaube Benutzern, ihre eigene Interfacesprache zu wählen" + set_locale_from_accept_language_header: "Sprache der Benutzeroberfläche für anonyme Nutzer an Hand der Spracheinstellung ihres Browsers wählen (EXPERIMENTELL, funktioniert nicht mit Caches für anonyme Nutzer)" min_post_length: "Minimal zulässige Beitragslänge in Zeichen." min_first_post_length: "Minimal zulässige Länge des ersten Beitrags (eines Themas) in Zeichen" min_private_message_post_length: "Minimale zulässige Beitragslänge in Zeichen für Nachrichten" @@ -660,8 +710,8 @@ de: max_topic_title_length: "Maximale zulässige Titellänge von Themen in Zeichen." min_private_message_title_length: "Minimale zulässige Titellänge von Nachrichten in Zeichen." min_search_term_length: "Minimale zulässige Länge der Suche in Zeichen." + search_tokenize_chinese_japanese_korean: "Zwinge die Suche, Chinesisch, Japanisch und Koreanisch zu erkennen, auch wenn die Seite keine dieser Sprachen nutzt" allow_uncategorized_topics: "Erlaube Themen ohne Kategorie zu erstellen. ACHTUNG: Falls es unkategorisierte Themen gibt, musst du sie neu kategorisieren, bevor du diese Option abschaltest." - uncategorized_description: "Beschreibung der Kategorie für unkategorisierte Themen. Leer lassen, wenn keine Beschreibung erwünscht ist." allow_duplicate_topic_titles: "Erlaube Themen mit identischen und doppelten Titeln." unique_posts_mins: "Minuten, nach denen ein Nutzer denselben Inhalt noch einmal posten kann." educate_until_posts: "Zeige das Hilfe-Panel im Editor sobald ein Nutzer einen seiner ersten (n) Beiträge zu schreiben beginnt." @@ -674,7 +724,7 @@ de: download_remote_images_to_local: "Lade eine Kopie von extern gehosteten Bildern herunter und ersetze Links in Beiträgen entsprechend; dies verhindert defekte Bilder." download_remote_images_threshold: "Minimal benötigter freier Festplattenspeicher um externe Bilder lokal herunterzuladen (in Prozent)" disabled_image_download_domains: "Liste von Domänen, von denen verlinkte Bilder niemals heruntergeladen werden sollen." - ninja_edit_window: "Für (n) Sekunden wird nach dem Bearbeiten keine neue Revision im Beitragsverlauf angelegt." + editing_grace_period: "Für (n) Sekunden wird nach dem Bearbeiten keine neue Revision im Beitragsverlauf angelegt." post_edit_time_limit: "Der Verfasser eines Beitrags kann diesen nur für (n) Minuten nach Absenden des Beitrags bearbeiten. 0 deaktiviert diese Beschränkung." edit_history_visible_to_public: "Erlaube jedem, vorherige Versionen eines bearbeiteten Beitrags zu sehen. Wenn deaktiviert sind diese nur für Mitarbeiter sichtbar." delete_removed_posts_after: "Beiträge, die deren Verfasser selbst entfernt hat, werden nach (n) Stunden automatisch gelöscht. Die Beiträge werden sofort gelöscht, wenn dieser Wert auf 0 gesetzt wird." @@ -683,13 +733,20 @@ de: category_featured_topics: "Anzahl der angezeigten Themen je Kategorie auf der Kategorieseite /categories. Nachdem dieser Wert geändert wurde, dauert es bis zu 15 Minuten bis die Kategorieseite aktualisiert ist." show_subcategory_list: "Zeige Liste von Unterkategorien statt einer Liste von Themen wenn eine Kategorie ausgewählt wird." fixed_category_positions: "Falls aktiviert können Kategorien in einer fest vorgegebenen Reihenfolge angeordnet werden. Andernfalls werden Kategorien nach Aktivität sortiert aufgelistet." + fixed_category_positions_on_create: "Wenn aktiviert wird die Kategoriezuordnung beim Erstellen eines Themas erhalten (benötigt fixed_category_positions)." add_rel_nofollow_to_user_content: "Füge mit Ausnahme interner Links allen nutzergenerierten Inhalten 'rel nofollow' hinzu (inkludiert übergeordnete Domains). Die Änderung dieser Einstellung erfordert, dass du sämtliche Markdown-Beiträge aktualisierst." + exclude_rel_nofollow_domains: "Eine Liste von Domains auf welchen das Attribut nofollow nicht auf Links gesetzt werden sollte (tld.com erlaubt auch sub.tld.com). Du solltest mindestens die Top-Level Domain dieser Seite hinzufügen, damit die Crawler der Suchmaschinen all deinen Content indexieren können. Wenn weitere Teile deiner Webseite unter anderen Domains zu finden sind, kannst du diese hier ebenfalls hinzufügen." post_excerpt_maxlength: "Maximale Länge eines Beitrags-Auszuges bzw. -Zusammfassung." post_onebox_maxlength: "Maximale Länge eines Onebox-Discourse-Beitrags in Zeichen." onebox_domains_whitelist: "Liste von Domains, deren Inhalte für Oneboxen erlaubt sind; diese Domains sollten OpenGraph oder oEmbed unterstützen. Teste ihre Kompatibilität unter http://iframely.com/debug" + logo_url: "Das Logo oben links auf deiner Seite sollte eine breite, rechteckige Form haben. Wenn du kein Logo auswählst, wird stattdessen der Seitentitel angezeigt." + digest_logo_url: "Alternatives Logo, welches oben in der E-Mail Kurzfassung angezeigt wird (sollte eine breite, rechteckige Form haben). Wenn du kein Logo auswählst, wird stattdessen das `logo_url` verwendet. " + logo_small_url: "Dein Logo in klein für die obere Linke Seite deiner Webseite, in Form eines rechteckigen Quadrates. Es wird angezeigt, wenn der Nutzer scrollt. Wenn du dieses Feld frei lässt, wird stattdessen ein Home-Symbol angezeigt." + favicon_url: "Das Favicon deiner Seite. Besuche http://en.wikipedia.org/wiki/Favicon um weitere Informationen zu erhalten. Damit das Favicon korrekt über einen CDN-Service funktioniert, muss es eine .png Datei sein." + mobile_logo_url: "Das fixierte Logo in der oberen Linken Hälfte der mobilen Seitenversion. Es sollte eine quadratische Form haben. Wenn du dieses Feld frei lässt, wird `logo_url` benutzt. " apple_touch_icon_url: "Icon für berührungsempfindliche Apple-Geräte. Empfohlene Grösse ist 144px auf 144px." - notification_email: "Die E-Mail-Adresse die als \"From:\" Absender aller wichtiger System-Emails benutzt wird. Die benutzte Domain sollte über korrekte SPF, DKIM und PTR Einträge verfügen, damit Emails sicher zugestellt werden können." - email_custom_headers: "Eine Pipe-getrennte (|) Liste von eigenen Mail Headern" + notification_email: "Die E-Mail-Adresse die als \"From:\" Absender aller wichtiger System-E-Mails benutzt wird. Die benutzte Domain sollte über korrekte SPF, DKIM und PTR Einträge verfügen, damit E-Mails sicher zugestellt werden können." + email_custom_headers: "Eine Pipe-getrennte (|) Liste von eigenen E-Mail Headern" email_subject: "Format der Betreffzeile in Standard-E-Mails. Siehe https://meta.discourse.org/t/customize-subject-format-for-standard-emails/20801" use_https: "Soll die volle URL der Seite (Discourse.base_url) mit http oder https beginnen? AKTIVIERE DIES NICHT BIS HTTPS AUFGESETZT IST UND BEREITS FUNKTIONIERT!" summary_score_threshold: "Mindestpunktzahl, die ein Beitrag benötigt, um in der \"Thema zusammenfassen\"-Ansicht zu erscheinen." @@ -697,7 +754,7 @@ de: summary_likes_required: "Mindestanzahl an \"Gefällt mir\" Wertungen in einem Thema, bevor die \"Thema zusammenfassen\" Funktion aktiviert wird." summary_percent_filter: "Zeige die besten (n)% der Beiträge eines Themas in der \"Thema zusammenfassen\"-Ansicht." summary_max_results: "Maximale Anzahl der sichtbaren Beiträge beim Zusammenfassen von Themen" - enable_private_messages: "Erlaube Benutzern auf Vertrauensstufe 1, Direktnachrichten zu erstellen und zu beantworten." + enable_private_messages: "Erlaube es, Nutzern mit der Vertrauensstufe 1 (konfigurierbar mit der Einstellung min trust to send messages) Nachrichten zu erstellen und auf Nachrichten zu antworten." enable_long_polling: "Nachrichtenbus für Benachrichtigungen kann Long-Polling nutzen." long_polling_base_url: "Basis-URL für Long Polling (wenn zum Ausliefern von dynamischen Inhalten ein CDN verwendet wird, setze es auf Origin Pull), z. B. http://origin.site.com" long_polling_interval: "Wartezeit, bevor der Server auf Clients reagiert, wenn keine Daten gesendet werden müssen (nur für angemeldete Benutzer)" @@ -713,10 +770,13 @@ de: tl4_additional_likes_per_day_multiplier: "Limit für \"Gefällt mir\" für Nutzer auf Vertrauensstufe 4 (Anführer) mit diesem Faktor multiplizieren" num_flags_to_block_new_user: "Verstecke alle Beiträge eines neuen Nutzers und erlaube keine neuen Beiträge mehr, wenn der neue Nutzer die hier angegebene Zahl an Meldungen bezüglich Werbung von num_users_to_block_new_user verschiedenen anderen Nutzern erhalten hat. 0 deaktiviert diese Funktion." num_users_to_block_new_user: "Verstecke alle Beiträge eines neuen Nutzers und erlaube keine neuen Beiträge mehr, wenn der neue Nutzer num_flags_to_block_new_user Meldungen bezüglich Werbung von der hier angegebenen Zahl verschiedener anderer Nutzer erhalten hat. 0 deaktiviert diese Funktion." - notify_mods_when_user_blocked: "Wenn ein Benutzer automatisch gesperrt wird, sende eine Mail an alle Moderatoren." + notify_mods_when_user_blocked: "Wenn ein Benutzer automatisch gesperrt wird, sende eine Nachricht an alle Moderatoren." flag_sockpuppets: "Wenn ein neuer Nutzer auf ein Thema antwortet, das von einem anderen neuen Nutzer aber mit der gleichen IP-Adresse begonnen wurde, markiere beide Beiträge als Werbung." traditional_markdown_linebreaks: "Traditionelle Zeilenumbrüche in Markdown, die zwei nachfolgende Leerzeichen für einen Zeilenumbruch benötigen." + allow_html_tables: "Erlaube es, Tabellen in Markdown mit HTML-Tags einzugeben. TABLE, THEAD, TD, TR, TH werden erlaubt (alle Beiträge mit Tabellen müssen ihr HTML erneuern)" post_undo_action_window_mins: "Minuten, die ein Nutzer hat, um Aktionen auf Beiträgen rückgängig zu machen (Like, Meldung, usw.)." + must_approve_users: "Moderatoren oder Administratoren müssen alle neuen Benutzeraccounts freischalten, bevor diese Zugriff auf die Webseite erhalten. ACHTUNG: Das Aktivieren dieser Option für eine Live-Seite entfernt den Zugriff auch für alle existierenden Benutzer!" + pending_users_reminder_delay: "Benachrichtige die Moderatoren, falls neue Nutzer mehr als so viele Stunden auf ihre Genehmigung gewartet haben. Stelle -1 ein, um diese Benachrichtigungen zu deaktivieren." ga_tracking_code: "Google Analytics Trackingcode, zum Beispiel: UA-12345678-9; siehe http://google.com/analytics" ga_domain_name: "Google Analytics Domänenname, zum Beispiel: mysite.com; siehe http://google.com/analytics" ga_universal_tracking_code: "Google Universal Analytics (analytics.js) tracking code code, beispielsweise: UA-12345678-9; Siehe http://google.com/analytics" @@ -725,6 +785,7 @@ de: enable_noscript_support: "Aktiviere Standard-Suchmaschinen-Webcrawler-Unterstützung durch den noscript-Tag" allow_moderators_to_create_categories: "Erlaube Moderatoren neue Kategorien zu erstellen" cors_origins: "Erlaubte Adressen für Cross-Origin-Requests (CORS). Jede Adresse muss http:// oder https:// enthalten. Die Umgebungsvariable DISCOURSE_ENABLE_CORS muss gesetzt sein, um CORS zu aktivieren." + use_admin_ip_whitelist: "Administratoren können sich nur anmelden, wenn sie von einer IP-Adresse aus zugreifen, welcher unter den vertrauenswürden IP-Adressen gelistet ist (Admin > Logs > Screened Ips)." top_menu: "Bestimme, welche Elemente in der Navigationsleiste der Homepage auftauchen sollen, und in welcher Reihenfolge. Beispiel: latest|new|unread|categories|top|read|posted|bookmarks" post_menu: "Bestimme, welche Funktionen in welcher Reihenfolge im Beitragsmenü auftauchen. Beispiel: like|edit|flag|delete|share|bookmark|reply" post_menu_hidden_items: "Die Einträge im Menü eines Beitrags, die standardmäßig hinter einer erweiterbaren Ellipse versteckt werden sollen." @@ -736,14 +797,15 @@ de: suppress_reply_directly_above: "Verstecke das erweiterbare „Antwort auf“-Feld in einem Beitrag, wenn der beantwortete Beitrag direkt darüber angezeigt wird." suppress_reply_when_quoting: "Verstecke das erweiterbare „Antwort auf“-Feld in einem Beitrag, wenn der Beitrag den beantworteten Beitrag zitiert." max_reply_history: "Maximale Anzahl an Antworten beim Ausklappen von in-reply-to" - experimental_reply_expansion: "Verstecke dazwischenliegende Beiträge, wenn der beantwortete Beitrag erweitert wird (experimentell)." topics_per_period_in_top_summary: "Anzahl der Themen, die in der Top-Themübersicht angezeigt werden." topics_per_period_in_top_page: "Anzahl der Themen, die in der mit \"Mehr zeigen\" erweiterten Top-Themenübersicht angezeigt werden." redirect_users_to_top_page: "Verweise neue und länger abwesende Nutzer automatisch zur Top Übersichtsseite" + top_page_default_timeframe: "Standardzeitfenster für die oberste, angezeigte Seite." show_email_on_profile: "Im Profil die E-Mail-Adresse des Benutzers anzeigen (ist nur für den Benutzer selbst und Mitarbeiter sichtbar)." email_token_valid_hours: "Tokens zur Passwort-Wiederherstellung / Aktivierung eines Kontos sind für (n) Stunden gültig." email_token_grace_period_hours: "Tokens zur Passwort-Wiederherstellung / Aktivierung eines Kontos sind auch nach ihrer Verwendung noch für eine Frist von (n) Stunden gültig." enable_badges: "Abzeichen aktivieren" + enable_whispers: "Erlaube Moderatoren und Administratoren in Beiträgen privat zu kommunizieren (experimentell)" allow_index_in_robots_txt: "Suchmaschinen mittels der robots.txt Datei erlauben, die Seite zu indizieren." email_domains_blacklist: "Eine durch senkrechte Striche getrennte Liste von E-Mail-Domains, die für die Registrierung neuer Konten nicht verwenden werden dürfen. Beispiel: mailinator.com|trashmail.net" email_domains_whitelist: "Eine durch senkrechte Striche getrennte Liste von E-Mail-Domains, die für die Registrierung neuer Konten verwendet werden können. ACHTUNG: Benutzer mit E-Mail-Adressen anderer Domains werden nicht zugelassen!" @@ -759,15 +821,22 @@ de: login_required: "Nur angemeldete Nutzer dürfen Inhalte der Seite lesen, anonyme Zugriffe sind verboten." min_username_length: "Minimale Benutzernamenlänge in Zeichen." max_username_length: "Maximale Benutzernamenlänge in Zeichen." + reserved_usernames: "Benutzernamen, welche für die Registrierung gesperrt werden sollen." min_password_length: "Minimale Länge des Passworts." + min_admin_password_length: "Minimale Passwortlänge für Administratoren." block_common_passwords: "Erlaube kein Passwort unter den 10000 meist verwendeten Passwörter." + enable_sso: "Aktiviere Single Sign-on über eine externe Seite (WARNUNG: DIE E-MAIL ADRESSE DES BENUTZERS *MUSS* VON DER EXTERNEN SEITE VERIFIZIERT WERDEN)." enable_sso_provider: "Aktiviere das Discourse SSO Anbieter Protokoll unter /session/sso_provider; benötigt sso_secret." sso_url: "URL des Single Sign On Endpunkts" sso_secret: "Geheime Zeichenkette die als Schlüssel für die Authentifizierung von SSO-Informationen verwendet wird. Sollte unbedingt 10 Zeichen oder länger sein." + sso_overrides_email: "Überschreibt lokale E-Mail mit E-Mail der externen Site aus SSO Daten (WARNUNG: Diskrepanzen können aufgrund der Normalisierung lokaler E-Mail-Adressen auftreten.)" + sso_overrides_username: "Überschreibt lokalen Benutzernamen mit dem Benutzernamen der externen Seite aus SSO Daten (WARNUNG: Diskrepanzen können aufgrund von Normalisierung von lokalen Benutzernamen auftreten)" + sso_overrides_name: "Überschreibt den vollen Namen des Benutzers mit den Daten von der externen Seite aus dem SSO-Payload bei jedem Login. Außerdem werden lokale Änderungen verhindert." sso_overrides_avatar: "Überschreibt den Avatar des Benutzers mit dem Avatar aus der SSO Payload. Wenn aktiv, dann sollte allow_uploaded_avatars deaktiviert werden." sso_not_approved_url: "Nicht genehmigte SSO-Accounts zu dieser URL weiterleiten" enable_local_logins: "Aktiviere Login mit lokal gespeicherten Benutzernamen und Passwörtern. (Anmerkung: muss aktiviert sein, damit Einladungen funktionieren)" allow_new_registrations: "Erlaube das Registrieren neuer Benutzerkonten. Wird dies deaktiviert, so kann niemand mehr ein neues Konto erstellen." + enable_signup_cta: "Zeige wiederkehrenden Gästen einen Hinweis, dass diese sich Anmelden oder Registrieren sollen." enable_yahoo_logins: "Aktiviere Yahoo Authentifizierung." enable_google_oauth2_logins: "Google Oauth2-Authentifizierung aktivieren. Dies ist der momentan von Google unterstützte Authentifizierungs-Mechanismus. Benötigt Client-ID und Secret." google_oauth2_client_id: "Client-ID deiner Google-Anwendung." @@ -775,6 +844,9 @@ de: enable_twitter_logins: "Aktiviere Twitter Authentifizierung (benötigt twitter_consumer_key und twitter_consumer_secret)." twitter_consumer_key: "Consumer Key für Twitter Authentifizierung, registriert auf http://dev.twitter.com" twitter_consumer_secret: "Consumer Secret für Twitter Authentifizierung, registriert auf http://dev.twitter.com" + enable_instagram_logins: "Authentifizierung mit Instagram aktivieren, benötigt instagram_consumer_key und instagram_consumer_secret" + instagram_consumer_key: "Consumer Key für Authentifizierung mit Instagram" + instagram_consumer_secret: "Consumer Secret für Authentifizierung mit Instagram" enable_facebook_logins: "Aktiviere Facebook Authentifizierung (benötigt facebook_app_id und facebook_app_secret)." facebook_app_id: "App-ID für Facebook Authentifizierung, registriert auf https://developers.facebook.com/apps" facebook_app_secret: "App Secret für Facebook Authentifizierung, registriert auf https://developers.facebook.com/apps" @@ -783,11 +855,19 @@ de: github_client_secret: "Client Secret für Github Authentifizierung, registriert auf https://github.com/settings/applications" allow_restore: "Wiederherstellung zulassen, welche ALLE vorhandenen Daten überschreiben kann! Auf 'false' lassen, sofern Sie nicht planen, eine Sicherung wiederherzustellen." maximum_backups: "Die maximale Anzahl an Sicherungen, die auf dem Server gespeichert werden. Ältere Sicherungen werden automatisch gelöscht." + automatic_backups_enabled: "Automatische Backups aktivieren. Die Backups werden im eingestellten Zeitintervall erstellt." + backup_frequency: "WIe häufig sollen Backups erstellt werden (Angabe in Tagen)?" enable_s3_backups: "Lade fertige Backups zu S3 hoch. WICHTIG: In den Dateien-Einstellungen müssen gültige S3-Kontodaten eingegeben sein." s3_backup_bucket: "Der entfernte Speicherort für Ihre Sicherungen. WARNUNG: Stellen Sie sicher, dass es sich um einen privaten Speicherort handelt." + s3_disable_cleanup: "Deaktiviere das Löschen von Backups aus S3 wenn sie lokal entfernt werden" + backup_time_of_day: "Uhrzeit in UTC, wenn Backups ausgeführt werden sollen." + backup_with_uploads: "Hochgeladene Dateien bei geplanten Backups mit einbeziehen. Wenn diese Einstellung deaktiviert ist, wird nur die Datenbank gesichert." active_user_rate_limit_secs: "Sekunden, nach denen das 'last_seen_at'-Feld aktualisiert wird." verbose_localization: "Erweiterte Lokalisierungstipps in der Benutzeroberfläche anzeigen " previous_visit_timeout_hours: "Stunden, die ein Besuch dauert, bevor er als 'früherer' Besuch gezählt wird." + top_topics_formula_log_views_multiplier: "Wert von Log Ansichten Multiplikator (n) in Top Themen Formel: `log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`" + top_topics_formula_first_post_likes_multiplier: "Wert für den Multiplikator (n) für die ersten Likes pro Beitrag in der Formel für die besten Beiträge: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`" + top_topics_formula_least_likes_per_post_multiplier: "Wert für den Multiplikator (n) für die wenigsten Likes pro Beitrag in der Formel für die besten Beiträge: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`" rate_limit_create_topic: "Nach Erstellen eines Themas muss ein Nutzer (n) Sekunden warten, bevor ein weiteres Thema erstellt werden kann." rate_limit_create_post: "Nach Schreiben eines Beitrags muss ein Nutzer (n) Sekunden warten, bevor ein weiterer Beitrag erstellt werden kann." rate_limit_new_user_create_topic: "Nach Erstellen eines Themas muss ein neuer Nutzer (n) Sekunden warten, bevor ein weiteres Thema erstellt werden kann." @@ -799,7 +879,9 @@ de: max_topics_per_day: "Maximale Anzahl der Themen, die ein Nutzer pro Tag erstellen kann." max_private_messages_per_day: "Maximale Zahl Direktnachrichten, die ein Nutzer pro Tag erstellen kann." max_invites_per_day: "Maximale Zahl an Einladungen, die ein Nutzer pro Tag verschicken kann." - max_topic_invitations_per_day: "Maximale Zahl an Themen-Einladungen, die ein Nutzer pro Tag verschicken kann." + max_topic_invitations_per_day: "Maximale Zahl an Thema-Einladungen, die ein Nutzer pro Tag verschicken kann." + alert_admins_if_errors_per_minute: "Anzahl der Fehler pro Minute, bei der ein Administrator benachrichtigt werden soll. Ein Wert von 0 deaktiviert diese Funktion. Achtung: Benötigt einen Neustart." + alert_admins_if_errors_per_hour: "Anzahl der Fehler pro Stunde, bei der ein Administrator benachrichtigt werden soll. Ein Wert von 0 deaktiviert diese Funktion. Achtung: Benötigt einen Neustart." suggested_topics: "Anzahl der empfohlenen Themen am Ende eines Themas." limit_suggested_to_category: "Zeige nur Themen der aktuellen Kategorie in vorgeschlagenen Themen." clean_up_uploads: "Lösche verwaiste Uploads, um illegales Hosting zu vermeiden. ACHTUNG: du solltest ein Backup deines /uploads-Verzeichnis erstellen, bevor du diese Funktion aktivierst." @@ -812,6 +894,12 @@ de: s3_access_key_id: "The Amazon S3 access key id that will be used to upload images" s3_secret_access_key: "Der geheime Schlüssel von Amazon S3 welcher für das Hochladen verwendet wird" s3_region: "Der Name der Amazon S3 Region welche für das Hochladen verwendet wird" + s3_cdn_url: "Die CDN URL für alle S3 Anlagen (bspw. https://cdn.somewhere.com). ACHTUNG: Nachdem diese Einstellung abgeändert wurde, musst du alle alten Beiträge neu generieren." + avatar_sizes: "Liste der Größe von automatisch generierten Avataren." + external_system_avatars_enabled: "Benutze einen externen Avatar Service" + external_system_avatars_url: "URL des externen Avatar Systems. Erlaubte Ersetzungen sind {username} {first_letter} {color} {size}" + default_opengraph_image_url: "URL des standardmäßigen Open-Graph-Bildes." + allow_all_attachments_for_group_messages: "Erlaube alle E-Mail Anhänge für Gruppen-Nachrichten." enable_flash_video_onebox: "Aktiviere das Einbinden von swf und flv (Adobe Flash) Links in einer Onebox. ACHTUNG: Kann ein Sicherheitsrisiko sein." default_invitee_trust_level: "Standardwert für die Stufe eines eingeladenen Nutzers (0-4)." default_trust_level: "Standardwert für die Vertrauensstufe (0-4) für alle neuen Benutzer. ACHTUNG! Diesen Wert anzuheben kann zu erhöhtem Spam Aufkommen führen!" @@ -825,32 +913,38 @@ de: tl2_requires_likes_received: "Die Anzahl der Likes, die ein Benutzer erhalten muss, bevor er in die Vertrauensstufe 2 befördert wird." tl2_requires_likes_given: "Die Anzahl der Likes, die ein Benutzer vergeben muss, bevor er in die Vertrauensstufe 2 befördert wird." tl2_requires_topic_reply_count: "Die Anzahl der Beiträge, auf die ein Benutzer antworten muss, bevor er in die Vertrauensstufe 2 befördert wird." - tl3_requires_days_visited: "Die Mindestanzahl an Tagen, an denen ein Benutzer in den letzten 100 Tagen die Seite besucht haben muss, um die Vertrauensstufe 3 erreichen zu können. (0 bis 100)" - tl3_requires_topics_replied_to: "Die Mindestanzahl an Themen, auf die ein Benutzer in den letzten 100 Tagen geantwortet haben muss, um die Vertrauensstufe 3 erreichen zu können. (0 oder mehr)" - tl3_requires_topics_viewed: "Prozentualer Anteil aller Themen der letzten 100 Tage, die ein Nutzer mindestens gelesen haben muss, um die Vertrauensstufe Anführer (3) erreichen zu können. (0 bis 100)" - tl3_requires_posts_read: "Prozentualer Anteil aller Beiträge der letzten 100 Tage, die ein Nutzer mindestens gelesen haben muss, um die Vertrauensstufe Anführer (3) erreichen zu können. (0 bis 100)" + tl3_time_period: "Zeitraum für die Bedingungen für Vertrauensstufe 3 (in Tagen)" + tl3_requires_days_visited: "Mindestanzahl von Tagen innerhalb der letzten (tl3 time period) Tage in denen der Nutzer die Seite besucht haben muss, um Vertrauensstufe 3 erreichen zu können. Höher als tl3 time period einstellen, um Beförderungen auf Vertrauensstufe 3 zu deaktivieren. (0 oder mehr)" + tl3_requires_topics_replied_to: "Die Mindestanzahl an Themen, auf die ein Benutzer in den letzten (tl3 time period) Tagen geantwortet haben muss, um die Vertrauensstufe 3 erreichen zu können. (0 oder mehr)" + tl3_requires_topics_viewed: "Prozentualer Anteil aller Themen der letzten (tl3 time period) Tage, die ein Nutzer mindestens gelesen haben muss, um die Vertrauensstufe 3 erreichen zu können. (0 bis 100)" + tl3_requires_posts_read: "Prozentualer Anteil aller Beiträge der letzten (tl3 time period) Tage, die ein Nutzer mindestens gelesen haben muss, um die Vertrauensstufe 3 erreichen zu können. (0 bis 100)" tl3_requires_topics_viewed_all_time: "Mindestanzahl Themen, die ein Nutzer gelesen haben muss, um die Vertrauensstufe Anführer (3) erreichen zu können." tl3_requires_posts_read_all_time: "Mindestanzahl Beiträge, die ein Nutzer gelesen haben muss, um die Vertrauensstufe Anführer (3) erreichen zu können." - tl3_requires_max_flagged: "Um die Vertrauensstufe 3 erhalten zu können dürfen in den letzten 100 Tagen höchstens X Beiträge eines Nutzers von X verschiedenen anderen Nutzern gemeldet worden sein, wobei X diesem Wert entspricht. (0 oder mehr)" + tl3_requires_max_flagged: "Um die Vertrauensstufe 3 erhalten zu können dürfen in den letzten (tl3 time period) Tagen höchstens X Beiträge eines Nutzers von X verschiedenen anderen Nutzern gemeldet worden sein, wobei X diesem Wert entspricht. (0 oder mehr)" tl3_promotion_min_duration: "Mindestanzahl an Tagen, die ein Benutzer auf Vertrauensstufe 3 beförderter Nutzer auf dieser Stufe verbleibt, bevor er automatisch wieder auf Vertrauensstufe 2 heruntergestuft werden kann." - tl3_requires_likes_given: "Die Mindestanzahl an \"Likes\" die Sie in den letzten 100 Tagen gegeben haben müssen um für Vertrauenslevel 3 zu qualifizieren." - tl3_requires_likes_received: "Die Mindestanzahl an \"Likes\" die Sie in den letzten 100 Tagen erhalten haben müssen um für Vertrauenslevel 3 zu qualifizieren." + tl3_requires_likes_given: "Mindestanzahl an Likes die ein Nutzer innerhalb der letzten (tl3 time period) gegeben haben muss, um Vertrauensstufe 3 erreichen zu können." + tl3_requires_likes_received: "Mindestanzahl an Likes die ein Nutzer innerhalb der letzten (tl3 time period) bekommen haben muss, um Vertrauensstufe 3 erreichen zu können." tl3_links_no_follow: "rel=nofollow nicht von Links entfernen, die von Benutzern mit Vertrauensstufe 3 erstellt wurden." min_trust_to_create_topic: "Die minimale Vertrauensstufe wird benötigt um eine neues Thema zu erstellen." min_trust_to_edit_wiki_post: "Die minimal benötigte Vertrauensstufe, um als Wiki markierte Beiträge bearbeiten zu können." + min_trust_to_allow_self_wiki: "Das mindeste Vertrauenslevel, das ein Nutzer haben muss, um einen eigenen Wiki Eintrag zu erstellen." + min_trust_to_send_messages: "Benötigte Vertrauensstufe um neue private Nachrichten erstellen zu dürfen." newuser_max_links: "Maximale Anzahl der Links, die neue Benutzer Beiträgen hinzufügen dürfen." newuser_max_images: "Maximale Anzahl der Bilder, die neue Benutzer Beiträgen hinzufügen dürfen." newuser_max_attachments: "Maximale Anzahl der Dateien, die neue Benutzer Beiträgen hinzufügen dürfen." newuser_max_mentions_per_post: "Maximale Anzahl der @Namens-Erwähnungen, die neue Benutzer in Beiträgen nutzen dürfen." newuser_max_replies_per_topic: "Maximale Anzahl an Antworten, die ein neuer Benutzer in einem einzigen Thema geben darf, bevor jemand auf diese antwortet." max_mentions_per_post: "Maximale Anzahl der @Namens-Erwähnungen, die jemand in einem Beitrag nutzen kann." + max_users_notified_per_group_mention: "Maximale Anzahl an Nutzern die benachrichtigt werden wenn eine Gruppe erwähnt wird (wird die Grenze erreicht, werden keine Nutzer benachrichtigt)" create_thumbnails: "Erzeuge ein Vorschaubild und eine Lightbox für Bilder, die zu groß sind, um in einem Beitrag angezeigt zu werden." email_time_window_mins: "Warte (n) Minuten, bevor Nutzern eine Hinweis-E-Mail geschickt wird, um ihnen Gelegenheit zu geben, ihre Beiträge abschließend bearbeiten zu können." - email_posts_context: "Anzahl der Antworten welche als Konext einer Notifikations-Mail hinzugefügt werden." + private_email_time_window_seconds: "Warte (n) Sekunden, bevor irgendwelche private E-Mail-Benachrichtigungen gesendet werden, um den Nutzern die Möglichkeit zu geben, ihre Beiträge zu bearbeiten und abzuschließen." + email_posts_context: "Anzahl der Antworten, welche als Kontext einer Benachrichtigungs-E-Mail hinzugefügt werden." flush_timings_secs: "Sekunden, nach denen Zeiteinstellungen auf den Server übertragen werden." title_max_word_length: "Maximal erlaubte Wortlänge in Thementiteln, in Zeichen." title_min_entropy: "Für Titel neuer Themen minimal erforderliche Entropie (einzigartige Zeichen)." body_min_entropy: "Für den Text neuer Beiträge minimal erforderliche Entropie (einzigartige Zeichen)." + allow_uppercase_posts: "Beiträge oder Titel von Themen mit ausschließlich Großschreibweise erlauben." title_fancy_entities: "Konvertiere HTML-Entitys in Thementiteln." min_title_similar_length: "Minimale Länge eines Titels, bevor nach ähnlichen Titeln gesucht wird." min_body_similar_length: "Minimale Länge eines Beitragstextes, bevor nach ähnlichen Themen gesucht wird." @@ -864,6 +958,9 @@ de: topic_views_heat_low: "Aufrufe-Feld leicht hervorheben, sobald das Thema so oft gelesen wurde." topic_views_heat_medium: "Aufrufe-Feld mäßig hervorheben, sobald das Thema so oft gelesen wurde." topic_views_heat_high: "Aufrufe-Feld stark hervorheben, sobald das Thema so oft gelesen wurde." + cold_age_days_low: "Aktivitäts-Feld leicht abdunkeln, wenn das Thema N Tage alt ist." + cold_age_days_medium: "Aktivitäts-Feld etwas abdunkeln, wenn das Thema N Tage alt ist." + cold_age_days_high: "Aktivitäts-Feld stark abdunkeln, wenn das Thema N Tage alt ist." history_hours_low: "Bearbeitungs-Symbol leicht hervorheben, wenn der Beitrag innerhalb so vieler Stunden nach Erstellen bearbeitet wird." history_hours_medium: "Bearbeitungs-Symbol mäßig hervorheben, wenn der Beitrag innerhalb so vieler Stunden nach Erstellen bearbeitet wird." history_hours_high: "Bearbeitungs-Symbol stark hervorheben, wenn der Beitrag innerhalb so vieler Stunden nach Erstellen bearbeitet wird." @@ -871,24 +968,36 @@ de: topic_post_like_heat_medium: "Feld für Anzahl der Antworten mäßig hervorheben, wenn das Verhältnis von Likes zu Antworten diesen Wert übersteigt." topic_post_like_heat_high: "Feld für Anzahl der Antworten stark hervorheben, wenn das Verhältnis von Likes zu Antworten diesen Wert übersteigt." faq_url: "Vollständige URL zu einer externen FAQ, welche du gerne verwenden möchtest." - tos_url: "Die vollständige URL zu Deinen extern gehosteten Nutzungsbedingungen, sofern vorhanden." - privacy_policy_url: "Die vollständige URL zu Deinen extern gehosteten Datenschutzrichtlinien, sofern vorhanden." + tos_url: "Die vollständige URL zu deinen extern gehosteten Nutzungsbedingungen, sofern vorhanden." + privacy_policy_url: "Die vollständige URL zu deinen extern gehosteten Datenschutzrichtlinien, sofern vorhanden." newuser_spam_host_threshold: "Die Anzahl welche ein Frischling Beiträge mit Links auf die gleiche Seite innerhalb ihrer `newuser_spam_host_posts` veröffentlichen, bevor der Beitrag als Spam klassifiziert wird." white_listed_spam_host_domains: "Liste von Domänen, die keinem Spam-Host Test unterzogen werden. Neue Benutzer werden niemals daran gehindert, Beiträge mit Links zu diesen Domains zu erstellen." staff_like_weight: "Zusätzlicher Gewichtungsfaktor für \"Gefällt mir\" Wertungen von Mitarbeitern." + topic_view_duration_hours: "Alle N Stunden einen neuen Themenaufruf pro IP/Benutzer zählen." + user_profile_view_duration_hours: "Alle N Stunden einen neuen Profilaufruf pro IP/Benutzer zählen." levenshtein_distance_spammer_emails: "E-Mail-Adressen, die sich um so viele Zeichen unterscheiden, werden beim Vergleich von Adressen von Spam-Nutzern dennoch als identisch betrachtet." max_new_accounts_per_registration_ip: "Keine neuen Registrierungen von einer IP-Adresse annehmen, zu der bereits (n) Benutzerkonten mit Vertrauensstufe 0 (und keine Konten von Mitarbeitern oder mit Vertrauensstufe 2 oder höher) gehören." min_ban_entries_for_roll_up: "Ein Klick auf den \"Zusammenfassen\" Knopf führt (N) oder mehr Sperren zu einer einzelnen Subnetz-Sperre zusammen." max_age_unmatched_emails: "Gefilterte E-Mail-Adressen nach (N) Tagen ohne Treffer löschen." max_age_unmatched_ips: "Gefilterte IP-Adressen nach (N) Tagen ohne Treffer löschen." - num_flaggers_to_close_topic: "Mindestanzahl unabhängiger Mitglieder die ein Thema \"flaggen\" damit es automatisch pausiert wird bis es geprüft wurde." - num_flags_to_close_topic: "Mindestanzahl aktiver \"Flags\" die notwendig sind um ein Thema automatisch zu pausieren bis es geprüft wird." + num_flaggers_to_close_topic: "Mindestzahl unabhängiger Mitglieder, die ein Thema melden, damit es automatisch für eine Prüfung pausiert wird." + num_flags_to_close_topic: "Mindestzahl aktiver Meldungen, die notwendig sind, um ein Thema automatisch für eine Prüfung zu pausieren." auto_respond_to_flag_actions: "Automatische Antwort auf abgearbeitete Meldungen aktivieren." + min_first_post_typing_time: "Minimale Zeit die ein Benutzer mindestens aufwenden muss, um einen Beitrag zu schreiben. Wenn diese Zeit unterschritten wird, wird der Beitrag automatisch in die Warteschlange für freizuschaltende Beiträge verschoben. Setze diesen Wert auf 0 um dieses Verhalten zu deaktivieren (nicht empfohlen)." + auto_block_fast_typers_on_first_post: "Blockiere Benutzer automatisch, welche unterhalb der min_first_post_typing_time liegen." + auto_block_fast_typers_max_trust_level: "Maximales Vertrauenslevel um \"Schnelltipper\" automatisch zu blockieren." + auto_block_first_post_regex: "Regulärer Ausdruck der dafür sorgt dass passende erste Beiträge von Benutzern genehmigt werden müssen. Groß- und Kleinschreibung wird nicht beachtet.\nBeispiel: raging|a[bc]a blockiert alle ersten Beiträge, die raging, aba oder aca beinhalten. Wird nur auf den ersten Beitrag eingewendet." reply_by_email_enabled: "Aktviere das Antworten auf Themen via E-Mail." reply_by_email_address: "Vorlage für die Antwort einer per E-Mail eingehender E-Mail-Adresse, zum Beispiel: %{reply_key}@reply.example.com oder replies+%{reply_key}@example.com" - disable_emails: "Discourse daran hindern, jegliche Art von Emails zu verschicken" + disable_emails: "Discourse daran hindern jegliche E-Mails zu verschicken" strip_images_from_short_emails: "Entferne Bilder aus E-Mails kleiner als 2800 Bytes." short_email_length: "Kurze E-Mail-Länge in Bytes" + display_name_on_email_from: "Zeige vollständige Namen im Absender-Feld von E-Mails" + unsubscribe_via_email: "Erlaube es Benutzern eine E-Mail mit dem Betreff oder Text: \"unsubscribe\" zum abbestellen der E-Mails zu senden." + unsubscribe_via_email_footer: "Hänge einen Link zum Abbestellen ans Ende der E-Mail." + delete_email_logs_after_days: "Lösche E-Mail Logs nach (N) Tagen. 0 um sie für immer zu behalten." + max_emails_per_day_per_user: "Maximale Zahl an E-Mails, die Benutzern gesendet werden. 0 zum Deaktivieren des Limits." + enable_staged_users: "Erstelle automatisch vorbereitete Benutzer, wenn eingehende E-Mails verarbeitet werden." pop3_polling_enabled: "E-Mail-Antworten über POP3 abholen." pop3_polling_ssl: "SSL für die Verbindung zum POP3-Server verwenden. (Empfohlen)" pop3_polling_period_mins: "Intervall in Minuten zum Abholen neuer E-Mails vom POP3-Konto. HINWEIS: benötigt Neustart." @@ -896,10 +1005,11 @@ de: pop3_polling_host: "Der Host für die POP3-Anfrage nach E-Mails." pop3_polling_username: "Der Benutzername für das POP3-Konto zum Abfragen von E-Mails." pop3_polling_password: "Das Passwort für das POP3-Konto zum Abfragen von E-Mails." + log_mail_processing_failures: "Logge Fehler im E-Mail Prozess in http://yoursitename.com/logs" email_in: "Erlaube Benutzern neue Themen per E-Mail (benötigt POP3 polling) zu erstellen. Konfiguriere die Adressen im Reiter „Einstellungen“ für jede Kategorie." - email_in_min_trust: "Minimale Vertrauensstufe um neue Themen per E-Mail posten zu können." + email_in_min_trust: "Minimale Vertrauensstufe um neue Themen per E-Mail erstellen zu können." email_prefix: "Das [label] das für den Betreff von E-Mails genutzt wird. Standardwert ist 'title' wenn dies nicht gesetzt ist." - email_site_title: "Titel der Seite, der als Absender beim Versand von E-Mails verwendet wird. Wenn nicht angegeben wird 'title' verwendet. Verwende diese Einstellung, wenn 'title' spezielle Zeichen enthält, die im Absender-Feld einer Email nicht verwendet werden dürfen." + email_site_title: "Titel der Seite, der als Absender beim Versand von E-Mails verwendet wird. Wenn nicht angegeben wird 'title' verwendet. Verwende diese Einstellung, wenn 'title' spezielle Zeichen enthält, die im Absender-Feld einer E-Mail nicht verwendet werden dürfen." minimum_topics_similar: "Wie viele Themen existieren müssen, bevor beim Erstellen eines neuen Themas eine Liste ähnlicher Themen angezeigt wird." relative_date_duration: "Anzahl von Tagen während derer das Datum eines Beitrags relativ (7T) und nicht absolut (20. Feb) angegeben wird." delete_user_max_post_age: "Verhindere das Löschen von Benutzerkonten, deren erster Beiträg mehr als (x) Tage alt ist." @@ -907,13 +1017,17 @@ de: username_change_period: "Die Anzahl der Tage, die neu registrierte Benutzer Zeit haben, um ihren Benutzernamen zu ändern (0 verbietet Änderungen)." email_editable: "Erlaube Benutzern ihre E-Mail-Adresse nach der Registrierung zu ändern." logout_redirect: "Ziel für Weiterleitung nach einem Logout (z. B.: http://somesite.com/logout)" + allow_uploaded_avatars: "Benutzer können eigene Profilbilder hochladen." + allow_animated_avatars: "Benutzer können animierte Profilbilder (.gif) hochladen und benutzen. ACHTUNG: Rufe den Befehl `avatars:refresh rake` auf nachdem du diese Option verändert hast." allow_animated_thumbnails: "Generiert animierte Vorschaubilder von animierten gifs." default_avatars: "URLs zu Bildern, die als Standard-Avatare verwendet werden sollen, bis neue Nutzer ihren Avatar geändert haben." automatically_download_gravatars: "Avatare von Gravatar herunterladen, wenn ein Nutzer sich registriert oder seine E-Mail-Adresse ändert." digest_topics: "Maximale Anzahl von Themen, die in der E-Mail-Zusammenfassung angezeigt werden." digest_min_excerpt_length: "Minimale Länge des Auszugs aus einem Beitrag in der E-Mail-Zusammenfassung, in Zeichen." - suppress_digest_email_after_days: "Sende keine E-Mail-Zusammenfassungen an Benutzer, die die Seite seit mehr als (n) Tagen nicht mehr besucht haben." + delete_digest_email_after_days: "Keine Zusammenfassungen an Nutzer senden, welche für mehr als (n) Tage nicht auf der Seite aktiv waren." + digest_suppress_categories: "Diese Kategorien in Zusammenfassungs-Mails unterdrücken." disable_digest_emails: "E-Mail-Zusammenfassungen für alle Benutzer deaktivieren." + detect_custom_avatars: "Aktiviere diese Option, um zu überprüfen, ob Benutzer eigene Profilbilder hochgeladen haben." max_daily_gravatar_crawls: "Wie oft pro Tag Discourse höchstens auf Gravatar nach benuterdefinierten Avataren suchen soll." public_user_custom_fields: "Liste selbst definierter Profil-Felder, die öffentlich angezeigt werden dürfen." staff_user_custom_fields: "Liste selbst definierter Profil-Felder, die Mitarbeitern angezeigt werden dürfen." @@ -921,16 +1035,23 @@ de: allow_anonymous_posting: "Nutzern erlauben, in den anonymen Modus zu wechseln" anonymous_posting_min_trust_level: "Kleinste Vertrauensstufe, ab der das Schreiben anonymer Beiträge erlaubt ist" anonymous_account_duration_minutes: "Um die Anonymität der virtuellen anonymen Nutzer zu erhalten, erzeuge ein neues anonymes Konto alle N Minuten je Benutzer. Beispiel: wenn dies auf 600 gesetzt ist wird ein neues anonymes Konto erzeugt, wenn ein Benutzer in den anonymen Modus wechselt UND mindestens 600 Minuten seit der letzten anonymen Nachricht dieses Nutzers vergangen sind." + hide_user_profiles_from_public: "Deaktiviert Benutzerkarten, Nutzerprofile und das Benutzerverzeichnis für anonyme Nutzer." allow_profile_backgrounds: "Erlaube Benutzern Profilhintergründe hochzuladen." - sequential_replies_threshold: "Anzahl von Beiträgen, die ein Benutzer in einem Thema am Stück schreiben darf, bevor er eine Erinnerung bezüglich zu vieler aufeinanderfolgender Antworten erhält." + sequential_replies_threshold: "Anzahl an Beiträgen die ein Nutzer machen muss, um benachrichtigt zu werden, dass er zu viele aufeinanderfolgende Antworten schreibt." enable_mobile_theme: "Mobilgeräte verwenden eine mobile Darstellung mit der Möglichkeit zur vollständigen Seite zu wechseln. Deaktiviere diese Option, wenn du ein eigenes Full-Responsive-Stylesheet verwenden möchtest." dominating_topic_minimum_percent: "Anteil der Nachrichten eines Themas in Prozent, die ein einzelner Nutzer verfassen darf, bevor dieser Nutzer darauf hingewiesen wird, dass er dieses Thema dominiert." + disable_avatar_education_message: "Weise Benutzer nicht darauf hin, dass sie ihren Avatar ändern können" + daily_performance_report: "Analysiere die NGINX-Logs täglich. Poste anschließend eine Zusammenfassung als Beitrag, welcher nur für Moderatoren oder Administratoren zugänglich ist." suppress_uncategorized_badge: "Zeige kein Abzeichen für unkategorisierte Themen in der Themenliste." + permalink_normalizations: "Diesen regulären Ausdruck anwenden, bevor Permalinks verarbeitet werden; Beispiel: /(topic.*)\\?.*/\\1 wird Query-Strings von Themen-Routen entfernen. Format: regulärer Ausdruck + String, benutze \\1 usw. um Teilausdrücke zu verwenden" global_notice: "Zeigt allen Besuchern eine DRINGENDE NOTFALL-NACHRICHT als global sichtbares Banner an. Deaktiviert bei leerer Nachricht. (HTML ist erlaubt.)" disable_edit_notifications: "Unterdrückt Bearbeitungshinweise durch den System-Nutzer, wenn die 'download_remote_images_to_local' Einstellung aktiviert ist." + automatically_unpin_topics: "Themen automatisch loslösen, wenn ein Nutzer das Ende erreicht." + read_time_word_count: "Wörteranzahl pro Minute um die abgeschätzte Lesezeit zu berechnen." full_name_required: "Der voller Name wird für das Benutzerprofil benötigt." enable_names: "Zeigt den vollen Namen eines Benutzers auf dem Profil, der Benutzerkarte und in E-Mails an. Wenn deaktiviert wird der volle Name überall ausgeblendet." display_name_on_posts: "Zeige zusätzlich zum @Benutzernamen auch den vollen Namen des Benutzers bei seinen Beiträgen." + show_time_gap_days: "Wenn zwei Beiträge eine bestimmte Anzahl an Tagen auseinander liegen, zeige die Zeitdifferenz im Beitrag an." invites_per_page: "Anzahl an Einladungen, die auf der Benutzerseite angezeigt werden." short_progress_text_threshold: "Sobald die Anzahl an Beiträgen in einem Thema diese Nummer übersteigt, zeigt der Fortschrittsbalken nur noch die aktuelle Beitragsnummer. Dieser Wert sollte angepasst werden, falls die die Breite des Fortschrittsbalkens verändert wird." default_code_lang: "Standard Syntax Highlighting, dass auf GitHub Code Blöcke angewendet wird. (lang-auto, ruby, python etc.)" @@ -940,22 +1061,46 @@ de: feed_polling_enabled: "NUR WENN EINGEBETTET: Bestimmt, ob Inhalte eines RSS-/ATOM-Feeds als zusätzliche Beiträge dargestellt werden." feed_polling_url: "NUR WENN EINGEBETTET: URL des einzubettenden RSS-/ATOM-Feeds." embed_by_username: "Discourse-Benutzername des Benutzers, der die eingebetteten Themen erstellt." - embed_username_key_from_feed: "Schlüsse, um Discourse-Benutzernamen aus Feed zu ziehen." + embed_username_key_from_feed: "Schlüssel, um Discourse-Benutzernamen aus Feed zu ermitteln." embed_truncate: "Kürze die eingebetteten Beiträge" embed_post_limit: "Maximale Anzahl der Beiträge die eingebettet werden." + embed_username_required: "Der Benutzername ist für die Betragserstellung notwendig" embed_whitelist_selector: "CSS Selektor für Elemente, die in Einbettungen erlaubt sind." embed_blacklist_selector: "CSS Selektor für Elemente, die in Einbettungen entfernt werden." notify_about_flags_after: "Wenn es Markierungen gibt, die nicht nach dieser Anzahl von Stunden behandelt wurden, sende eine E-Mail an contact_email. Setze dies auf 0 um es zu deaktivieren." enable_cdn_js_debugging: "Ermöglicht die Anzeige vollständiger Fehler auf /logs, indem alle eingebetteten JavaScripts Cross-Origin Zugriffsberechtigungen erhalten." show_create_topics_notice: "Administratoren eine Warnmeldung anzeigen, wenn im Forum weniger als 5 öffentlich sichtbare Themen existieren." delete_drafts_older_than_n_days: Lösche Entwürfe, die mehr als (n) Tage alt sind. - vacuum_db_days: "Führe VACUUM FULL ANALYZE aus, um nach Migrationen Speicher in der Datenbank zurückzugewinnen (zum Deaktivieren auf 0 setzen)" + vacuum_db_days: "Führe VACUUM ANALYZE aus, um Datenbankspeicher nach Migrationen zurückzuerhalten (0 um zu deaktivieren)" prevent_anons_from_downloading_files: "Nichtangemeldeten Benutzern das Herunterladen von Anhängen verbieten. WARNUNG: dies verhindert auch das Herunterladen jeglicher Ressourcen für Website-Anpassungen, die als Anhänge gespeichert wurden." + slug_generation_method: "Gib eine Methode an, wie Kürzel in URLs generiert werden sollen. 'encoded' verwendet einen Prozent-Encodierten String, bei 'none' wird kein Kürzel verwendet." enable_emoji: "Aktiviere emoji" - emoji_set: "Wie magst du dein emoji?" + emoji_set: "Welche Emoji sollen es sein?" enforce_square_emoji: "Emojis immer mit quadratischem Seitenverhältnis darstellen." - approve_post_count: "Anzahl Beiträge eines neuen Nutzers, die genehmigt werden müssen" + approve_post_count: "Anzahl der Beiträge eines neuen Nutzers oder Anwärters, die genehmigt werden müssen" approve_unless_trust_level: "Beiträge von Nutzern unterhalb dieser Vertrauensstufe müssen genehmigt werden" + notify_about_queued_posts_after: "Wenn es Beiträge gibt, welche seit mehreren Stunden auf ihre Freischaltung warten, sende eine E-Mail an die Kontaktadresse. Setze diesen Wert auf 0 um das zu deaktivieren." + default_email_digest_frequency: "Lege fest, wie oft die Benutzer eine Zusammenfassung per E-Mail erhalten." + default_include_tl0_in_digests: "Beiträge von neuen Benutzern standardmäßig in E-Mail mit Neuigkeiten einfügen. Nutzer können dies in Ihren Einstellungen anpassen." + default_email_private_messages: "Sende einem Benutzer standardmäßig eine E-Mail, wenn dieser eine Nachricht von einem anderen Benutzer erhält." + default_email_direct: "Aktiviere standardmäßig, dass eine E-Mail versendet wird, sobald ein Benutzer einen anderen Benutzer zitiert / einem anderen Benutzer antwortet / oder einen anderen Benutzer erwähnt bzw. einlädt." + default_email_mailing_list_mode: "Sende standardmäßig eine E-Mail für jeden neuen Beitrag." + disable_mailing_list_mode: "Verhindere, dass Nutzer den Mailinglisten-Modus aktivieren." + default_email_always: "Aktiviert den E-Mail Versand an Nutzer, auch wenn diese gerade auf der Webseite aktiv sind. " + default_email_previous_replies: "Standardmäßig vorhergehende Antworten in E-Mails einschließen." + default_email_in_reply_to: "Standardmäßig einen Anriss des Beitrags, auf den geantwortet wurde, in E-Mails mit einschließen." + default_other_new_topic_duration_minutes: "Zeit wie lange ein Thema als \"Neu\" markiert werden soll. " + default_other_auto_track_topics_after_msecs: "Zeit bevor ein Thema automatisch verfolg wird. " + default_other_external_links_in_new_tab: "Öffne externe Links standardmäßig in einem neuen Tab." + default_other_enable_quoting: "Aktiviere standardmäßig die Zitat-Antwort Funktion für hervorgehobenen Text." + default_other_dynamic_favicon: "Zeige standardmäßig die Anzahl von neuen und geänderten Beiträgen im Browser-Symbol an." + default_other_disable_jump_reply: "Springe standardmäßig nicht zum neusten Beitrag des Users, wenn dieser geantwortet hat." + default_other_edit_history_public: "Zeige standardmäßig die Beitragshistorie öffentlich an." + default_other_like_notification_frequency: "Nutzer standardmäßig bei Likes benachrichtigen." + default_topics_automatic_unpin: "Standardmäßig Themen automatisch loslösen, wenn ein Nutzer das Ende erreicht." + default_categories_watching: "Liste der standardmäßig beobachteten Kategorien." + default_categories_tracking: "Liste der standardmäßig gefolgten Kategorien." + default_categories_muted: "Liste der standardmäßig stummgeschalteten Kategorien." errors: invalid_email: "Ungültige E-Mail-Adresse" invalid_username: "Es gibt keinen Benutzer mit diesem Nutzernamen." @@ -970,7 +1115,12 @@ de: invalid_string_min: "Muss mindestens %{min} Zeichen lang sein." invalid_string_max: "Darf nicht länger als %{max} Zeichen sein." invalid_reply_by_email_address: "Adresse muss '%{reply_key}' enthalten und sich von der Benachrichtigungs E-Mail-Adresse unterscheiden." + pop3_polling_host_is_empty: "Du musst einen 'POP3 Abfrage Host' definieren, um POP3 Abfragen zu aktivieren." + pop3_polling_username_is_empty: "Du musst einen 'POP3 Abfrage Nutzername' definieren, um POP3 Abfragen zu aktivieren." + pop3_polling_password_is_empty: "Du must ein 'POP3 Abfrage Passwort' definieren, um POP3 Abfragen zu aktivieren." + pop3_polling_authentication_failed: "POP3 Authentifizierung ist fehlgeschlagen. Bitte überprüfe die POP3 Anmeldedaten." notification_types: + group_mentioned: "%{group_name} wurde auf %{link} erwähnt" mentioned: "%{display_username} hat Dich in %{link} erwähnt." liked: "%{display_username} gefällt deinen Beitrag in %{link}." replied: "%{display_username} hat auf deinen Beitrag in %{link} geantwortet." @@ -980,7 +1130,6 @@ de: moved_post: "%{display_username} hat deinen Beitrag nach %{link} verschoben." private_message: "%{display_username} hat Dir eine Nachricht geschickt: %{link}" invited_to_private_message: "%{display_username} hat dich zu einer Unterhaltung eingeladen: %{link}" - invited_to_topic: "%{display_username} hat dich in ein Thema eingeladen: %{link}" invitee_accepted: "%{display_username} hat deine Einladung angenommen." linked: "%{display_username} hat dich auf %{link} verlinkt" granted_badge: "Sie haben %{link} verdient" @@ -990,11 +1139,6 @@ de: category: 'Kategorien' topic: 'Ergebnisse' user: 'Benutzer' - sso: - not_found: "Konto kann nicht gefunden oder erstellt werden, kontaktiere den Administrator." - account_not_approved: "Das Konto wartet auf seine Überprüfung. Du bekommst eine E-Mail Benachrichtigung, wenn es überprüft wurde." - unknown_error: "Die Informationen konnten nicht aktualisiert werden, kontaktiere den Administrator." - timeout_expired: "Zeitüberschreitung beim Login. Bitte versuche dich erneut einzuloggen." original_poster: "Autor des ersten Beitrags" most_posts: "Autor der meisten Beiträge" most_recent_poster: "Autor des jüngsten Beitrags" @@ -1006,6 +1150,9 @@ de: new_topic_moderator_post: one: "Ein Beitrag wurde in ein neues Thema verschoben: %{topic_link}" other: "%{count} Beiträge wurden in ein neues Thema verschoben: %{topic_link}" + existing_topic_moderator_post: + one: "Ein Beitrag wurde in ein neues Thema verschoben: %{topic_link}" + other: "%{count} Beiträge wurden in ein neues Thema verschoben: %{topic_link}" change_owner: post_revision_text: "Eigentümer geändert von %{old_user} zu %{new_user}" deleted_user: "ein gelöschter Benutzer" @@ -1046,7 +1193,7 @@ de: visible_disabled: "Das Thema ist jetzt ungelistet. Es wird nicht mehr in der Themenliste angezeigt. Dieses Thema kann nur mit einem direkten Link erreicht werden." login: not_approved: "Dein Benutzerkonto wurde noch nicht genehmigt. Du wirst per E-Mail benachrichtigt, sobald dies geschehen ist." - incorrect_username_email_or_password: "Benutzername, Mailadresse oder Passwort falsch" + incorrect_username_email_or_password: "Benutzername, E-Mail-Adresse oder Passwort falsch" wait_approval: "Danke fürs Registrieren. Wir werden dich benachrichtigen, sobald dein Benutzerkonto freigeschaltet wurde." active: "Dein Konto ist nun freigeschaltet und einsatzbereit." activate_email: "
Fast fertig! Eine E-Mail mit einem Aktivierungscode wurde an Deine E-Mail-Adresse %{email} gesendet.
Dort findest du die Anleitung, um deinen Zugang zu aktivieren.
Solltest du die Mail nicht vorfinden, kontrolliere bitte auch den Spamverdachts-Ordner. Gegebenenfalls kannst du dir von hier eine weitere Aktivierungs-E-Mail zusenden lassen.
" @@ -1062,9 +1209,11 @@ de: omniauth_error_unknown: "Während des Anmeldens ist etwas schief gelaufen, bitte versuche es noch einmal." new_registrations_disabled: "Leider können derzeit keine neuen Konten registriert werden." password_too_long: "Passwörter sind beschränkt auf 200 Zeichen." + email_too_long: "Die von dir eingegebene E-Mail-Adresse ist zu lang. E-Mail-Adressen dürfen maximal 254 Zeichen lang sein und Domain-Namen maximal 253 Zeichen." reserved_username: "Der Benutzername ist nicht erlaubt." missing_user_field: "Sie haben nicht alle Benutzerfelder ausgefüllt" close_window: "Authentifizierung abgeschlossen. Schließe das Fenster um fortzufahren." + already_logged_in: "Hoppla, es sieht so aus als ob du versuchst die Einladung für einen anderen Benutzer zu akzeptieren. Wenn du nicht %{current_user} bist, melde dich bitte ab und versuch es erneut." user: no_accounts_associated: "Es sind keine Konten zugeordnet" username: @@ -1073,11 +1222,28 @@ de: characters: "darf nur aus Zahlen und Buchstaben bestehen" unique: "muss eindeutig sein" blank: "muss angegeben werden" + must_not_contain_two_special_chars_in_seq: "muss keine Reihenfolge von 2 oder mehr Sonderzeichen (.-_) haben" + must_not_end_with_confusing_suffix: "Darf nicht mit einem Suffix wie json, png, etc. enden." email: - not_allowed: "ist für diesen Mailprovider nicht erlaubt. Bitte verwende eine andere Mailadresse." + not_allowed: "ist für diesen E-Mail-Provider nicht erlaubt. Bitte verwende eine andere E-Mail-Adresse." blocked: "ist nicht erlaubt." ip_address: - blocked: "Von Deiner IP Adresse aus ist es nicht erlaub sich zu registrieren." + blocked: "Neue Registrierungen sind von deiner IP-Adresse aus nicht erlaubt." + max_new_accounts_per_registration_ip: "Weitere Registrierungen sind von deiner IP-Adresse aus nicht gestattet (limit erreicht). Kontaktiere einen Administrator mit dem Problem damit er dir helfen kann." + flags_reminder: + subject_template: + one: "Eine Markierung wartet auf Bearbeitung" + other: "%{count} Markierungen warten auf Bearbeitung" + unsubscribe_mailer: + subject_template: "Bestätige, dass du nicht länger E-Mail-Updates von %{site_title} erhalten möchtest" + text_body_template: | + Jemand (wahrscheinlich du?) hat angefragt, nicht länger E-Mail-Updates von %{site_domain_name} auf dieser Adresse zu erhalten. + Wenn du nicht länger Benachrichtigungen erhalten möchtest, dann klicke bitte diesen Link: + + %{confirm_unsubscribe_link} + + + Wenn du weiterhin E-Mail-Updates erhalten möchtest, dann kannst du diese E-Mail ignorieren. invite_mailer: subject_template: "%{invitee_name} hat dich zum Thema '%{topic_title}' auf %{site_domain_name} eingeladen" text_body_template: | @@ -1110,26 +1276,32 @@ de: Dies ist eine Einladung von einem vertrauenswürdigen Benutzer. Du brauchst dich daher nicht anzumelden. invite_password_instructions: subject_template: "Lege ein Passwort für dein %{site_name}-Konto fest" + text_body_template: | + Schön, dass du die Einladung zu %{site_name} angenommen hast -- Willkommen! + + Klicke hier um jetzt dein Passwort festzulegen: + %{base_url}/users/password-reset/%{email_token} + + (Wenn der Link abgelaufen ist, wähle "Passwort vergessen" aus, wenn du dich mit deiner E-Mail-Adresse einloggen möchtest.) test_mailer: - subject_template: "[%{site_name}] Test der Mailzustellbarkeit" + subject_template: "[%{site_name}] Test der E-Mail-Zustellbarkeit" new_version_mailer: subject_template: "[%{site_name}] Neue Discourse Version, Update verfügbar" new_version_mailer_with_notes: subject_template: "[%{site_name}] Update verfügbar" - flags_reminder: - flags_were_submitted: - one: "Folgende Markierungen wurden währen der letzten Stunden vorgenommen." - other: "Folgende Markierungen wurden währen der letzten %{count} Stunden vorgenommen." - please_review: "Bitte überprüfe sie." - post_number: "Beitrag" - how_to_disable: 'Die Benachrichtungen für markierte Beiträge kann deaktiviert oder in ihrer Häufigkeit geändert werden mittels des Wertes unter "notify about flags after".' + queued_posts_reminder: subject_template: - one: "Eine Markierung wartet auf Bearbeitung" - other: "%{count} Markierungen warten auf Bearbeitung" + one: "[%{site_name}] %{count} auf Freischaltung wartender Beitrag." + other: "[%{site_name}] %{count} auf Freischaltung wartende Beiträge." + text_body_template: | + Hallo, + + es gibt ein paar Beiträge von Nutzern, welche auf deine Freischaltung warten. + [Du kannst sie hier Freischalten oder Ablehnen](%{base_url}/queued-posts). flag_reasons: off_topic: "Dein Beitrag wurde als **Thema verfehlt** gemeldet: Die Community glaubt, dass er nicht zum Thema passt, wie es durch den Titel und den ersten Beitrag definiert wurde." inappropriate: "Dein Beitrag wurde als **unangemessen** gemeldet: die Community glaubt, dass er anstößig oder beleidigend ist oder einen Verstoß gegen [die Community Richtlinien](/guidelines) darstellt." - spam: "Dein Beitrag wurde als **Spam** geflaggt: Die Community denkt, dass es sich um Werbung handelt und nicht nützlich oder für das Diskussionsthema relevant ist." + spam: "Dein Beitrag wurde als **Spam** gemeldet: Die Community denkt, dass es sich um Werbung handelt, zu werblich in seiner Art und nicht nützlich oder für das Diskussionsthema relevant ist." notify_moderators: "Die Community denkt, dass etwas an deinem Beitrag das Eingreifen eines Moderator erfordert." flags_dispositions: agreed: "Danke, dass du uns Bescheid gegeben hast. Wir sind auch der Meinung, dass es ein Problem gibt und sehen uns das an." @@ -1137,9 +1309,24 @@ de: disagreed: "Danke für deine Meldung. Wir sehen uns das an." deferred: "Danke für deine Meldung. Wir sehen uns das an." deferred_and_deleted: "Danke für deine Meldung. Wir haben den Beitrag entfernt." + temporarily_closed_due_to_flags: "Dieses Thema ist vorrübergehend geschlossen. Mehrere User haben dieses Thema gemeldet. " system_messages: post_hidden: subject_template: "Beitrag wegen Meldungen aus der Community versteckt" + text_body_template: | + Hallo, + + dies ist eine automatische Nachricht von %{site_name}, um dich darüber zu informieren, dass dein Beitrag verborgen worden ist. + + %{base_url}%{url} + + %{flag_reason} + + Mehrere Mitglieder der Gemeinschaft haben deinen Beitrag gemeldet, bevor er verborgen wurde. Du solltest also deinen Beitrag gemäß deren Rückmeldungen überarbeiten. **Du kannst deinen Beitrag nach %{edit_delay} Minuten ändern; danach wird er automatisch wieder erscheinen.** + + Falls dein Beitrag jedoch ein weiteres Mal von der Gemeinschaft gemeldet und verborgen wird, bleibt der Beitrag verborgen, bis ein Mitglied des Teams dies ändert – in diesem Fall können auch weitere Konsequenzen folgen, bis hin zu einer möglichen Sperrung deines Accounts. + + Für weitere Orientierungshilfe wirf bitte einen Blick in unsere [Community-Richtlinien](%{base_url}/guidelines). welcome_user: subject_template: "Willkommen bei %{site_name}!" text_body_template: | @@ -1176,6 +1363,7 @@ de: [prefs]: %{user_preferences_url} backup_succeeded: subject_template: "Sicherung erfolgreich abgeschlossen" + text_body_template: "Backup erfolgreich erstellt.\nBesuche [admin > backup section](%{base_url}/admin/backups) um das neue Backup herunterzuladen." backup_failed: subject_template: "Sicherung fehlgeschlagen" text_body_template: | @@ -1201,7 +1389,7 @@ de: ``` bulk_invite_succeeded: subject_template: "Masseneinladung von Benutzern erfolgreich verarbeitet" - text_body_template: "Deine Masseneinladung von Benutzern wurde erfolgreich verarbeitet, insgesamt wurden %{sent} Einladungen E-per Mail verschickt." + text_body_template: "Deine Masseneinladung von Benutzern wurde erfolgreich verarbeitet, insgesamt wurden %{sent} Einladungen per E-Mail verschickt." bulk_invite_failed: subject_template: "Bei der Verarbeitung der Masseneinladung von Benutzern sind Fehler aufgetreten" text_body_template: | @@ -1223,67 +1411,82 @@ de: csv_export_failed: subject_template: "Datenexport fehlgeschlagen" text_body_template: "Entschuldigung, beim Exportieren deiner Daten trat ein Fehler auf. Bitte kontaktiere einen Mitarbeiter oder sieh in die Logs." - email_reject_trust_level: - subject_template: "[%{site_name}] E-Mail-Problem -- Ungenügende Vertrauensstufe" + email_reject_insufficient_trust_level: + subject_template: "[%{site_name}] E-Mail-Problem -- Unzureichende Vertrauensstufe" text_body_template: | - Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (Titel: %{former_title}) hat nicht funktioniert. + Es tut uns leid, aber das Senden deiner E-Mail-Nachricht an %{destination} (betitelt mit %{former_title}) hat nicht funktioniert. - Du hast nicht die notwendige Vertrauensstufe, um neue Themen über diese E-Mail-Adresse zu erstellen. Wenn du glaubst, dass das ein Irrtum ist, dann kontaktiere einen Mitarbeiter. + Dein Benutzerkonto hat nicht die benötigte Vertrauensstufe, um neue Themen an diese E-Mail-Adresse zu senden. Wenn du glaubst, dass dies ein Fehler ist, dann kontaktiere bitte einen Mitarbeiter. + email_reject_inactive_user: + subject_template: "[%{site_name}] E-Mail-Problem -- Inaktiver Nutzer" + text_body_template: | + Es tut uns leid, aber das Senden deiner E-Mail-Nachricht an %{destination} (betitelt mit %{former_title}) hat nicht funktioniert. + + Dein mit dieser E-Mail-Adresse assoziiertes Benutzerkonto ist nicht aktiviert. Bitte aktiviere dein Konto bevor du E-Mails sendest. + email_reject_reply_user_not_matching: + subject_template: "[%{site_name}] E-Mail-Problem -- Antwortender Nutzer stimmt nicht überein" + text_body_template: | + Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (mit dem Titel %{former_title}) hat nicht funktioniert. + + Deine Antwort wurde von einer anderen E-Mail-Adresse versandt als wir erwartet haben, weshalb wir nicht sicher wissen ob das die gleiche Person ist. Probiere eine andere Absende-Adresse oder wende dich an einen Mitarbeiter. email_reject_no_account: subject_template: "[%{site_name}] E-Mail-Problem -- Unbekanntes Konto" text_body_template: | - Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (Titel: %{former_title}) konnte nicht verarbeitet werden! + Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (mit dem Titel %{former_title}) hat nicht funktioniert. - Es ist kein Konto mit dieser E-Mail-Adresse bekannt. Versuche die Nachricht von einer anderen, im Forum registrierten E-Mail-Adresse zu verschicken oder kontaktiere einen Mitarbeiter. + Wir konnten keinen Account finden, der zu deiner E-Mail-Adresse passt. Probiere eine andere Absende-Adresse oder wende dich an einen Mitarbeiter. email_reject_empty: subject_template: "[%{site_name}] E-Mail-Problem -- Kein Inhalt" + text_body_template: | + Tut uns leid, aber deine E-Mail an %{destination} mit dem Betreff (titled %{former_title}) hat nicht funktioniert. + + Wir haben in deiner E-Mail keinen Inhalt feststellen können. + + Wenn du diese E-Mail bekommst, obwohl deine E-Mail Inhalt enthalten hat, versuche es erneut mit weniger Formatierung. email_reject_parsing: subject_template: "[%{site_name}] E-Mail-Problem -- Inhalt nicht erkannt" + text_body_template: | + Entschuldigung, aber deine E-Mail-Nachricht an %{destination} mit dem Titel (titled %{former_title}) konnte nicht zugestellt werden. + + Wir konnten keinen Inhalt in deiner E-Mail feststellen. **Versichere dich, dass du den Inhalt oberhalb der erhaltenen E-Mail eingegeben hast** -- Eingebettete Antworten können wir nicht verarbeiten. email_reject_invalid_access: subject_template: "[%{site_name}] E-Mail-Problem -- Nicht erlaubt" text_body_template: | Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (Titel: %{former_title}) hat nicht funktioniert. Dein Nutzerkonto verfügt nicht über die nötigen Rechte, um in dieser Kategorie ein neues Thema anzulegen. Wenn du glaubst, dass dies ein Irrtum ist, nimm bitte Kontakt mit einem unserer Mitarbeiter auf. - email_reject_post_error: - subject_template: "[%{site_name}] E-Mail-Problem -- Fehler beim Posten" + email_reject_strangers_not_allowed: + subject_template: "[%{site_name}] E-Mail-Problem -- Zugriff nicht erlaubt" text_body_template: | - Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (Titel: %{former_title}) hat nicht funktioniert. + Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (mit dem Titel %{former_title}) hat nicht funktioniert. - Mögliche Gründe sind: komplexe Formatierung, Nachricht zu lang oder zu kurz. Bitte versuche es erneut oder erstelle deinen Beitrag auf der Website, wenn der Fehler weiterhin auftritt. - email_reject_post_error_specified: - subject_template: "[%{site_name}] E-Mail-Problem -- Fehler beim Posten" + Die Kategorie, an die du diese E-Mail gesendet hast, erlaubt nur Antworten von Nutzern mit gültigem Konto und bekannter E-Mail-Adresse. Wenn du glaubst, dass dies ein Fehler ist, wende dich bitte an einen Mitarbeiter. + email_reject_invalid_post: + subject_template: "[%{site_name}] E-Mail-Problem -- Ungültiger Beitrag" text_body_template: | - Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (Titel: %{former_title}) hat nicht funktioniert. + Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (mit dem Titel %{former_title}) hat nicht funktioniert. - Grund: - - %{post_error} - - Bitte versuch es erneut, wenn du das Problem beheben kannst. + Mögliche Gründe sind komplizierte Formatierung und zu lange oder kurze Nachrichten. Bitte versuche es erneut oder schreibe deinen Beitrag über die Website. + email_reject_invalid_post_specified: + subject_template: "[%{site_name}] E-Mail-Problem -- Ungültiger Beitrag" email_reject_reply_key: subject_template: "[%{site_name}] E-Mail-Problem -- Unbekannter Antwort-Schlüssel" - text_body_template: | - Es tut uns leid, aber die E-Mail-Nachricht an %{destination} (Titel: „%{former_title}“) hat nicht geklappt. - Der angegebene Antwort-Schlüssel ist ungültig oder unbekannt. Wir wissen daher nicht auf welchen Beitrag diese E-Mail antwortet. Kontaktiere einen Mitarbeiter. - email_reject_destination: - subject_template: "[%{site_name}] E-Mail Problem -- Unbekannte An:-Adresse" + email_reject_topic_not_found: + subject_template: "[%{site_name}] E-Mail Problem -- Thema nicht gefunden" text_body_template: | Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (Titel: %{former_title}) gab es ein Problem. - Keine der Empfänger-Adressen ist uns bekannt. Bitte stelle sicher, dass die Ziel-Adresse in einer "An:" Zeile steht (nicht "Cc:" oder "Bcc:") und dass du die E-Mail an die richtige Adresse schickst, die dir von unseren Mitarbeitern genannt wurde. - email_reject_topic_not_found: - subject_template: "[%{site_name}] E-Mail Problem -- Thema nicht gefunden" + Das Thema existiert nicht mehr -- vielleicht wurde es gelöscht? Wenn du glaubst, dass dies ein Irrtum ist, nimm bitte Kontakt mit einem unserer Mitarbeiter auf. email_reject_topic_closed: subject_template: "[%{site_name}] E-Mail Problem -- Thema geschlossen" + text_body_template: | + Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (Titel: %{former_title}) gab es ein Problem. + + Das Thema ist uns nicht bekannt oder es wurde gelöscht bzw. geschlossen. Wenn du glaubst, dass dies ein Irrtum ist, nimm bitte Kontakt mit einem unserer Mitarbeiter auf. email_reject_auto_generated: - subject_template: "[%{site_name}] E-Mail Problem -- Automatisch erzeugte Antwort" + subject_template: "[%{site_name}] E-Mail-Problem -- Automatisch erzeugte Antwort" email_error_notification: subject_template: "[%{site_name}] E-Mail-Problem -- POP-Authentifizierungsfehler" - text_body_template: | - Es gab einen Authentifizierungsfehler beim Abrufen von Mails vom POP-Server. - - Bitte stelle sicher, dass du die POP-Zugangsdaten in [den Seiteneinstellungen](%{base_url}/admin/site_settings/category/email) korrekt konfiguriert hast. too_many_spam_flags: subject_template: "Neues Benutzerkonto gesperrt" text_body_template: | @@ -1296,32 +1499,10 @@ de: Weitere Hilfe findest du in unserer [Richtlinien](%{base_url}/guidelines). blocked_by_staff: subject_template: "Benutzerkonto gesperrt" - text_body_template: | - Hallo, - - dies ist eine automatisch erzeugte Nachricht von %{site_name}, um dich darüber zu informieren, dass dein Benutzerkonto durch einen Mitarbeiter gesperrt wurde. - - Weitere Informationen hierzu findest du in unseren [Richtlinien](%{base_url}/guidelines). user_automatically_blocked: subject_template: "Neuer Benutzer %{username} wegen Gemeinschaftsrichtlinien blockiert." - text_body_template: | - Dies ist eine automatische Nachricht. - - Der neue Benutzer [%{username}](%{base_url}%{user_url}) wurde automatisch gesperrt, da mehrere Benutzer die Beiträge von %{username} gemeldet haben. - - Bitte [überprüfe die Meldungen](%{base_url}/admin/flags). Falls %{username} fälschlicherweise gesperrt wurde, drücke den 'Entsperren'-Knopf auf der [Administrationsseite für den Benutzer](%{base_url}%{user_url}). - - Der Schwellwert kann über die Seiteneinstellung `block_new_user` angepasst werden. spam_post_blocked: subject_template: "Beiträge des neuen Benutzers ${username} wegen mehrfacher Verlinkung blockiert" - text_body_template: | - Dies ist eine automatische Nachricht. - - Der neue Benutzer [%{username}](%{base_url}%{user_url}) hat versucht mehrere Beiträge mit Links zu %{domains} zu erstellen. Diese Beiträge wurden aber blockiert, um Spam zu vermeiden. Der Benutzer kann immer noch neue Beiträge erstellen, die nicht auf %{domains} verlinken. - - Bitte [überprüfe den Benutzer](%{base_url}%{user_url}). - - Dieses Verhalten kann durch die Seiteneinstellungen `newuser_spam_host_threshold` und `white_listed_spam_host_domains` geändert werden. unblocked: subject_template: "Blockierung des Kontos aufgehoben" text_body_template: | @@ -1341,91 +1522,32 @@ de: download_remote_images_disabled: subject_template: "Download von externen Bildern deaktiviert" text_body_template: "Die `download_remote_images_to_local` Einstellung wurde deaktiviert, da das Speicherplatz Limit von `download_remote_images_threshold` erreicht wurde." + unsubscribe_link: | + Um keine Benachrichtigungen mehr zu diesem Thema zu erhalten, bitte [hier klicken](%{unsubscribe_url}). Du kannst den Empfang von Benachrichtigungen per E-Mail auch in deinen [Profil-Eigenschaften](%{user_preferences_url}) deaktivieren + unsubscribe_via_email_link: | + oder [hier klicken](mailto:reply@%{hostname}?subject=unsubscribe) um per E-Mail abzubestellen. subject_re: "Re: " subject_pm: "[PN]" user_notifications: previous_discussion: "Vorangehende Antworten" unsubscribe: - title: "Mails Abbestellen" - description: "Nicht interessiert an diesen Mails? Kein Problem! Klicke unten um Dich abzumelden:" - reply_by_email: "Um zu Antworten, antworte auf diese Email oder besuche %{base_url}%{url} in deinem Browser." - visit_link_to_respond: "Um zu Antworten, besuche %{base_url}%{url} in deinem Browser." + title: "Abbestellen" + description: "Nicht interessiert an diesen E.Mails? Kein Problem! Klicke unten um dich abzumelden:" posted_by: "Erstellt von %{username} am %{post_date}" user_invited_to_private_message_pm: subject_template: "[%{site_name}] %{username} hat dich zur Unterhaltung '%{topic_title}' eingeladen" - text_body_template: |2 - - %{username} hat dich zur Unterhaltung - - > **%{topic_title}** - > - > %{topic_excerpt} - - bei - - > %{site_title} -- %{site_description} - - eingeladen. Bitte besuche diesen Link um die Unterhaltung zu lesen: %{base_url}%{url} - user_invited_to_topic: - subject_template: "[%{site_name}] %{username} hat dich zum Thema '%{topic_title}' eingeladen" - text_body_template: |2 - - %{username} hat dich zum Thema - - > **%{topic_title}** - > - > %{topic_excerpt} - - bei - - > %{site_title} -- %{site_description} - - eingeladen. Bitte besuche diesen Link um das Thema zu lesen: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{username} hat auf deinen Beitrag '%{topic_title}' geantwortet" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_quoted: subject_template: "[%{site_name}] %{username} hat Dich in '%{topic_title}' zitiert" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_mentioned: subject_template: "[%{site_name}] %{username} hat Dich in '%{topic_title}' erwähnt" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} + user_group_mentioned: + subject_template: "[%{site_name}] %{topic_title}" user_posted: subject_template: "[%{site_name}] %{subject_prefix}%{username} hat auf '%{topic_title}' geantwortet" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_posted_pm: subject_template: "[%{site_name}] [PM] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} digest: why: "Eine kurze Zusammenfassung von %{site_link} seit deinem letzten Besuch am %{last_seen_at}" subject_template: "[%{site_name}] Übersicht" @@ -1458,6 +1580,11 @@ de: %{base_url}/users/password-reset/%{email_token} admin_login: subject_template: "[%{site_name}] Anmeldung" + text_body_template: | + Jemand hat versucht sich in deinen Account auf [%{site_name}](%{base_url}) einzuloggen. + Wenn dieser Loginversuch nicht von dir stammt, kannst du diese E-Mail ignorieren. + Klicke hier, um dich einzuloggen: + %{base_url}/users/admin-login/%{email_token} account_created: subject_template: "[%{site_name}] Dein neues Konto" text_body_template: | @@ -1465,12 +1592,6 @@ de: Klicke auf den folgenden Link, um ein Passwort für dein neues Konto festzulegen: %{base_url}/users/password-reset/%{email_token} - authorize_email: - subject_template: "[%{site_name}] Bestätige deine neue Mailadresse" - text_body_template: | - Um deine Mailadresse auf %{site_name} zu bestätigen, klicke auf den folgenden Link: - - %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "You've been approved on %{site_name}!" text_body_template: | @@ -1491,6 +1612,7 @@ de: (Wenn du als neuer Benutzer unter vier Augen mit einem unserer [Mitarbeiter](%{base_url}/about) reden möchtest, antworte einfach auf diese Nachricht.) signup: + subject_template: "[%{site_name}] Bestätige deinen neuen Account" text_body_template: | Willkommen bei %{site_name}! @@ -1499,7 +1621,6 @@ de: Wenn dieser Link nicht klickbar ist, kopiere ihn in die Adresszeile deines Web-Browsers. page_not_found: - title: "Die angeforderte Seite existiert nicht oder ist privat." popular_topics: "Beliebt" recent_topics: "Aktuell" see_more: "Mehr" @@ -1518,6 +1639,7 @@ de: unauthorized: "Entschuldigung, die Datei die du hochladen möchtest ist nicht erlaubt (erlaubte Dateiendungen sind: %{authorized_extensions})." pasted_image_filename: "Hinzugefügtes Bild" store_failure: "Hochladen von #%{upload_id} für Benutzer #%{user_id} ist fehlgeschlagen." + file_missing: "Bitte wähle eine Datei zum Hochladen aus. " attachments: too_large: "Entschuldigung, die Datei die du hochladen möchtest, ist zu groß (maximale Dateigröße ist %{max_size_kb}KB)." images: @@ -1532,11 +1654,12 @@ de: suspended_not_pm: "Benutzer ist gesperrt, keine Nachricht" seen_recently: "Benutzer war kürzlich online" post_not_found: "Kann Beitrag mit ID %{post_id} nicht finden" - notification_already_read: "Die Benachrichtigung dieser Mail wurde bereits gelesen" + notification_already_read: "Die Benachrichtigung zu dieser E-Mail wurde bereits gelesen" topic_nil: "post.topic is nil" post_deleted: "Beitrag wurde vom Autor entfernt" user_suspended: "Benutzer wurde gesperrt" already_read: "Benutzer hat diesen Beitrag bereits gelesen" + exceeded_limit: "max_emails_per_day_per_user überschritten" message_blank: "Nachricht ist leer" message_to_blank: "message.to ist leer" text_part_body_blank: "text_part.body ist leer" @@ -1558,8 +1681,29 @@ de: title: "Nutzungsbedingungen" privacy_topic: title: "Datenschutzrichtlinie" + badges: + basic_user: + description: Ermöglicht das Nutzen aller wesentlichen Community-Funktionen + member: + description: Ermöglicht das Versenden von Einladungen, Gruppen-Nachrichten, mehr Likes + regular: + description: Ermöglicht verschieben und umbenennen von Themen, veröffentlichen verfolgbarer Links, Aktivierung der Wiki-Funktion, mehr Likes + leader: + description: Ermöglicht bearbeiten aller Beiträge, anheften, schließen, archivieren, aufteilen und zusammenfügen von Themen, mehr Likes admin_login: success: "E-Mail gesendet" error: "Fehler!" email_input: "Administrator-E-Mail" submit_button: "E-Mail senden" + discourse_hub: + access_token_problem: "Gib das hier an einen Administrator weiter: Bitte aktualisieren Sie die Seiteneinstellungen für den korrekten discourse_org_access_key." + performance_report: + initial_post_raw: Dieser Beitrag enthält tägliche performance Berichte deiner Seite. + initial_topic_title: Berichte zur Webseitengeschwindigkeit + topic_invite: + user_exists: "Entschuldige, dieser Benutzer ist bereits eingeladen worden. Du kannst einen Nutzer nur einmal zu einem Thema einladen." + time: + <<: *datetime_formats + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index dfad400495d..596f22cf024 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -20,17 +20,21 @@ en: short_date: "D MMM, YYYY" long_date: "MMMM D, YYYY h:mma" - datetime: &datetime - month_names: - [~, January, February, March, April, May, June, July, August, September, October, November, December] + datetime_formats: &datetime_formats formats: + # Format directives: http://ruby-doc.org/core-2.2.0/Time.html#method-i-strftime short: "%m-%d-%Y" + # Format directives: http://ruby-doc.org/core-2.2.0/Time.html#method-i-strftime short_no_year: "%B %-d" + # Format directives: http://ruby-doc.org/core-2.2.0/Time.html#method-i-strftime date_only: "%B %-d, %Y" date: - <<: *datetime + # Do not remove the brackets and commas and do not translate the first month name. It should be "null". + month_names: + [~, January, February, March, April, May, June, July, August, September, October, November, December] + <<: *datetime_formats time: - <<: *datetime + <<: *datetime_formats title: "Discourse" topics: "Topics" @@ -39,13 +43,28 @@ en: powered_by_html: 'Powered by Discourse, best viewed with JavaScript enabled' log_in: "Log In" - via: "%{username} via %{site_name}" - is_reserved: "is reserved" - purge_reason: "Automatically deleted as abandoned, unactivated account" disable_remote_images_download_reason: "Remote images download was disabled because there wasn't enough disk space available." anonymous: "Anonymous" + emails: + incoming: + default_subject: "Incoming email from %{email}" + show_trimmed_content: "Show trimmed content" + errors: + empty_email_error: "Happens when the raw mail we received was blank." + no_message_id_error: "Happens when the mail has no 'Message-Id' header." + auto_generated_email_error: "Happens when the 'precedence' header is set to: list, junk, bulk or auto_reply, or when any other header contains: auto-submitted, auto-replied or auto-generated." + no_body_detected_error: "Happens when we couldn't extract a body and there was no attachments." + inactive_user_error: "Happens when the sender is not active." + blocked_user_error: "Happens when the sender has been blocked." + bad_destination_address: "Happens when none of the email addresses in To/Cc/Bcc fields matched a configured incoming email address." + strangers_not_allowed_error: "Happens when a user tried to create a new topic in a category they're not a member of." + insufficient_trust_level_error: "Happens when a user tried to create a new topic in a category they don't have the required trust level for." + reply_user_not_matching_error: "Happens when a reply came in from a different email address the notification was sent to." + topic_not_found_error: "Happens when a reply came in but the related topic has been deleted." + topic_closed_error: "Happens when a reply came in but the related topic has been closed." + errors: &errors format: ! '%{attribute} %{message}' messages: @@ -62,8 +81,10 @@ en: exclusion: is reserved greater_than: must be greater than %{count} greater_than_or_equal_to: must be greater than or equal to %{count} + has_already_been_used: "has already been used" inclusion: is not included in the list invalid: is invalid + is_invalid: "is invalid; try to be a little more descriptive" less_than: must be less than %{count} less_than_or_equal_to: must be less than or equal to %{count} not_a_number: is not a number @@ -101,9 +122,6 @@ en: activemodel: errors: <<: *errors - activerecord: - errors: - <<: *errors bulk_invite: file_should_be_csv: "The uploaded file should be of csv or txt format." @@ -118,6 +136,9 @@ en: invalid_access: "You are not permitted to view the requested resource." read_only_mode_enabled: "The site is in read only mode. Interactions are disabled." + reading_time: "Reading time" + likes: "Likes" + too_many_replies: one: "We're sorry, but new users are temporarily limited to 1 reply in the same topic." other: "We're sorry, but new users are temporarily limited to %{count} replies in the same topic." @@ -137,26 +158,27 @@ en: one: "1 reply" other: "%{count} replies" + no_mentions_allowed: "Sorry, you can't mention other users." too_many_mentions: - zero: "Sorry, you can't mention other users." one: "Sorry, you can only mention one other user in a post." other: "Sorry, you can only mention %{count} users in a post." + no_mentions_allowed_newuser: "Sorry, new users can't mention other users." too_many_mentions_newuser: - zero: "Sorry, new users can't mention other users." one: "Sorry, new users can only mention one other user in a post." other: "Sorry, new users can only mention %{count} users in a post." + no_images_allowed: "Sorry, new users can't put images in posts." too_many_images: - zero: "Sorry, new users can't put images in posts." one: "Sorry, new users can only put one image in a post." other: "Sorry, new users can only put %{count} images in a post." + no_attachments_allowed: "Sorry, new users can't put attachments in posts." too_many_attachments: - zero: "Sorry, new users can't put attachments in posts." one: "Sorry, new users can only put one attachment in a post." other: "Sorry, new users can only put %{count} attachments in a post." + no_links_allowed: "Sorry, new users can't put links in posts." too_many_links: - zero: "Sorry, new users can't put links in posts." one: "Sorry, new users can only put one link in a post." other: "Sorry, new users can only put %{count} links in a post." + spamming_host: "Sorry you cannot post a link to that host." user_is_suspended: "Suspended users are not allowed to post." topic_not_found: "Something has gone wrong. Perhaps this topic was closed or deleted while you were looking at it?" @@ -180,8 +202,15 @@ en: rss_description: latest: "Latest topics" hot: "Hot topics" + top: "Top topics" posts: "Latest posts" + private_posts: "Latest private messages" + group_posts: "Latest posts from %{group_name}" + group_mentions: "Latest mentions from %{group_name}" + user_posts: "Latest posts by @%{username}" + user_topics: "Latest topics by @%{username}" too_late_to_edit: "That post was created too long ago. It can no longer be edited or deleted." + revert_version_same: "The current version is same as the version you are trying to revert to." excerpt_image: "image" @@ -192,6 +221,10 @@ en: errors: can_not_modify_automatic: "You can not modify an automatic group" member_already_exist: "'%{username}' is already a member of this group." + invalid_domain: "'%{domain}' is not a valid domain." + invalid_incoming_email: "'%{email}' is not a valid email address." + email_already_used_in_group: "'%{email}' is already used by the group '%{group_name}'." + email_already_used_in_category: "'%{email}' is already used by the category '%{category_name}'." default_names: everyone: "everyone" admins: "admins" @@ -280,9 +313,7 @@ en: user: ip_address: "" errors: - messages: - is_invalid: "is invalid; try to be a little more descriptive" - has_already_been_used: "has already been used" + <<: *errors models: topic: attributes: @@ -346,13 +377,15 @@ en: category: topic_prefix: "About the %{category} category" - replace_paragraph: "[Replace this first paragraph with a short description of your new category. This guidance will appear in the category selection area, so try to keep it below 200 characters. Until you edit this text or create topics, this category won't appear on the categories page.]" - post_template: "%{replace_paragraph}\n\nUse the following paragraphs for a longer description, as well as to establish any category guidelines or rules.\n\nSome things to consider in any discussion replies below:\n\n- What is this category for? Why should people select this category for their topic?\n\n- How is this different than the other categories we already have?\n\n- Do we need this category?\n\n- Should we merge this with another category, or split it into more categories?\n" + replace_paragraph: "(Replace this first paragraph with a brief description of your new category. This guidance will appear in the category selection area, so try to keep it below 200 characters. **Until you edit this description or create topics, this category won't appear on the categories page.**)" + post_template: "%{replace_paragraph}\n\nUse the following paragraphs for a longer description, or to establish category guidelines or rules:\n\n- Why should people use this category? What is it for?\n\n- How exactly is this different than the other categories we already have?\n\n- What should topics in this category generally contain?\n\n- Do we need this category? Can we merge with another category, or subcategory?\n" errors: uncategorized_parent: "Uncategorized can't have a parent category" self_parent: "A subcategory's parent cannot be itself" depth: "You can't nest a subcategory under another" - email_in_already_exist: "Incoming email address '%{email_in}' is already in use for '%{category_name}' category." + invalid_email_in: "'%{email}' is not a valid email address." + email_already_used_in_group: "'%{email}' is already used by the group '%{group_name}'." + email_already_used_in_category: "'%{email}' is already used by the category '%{category_name}'." cannot_delete: uncategorized: "Can't delete Uncategorized" has_subcategories: "Can't delete this category because it has sub-categories." @@ -360,23 +393,39 @@ en: one: "Can't delete this category because is has 1 topic. Oldest topic is %{topic_link}." other: "Can't delete this category because it has %{count} topics. Oldest topic is %{topic_link}." topic_exists_no_oldest: "Can't delete this category because topic count is %{count}." + uncategorized_description: "Topics that don't need a category, or don't fit into any other existing category." trust_levels: newuser: title: "new user" basic: title: "basic user" - regular: + member: title: "member" - leader: + regular: title: "regular" - elder: + leader: title: "leader" change_failed_explanation: "You attempted to demote %{user_name} to '%{new_trust_level}'. However their trust level is already '%{current_trust_level}'. %{user_name} will remain at '%{current_trust_level}' - if you wish to demote user lock trust level first" rate_limiter: - slow_down: "You have performed this action too many times, try again later" + slow_down: "You have performed this action too many times, try again later." too_many_requests: "We have a daily limit on how many times that action can be taken. Please wait %{time_left} before trying again." + by_type: + first_day_replies_per_day: "You've reached the maximum number of replies a new user can create on their first day. Please wait %{time_left} before trying again." + first_day_topics_per_day: "You've reached the maximum number of topics a new user can create on their first day. Please wait %{time_left} before trying again." + create_topic: "You're creating topics too quickly. Please wait %{time_left} before trying again." + create_post: "You're replying too quickly. Please wait %{time_left} before trying again." + delete_post: "You're deleting posts too quickly. Please wait %{time_left} before trying again." + topics_per_day: "You've reached the maximum number of new topics today. Please wait %{time_left} before trying again." + pms_per_day: "You've reached the maximum number of messages today. Please wait %{time_left} before trying again." + create_like: "You've reached the maximum number of likes today. Please wait %{time_left} before trying again." + create_bookmark: "You've reached the maximum number of bookmarks today. Please wait %{time_left} before trying again." + edit_post: "You've reached the maximun number of edits today. Please wait %{time_left} before trying again." + live_post_counts: "You've asking for live post counts too quickly. Please wait %{time_left} before trying again." + unsubscribe_via_email: "You've reached the maximum number of unsubscribe via email today. Please wait %{time_left} before trying again." + topic_invitations_per_day: "You've reached the maximum number of topic invitations today. Please wait %{time_left} before trying again." + hours: one: "1 hour" other: "%{count} hours" @@ -475,6 +524,11 @@ en: confirmed: "Your email has been updated." please_continue: "Continue to %{site_name}" error: "There was an error changing your email address. Perhaps the address is already in use?" + error_staged: "There was an error changing your email address. The address is already in use by a staged user." + already_done: "Sorry, this confirmation link is no longer valid. Perhaps your email was already changed?" + authorizing_old: + title: "Thanks for confirming your current email address" + description: "We're now emailing your new address for confirmation." activation: action: "Click here to activate your account" @@ -500,16 +554,16 @@ en: description: 'This post contains content that a reasonable person would consider offensive, abusive, or a violation of our community guidelines.' long_form: 'flagged this as inappropriate' notify_user: - title: 'Message @{{username}}' - description: 'This post contains something I want to talk to this person directly and privately about. Does not cast a flag.' + title: 'Send @{{username}} a message' + description: 'I want to talk to this person directly and privately about their post.' long_form: 'messaged user' email_title: 'Your post in "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: title: "Something Else" - description: 'This post requires moderator attention for another reason not listed above.' - long_form: 'flagged this for moderator attention' - email_title: 'A post in "%{title}" requires moderator attention' + description: 'This post requires staff attention for another reason not listed above.' + long_form: 'flagged this for staff attention' + email_title: 'A post in "%{title}" requires staff attention' email_body: "%{link}\n\n%{message}" bookmark: title: 'Bookmark' @@ -535,7 +589,7 @@ en: long_form: 'flagged this as inappropriate' notify_moderators: title: "Something Else" - description: 'This topic requires general moderator attention based on the guidelines, TOS, or for another reason not listed above.' + description: 'This topic requires general staff attention based on the guidelines, TOS, or for another reason not listed above.' long_form: 'flagged this for moderator attention' email_title: 'The topic "%{title}" requires moderator attention' email_body: "%{link}\n\n%{message}" @@ -576,6 +630,10 @@ en: title: "New Users" xaxis: "Day" yaxis: "Number of new users" + profile_views: + title: "User Profile Views" + xaxis: "Day" + yaxis: "Number of user profiles viewed" topics: title: "Topics" xaxis: "Day" @@ -728,44 +786,17 @@ en: consumer_email_warning: "Your site is configured to use Gmail (or another consumer email service) to send email. Gmail limits how many emails you can send. Consider using an email service provider like mandrill.com to ensure email deliverability." site_contact_username_warning: "Enter the name of a friendly staff user account to send important automated messages from. Update site_contact_username in Site Settings." notification_email_warning: "Notification emails are not being sent from a valid email address on your domain; email delivery will be erratic and unreliable. Please set notification_email to a valid local email address in Site Settings." - - content_types: - education_new_reply: - title: "New User Education: First Replies" - description: "Pop up just-in-time guidance automatically displayed above the composer when new users begin typing their first two new replies." - education_new_topic: - title: "New User Education: First Topics" - description: "Pop up just-in-time guidance automatically displayed above the composer when new users begin typing their first two new topics." - usage_tips: - title: "New User Guidance" - description: "Guidance and essential information for new users." - welcome_user: - title: "Welcome: New User" - description: "A message automatically sent to all new users when they sign up." - welcome_invite: - title: "Welcome: Invited User" - description: "A message automatically sent to all new invited users when they accept the invitation from another user to participate." - login_required_welcome_message: - title: "Login Required: Welcome Message" - description: "Welcome message that is displayed to logged out users when the 'login required' setting is enabled." - login_required: - title: "Login Required: Homepage" - description: "The text displayed for unauthorized users when login is required on the site." - head: - title: "HTML head" - description: "HTML that will be inserted inside the
tags."
- top:
- title: "Top of the pages"
- description: "HTML that will be added at the top of every page (after the header, before the navigation or the topic title)."
- bottom:
- title: "Bottom of the pages"
- description: "HTML that will be added before the tag."
+ subfolder_ends_in_slash: "Your subfolder setup is incorrect; the DISCOURSE_RELATIVE_URL_ROOT ends in a slash."
+ email_polling_errored_recently:
+ one: "Email polling has generated an error in the past 24 hours. Look at the logs for more details."
+ other: "Email polling has generated %{count} errors in the past 24 hours. Look at the logs for more details."
site_settings:
censored_words: "Words that will be automatically replaced with ■■■■"
delete_old_hidden_posts: "Auto-delete any hidden posts that stay hidden for more than 30 days."
default_locale: "The default language of this Discourse instance (ISO 639-1 Code)"
allow_user_locale: "Allow users to choose their own language interface preference"
+ set_locale_from_accept_language_header: "set interface language for anonymous users from their web browser's language headers. (EXPERIMENTAL, does not work with anonymous cache)"
min_post_length: "Minimum allowed post length in characters"
min_first_post_length: "Minimum allowed first post (topic body) length in characters"
min_private_message_post_length: "Minimum allowed post length in characters for messages"
@@ -774,8 +805,8 @@ en:
max_topic_title_length: "Maximum allowed topic title length in characters"
min_private_message_title_length: "Minimum allowed title length for a message in characters"
min_search_term_length: "Minimum valid search term length in characters"
+ search_tokenize_chinese_japanese_korean: "Force search to tokenize Chinese/Japanese/Korean even on non CJK sites"
allow_uncategorized_topics: "Allow topics to be created without a category. WARNING: If there are any uncategorized topics, you must recategorize them before turning this off."
- uncategorized_description: "The description of the uncategorized category. Leave blank for no description."
allow_duplicate_topic_titles: "Allow topics with identical, duplicate titles."
unique_posts_mins: "How many minutes before a user can make a post with the same content again"
educate_until_posts: "When the user starts typing their first (n) new posts, show the pop-up new user education panel in the composer."
@@ -788,7 +819,7 @@ en:
download_remote_images_to_local: "Convert remote images to local images by downloading them; this prevents broken images."
download_remote_images_threshold: "Minimum disk space necessary to download remote images locally (in percent)"
disabled_image_download_domains: "Remote images will never be downloaded from these domains. Pipe-delimited list."
- ninja_edit_window: "For (n) seconds after posting, editing will not create a new version in the post history."
+ editing_grace_period: "For (n) seconds after posting, editing will not create a new version in the post history."
post_edit_time_limit: "The author can edit or delete their post for (n) minutes after posting. Set to 0 for forever."
edit_history_visible_to_public: "Allow everyone to see previous versions of an edited post. When disabled, only staff members can view."
delete_removed_posts_after: "Posts removed by the author will be automatically deleted after (n) hours. If set to 0, posts will be deleted immediately."
@@ -822,7 +853,7 @@ en:
summary_percent_filter: "When a user clicks 'Summarize This Topic', show the top % of posts"
summary_max_results: "Maximum posts returned by 'Summary This Topic'"
- enable_private_messages: "Allow trust level 1 users to create messages and reply to messages"
+ enable_private_messages: "Allow trust level 1 (configurable via min trust level to send messages) users to create messages and reply to messages"
enable_long_polling: "Message bus used for notification can use long polling"
long_polling_base_url: "Base URL used for long polling (when a CDN is serving dynamic content, be sure to set this to origin pull) eg: http://origin.site.com"
@@ -847,9 +878,10 @@ en:
flag_sockpuppets: "If a new user replies to a topic from the same IP address as the new user who started the topic, flag both of their posts as potential spam."
traditional_markdown_linebreaks: "Use traditional linebreaks in Markdown, which require two trailing spaces for a linebreak."
- allow_html_tables: "Allow tables to be entered in Markdown using HTML tags, TABLE, THEAD, TD, TR, TH are whitelisted (requires full rebake on all old posts containing tables)"
+ allow_html_tables: "Allow tables to be entered in Markdown using HTML tags. TABLE, THEAD, TD, TR, TH will be whitelisted (requires full rebake on all old posts containing tables)"
post_undo_action_window_mins: "Number of minutes users are allowed to undo recent actions on a post (like, flag, etc)."
must_approve_users: "Staff must approve all new user accounts before they are allowed to access the site. WARNING: enabling this for a live site will revoke access for existing non-staff users!"
+ pending_users_reminder_delay: "Notify moderators if new users have been waiting for approval for longer than this many hours. Set to -1 to disable notifications."
ga_tracking_code: "Google analytics (ga.js) tracking code code, eg: UA-12345678-9; see http://google.com/analytics"
ga_domain_name: "Google analytics (ga.js) domain name, eg: mysite.com; see http://google.com/analytics"
ga_universal_tracking_code: "Google Universal Analytics (analytics.js) tracking code code, eg: UA-12345678-9; see http://google.com/analytics"
@@ -858,6 +890,7 @@ en:
enable_noscript_support: "Enable standard webcrawler search engine support via the noscript tag"
allow_moderators_to_create_categories: "Allow moderators to create new categories"
cors_origins: "Allowed origins for cross-origin requests (CORS). Each origin must include http:// or https://. The DISCOURSE_ENABLE_CORS env variable must be set to true to enable CORS."
+ use_admin_ip_whitelist: "Admins can only log in if they are at an IP address defined in the Screened IPs list (Admin > Logs > Screened Ips)."
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|new|unread|categories|top|read|posted|bookmarks"
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
post_menu_hidden_items: "The menu items to hide by default in the post menu unless an expansion ellipsis is clicked on."
@@ -869,12 +902,10 @@ en:
suppress_reply_directly_above: "Don't show the expandable in-reply-to on a post when there is only a single reply directly above this post."
suppress_reply_when_quoting: "Don't show the expandable in-reply-to on a post when post quotes reply."
max_reply_history: "Maximum number of replies to expand when expanding in-reply-to"
-
- experimental_reply_expansion: "Hide intermediate replies when expanding a reply to (experimental)"
-
topics_per_period_in_top_summary: "Number of top topics shown in the default top topics summary."
topics_per_period_in_top_page: "Number of top topics shown on the expanded 'Show More' top topics."
redirect_users_to_top_page: "Automatically redirect new and long absent users to the top page."
+ top_page_default_timeframe: "Default timeframe for the top view page."
show_email_on_profile: "Show a user's email on their profile (only visible to themselves and staff)"
email_token_valid_hours: "Forgot password / activate account tokens are valid for (n) hours."
@@ -907,6 +938,7 @@ en:
reserved_usernames: "Usernames for which signup is not allowed."
min_password_length: "Minimum password length."
+ min_admin_password_length: "Minimum password length for Admin."
block_common_passwords: "Don't allow passwords that are in the 10,000 most common passwords."
enable_sso: "Enable single sign on via an external site (WARNING: USERS' EMAIL ADDRESSES *MUST* BE VALIDATED BY THE EXTERNAL SITE!)"
@@ -932,6 +964,10 @@ en:
twitter_consumer_key: "Consumer key for Twitter authentication, registered at http://dev.twitter.com"
twitter_consumer_secret: "Consumer secret for Twitter authentication, registered at http://dev.twitter.com"
+ enable_instagram_logins: "Enable Instagram authentication, requires instagram_consumer_key and instagram_consumer_secret"
+ instagram_consumer_key: "Consumer key for Instagram authentication"
+ instagram_consumer_secret: "Consumer secret Instagram authentication"
+
enable_facebook_logins: "Enable Facebook authentication, requires facebook_app_id and facebook_app_secret"
facebook_app_id: "App id for Facebook authentication, registered at https://developers.facebook.com/apps"
facebook_app_secret: "App secret for Facebook authentication, registered at https://developers.facebook.com/apps"
@@ -946,11 +982,18 @@ en:
backup_frequency: "How frequently we create a site backup, in days."
enable_s3_backups: "Upload backups to S3 when complete. IMPORTANT: requires valid S3 credentials entered in Files settings."
s3_backup_bucket: "The remote bucket to hold backups. WARNING: Make sure it is a private bucket."
+ s3_disable_cleanup: "Disable the removal of backups from S3 when removed locally."
+ backup_time_of_day: "Time of day UTC when the backup should occur."
+ backup_with_uploads: "Include uploads in scheduled backups. Disabling this will only backup the database."
active_user_rate_limit_secs: "How frequently we update the 'last_seen_at' field, in seconds"
verbose_localization: "Show extended localization tips in the UI"
previous_visit_timeout_hours: "How long a visit lasts before we consider it the 'previous' visit, in hours"
+ top_topics_formula_log_views_multiplier: "value of log views multiplier (n) in top topics formula: `log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
+ top_topics_formula_first_post_likes_multiplier: "value of first post likes multiplier (n) in top topics formula: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
+ top_topics_formula_least_likes_per_post_multiplier: "value of least likes per post multiplier (n) in top topics formula: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
+
rate_limit_create_topic: "After creating a topic, users must wait (n) seconds before creating another topic."
rate_limit_create_post: "After posting, users must wait (n) seconds before creating another post."
rate_limit_new_user_create_topic: "After creating a topic, new users must wait (n) seconds before creating another topic."
@@ -965,6 +1008,9 @@ en:
max_invites_per_day: "Maximum number of invites a user can send per day."
max_topic_invitations_per_day: "Maximum number of topic invitations a user can send per day."
+ alert_admins_if_errors_per_minute: "Number of errors per minute in order to trigger an admin alert. A value of 0 disables this feature. NOTE: requires restart."
+ alert_admins_if_errors_per_hour: "Number of errors per hour in order to trigger an admin alert. A value of 0 disables this feature. NOTE: requires restart."
+
suggested_topics: "Number of suggested topics shown at the bottom of a topic."
limit_suggested_to_category: "Only show topics from the current category in suggested topics."
@@ -985,6 +1031,10 @@ en:
external_system_avatars_enabled: "Use external system avatars service."
external_system_avatars_url: "URL of the external system avatars service. Allowed substitions are {username} {first_letter} {color} {size}"
+ default_opengraph_image_url: "URL of the default opengraph image."
+
+ allow_all_attachments_for_group_messages: "Allow all email attachments for group messages."
+
enable_flash_video_onebox: "Enable embedding of swf and flv (Adobe Flash) links in oneboxes. WARNING: may introduce security risks."
default_invitee_trust_level: "Default trust level (0-4) for invited users."
@@ -1002,37 +1052,45 @@ en:
tl2_requires_likes_given: "How many likes a user must cast before promotion to trust level 2."
tl2_requires_topic_reply_count: "How many topics user must reply to before promotion to trust level 2."
- tl3_requires_days_visited: "Minimum number of days that a user needs to have visited the site in the last 100 days to qualify for promotion to trust level 3. (0 to 100)"
- tl3_requires_topics_replied_to: "Minimum number of topics a user needs to have replied to in the last 100 days to qualify for promotion to trust level 3. (0 or higher)"
- tl3_requires_topics_viewed: "The percentage of topics created in the last 100 days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)"
- tl3_requires_posts_read: "The percentage of posts created in the last 100 days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)"
+ tl3_time_period: "Trust Level 3 requirements time period (in days)"
+ tl3_requires_days_visited: "Minimum number of days that a user needs to have visited the site in the last (tl3 time period) days to qualify for promotion to trust level 3. Set higher than tl3 time period to disable promotions to tl3. (0 or higher)"
+ tl3_requires_topics_replied_to: "Minimum number of topics a user needs to have replied to in the last (tl3 time period) days to qualify for promotion to trust level 3. (0 or higher)"
+ tl3_requires_topics_viewed: "The percentage of topics created in the last (tl3 time period) days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)"
+ tl3_requires_posts_read: "The percentage of posts created in the last (tl3 time period) days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)"
tl3_requires_topics_viewed_all_time: "The minimum total number of topics a user must have viewed to qualify for trust level 3."
tl3_requires_posts_read_all_time: "The minimum total number of posts a user must have read to qualify for trust level 3."
- tl3_requires_max_flagged: "User must not have had more than x posts flagged by x different users in the last 100 days to qualify for promotion to trust level 3, where x is this setting's value. (0 or higher)"
+ tl3_requires_max_flagged: "User must not have had more than x posts flagged by x different users in the last (tl3 time period) days to qualify for promotion to trust level 3, where x is this setting's value. (0 or higher)"
tl3_promotion_min_duration: "The minimum number of days that a promotion to trust level 3 lasts before a user can be demoted back to trust level 2."
- tl3_requires_likes_given: "The minimum number of likes that must be given in the last 100 days to qualify for promotion to trust level 3."
- tl3_requires_likes_received: "The minimum number of likes that must be received in the last 100 days to qualify for promotion to trust level 3."
+ tl3_requires_likes_given: "The minimum number of likes that must be given in the last (tl3 time period) days to qualify for promotion to trust level 3."
+ tl3_requires_likes_received: "The minimum number of likes that must be received in the last (tl3 time period) days to qualify for promotion to trust level 3."
tl3_links_no_follow: "Do not remove rel=nofollow from links posted by trust level 3 users."
min_trust_to_create_topic: "The minimum trust level required to create a new topic."
min_trust_to_edit_wiki_post: "The minimum trust level required to edit post marked as wiki."
+ min_trust_to_allow_self_wiki: "The minimum trust level required to make user's own post wiki."
+
+ min_trust_to_send_messages: "The minimum trust level required to create new private messages."
+
newuser_max_links: "How many links a new user can add to a post."
newuser_max_images: "How many images a new user can add to a post."
newuser_max_attachments: "How many attachments a new user can add to a post."
newuser_max_mentions_per_post: "Maximum number of @name notifications a new user can use in a post."
newuser_max_replies_per_topic: "Maximum number of replies a new user can make in a single topic until someone replies to them."
max_mentions_per_post: "Maximum number of @name notifications anyone can use in a post."
+ max_users_notified_per_group_mention: "Maximum number of users that may recieve a notification if a group is mentioned (if threshold is met no notifications will be raised)"
create_thumbnails: "Create thumbnails and lightbox images that are too large to fit in a post."
email_time_window_mins: "Wait (n) minutes before sending any notification emails, to give users a chance to edit and finalize their posts."
+ private_email_time_window_seconds: "Wait (n) seconds before sending any private notification emails, to give users a chance to edit and finalize their messages."
email_posts_context: "How many prior replies to include as context in notification emails."
flush_timings_secs: "How frequently we flush timing data to the server, in seconds."
title_max_word_length: "The maximum allowed word length, in characters, in a topic title."
title_min_entropy: "The minimum entropy (unique characters, non-english count for more) required for a topic title."
body_min_entropy: "The minimum entropy (unique characters, non-english count for more) required for a post body."
+ allow_uppercase_posts: "Allow all caps in a topic title or a post body."
title_fancy_entities: "Convert common ASCII characters to fancy HTML entities in topic titles, ala SmartyPants http://daringfireball.net/projects/smartypants/"
@@ -1074,6 +1132,7 @@ en:
white_listed_spam_host_domains: "A list of domains excluded from spam host testing. New users will never be restricted from creating posts with links to these domains."
staff_like_weight: "How much extra weighting factor to give staff likes."
topic_view_duration_hours: "Count a new topic view once per IP/User every N hours"
+ user_profile_view_duration_hours: "Count a new user profile view once per IP/User every N hours"
levenshtein_distance_spammer_emails: "When matching spammer emails, number of characters difference that will still allow a fuzzy match."
max_new_accounts_per_registration_ip: "If there are already (n) trust level 0 accounts from this IP (and none is a staff member or at TL2 or higher), stop accepting new signups from that IP."
@@ -1099,7 +1158,16 @@ en:
strip_images_from_short_emails: "Strip images from emails having size less than 2800 Bytes"
short_email_length: "Short email length in Bytes"
+ display_name_on_email_from: "Display full names on email from fields"
+ unsubscribe_via_email: "Allow users to unsubscribe from emails by sending an email with 'unsubscribe' in the subject or body"
+ unsubscribe_via_email_footer: "Attach an unsubscribe link to the footer of sent emails"
+
+ delete_email_logs_after_days: "Delete email logs after (N) days. 0 to keep indefinitely"
+ max_emails_per_day_per_user: "Maximum number of emails to send users per day. 0 to disable the limit"
+ enable_staged_users: "Automatically create staged users when processing incoming emails."
+
+ manual_polling_enabled: "Push emails using the API for email replies."
pop3_polling_enabled: "Poll via POP3 for email replies."
pop3_polling_ssl: "Use SSL while connecting to the POP3 server. (Recommended)"
pop3_polling_period_mins: "The period in minutes between checking the POP3 account for email. NOTE: requires restart."
@@ -1129,7 +1197,8 @@ en:
automatically_download_gravatars: "Download Gravatars for users upon account creation or email change."
digest_topics: "The maximum number of topics to display in the email digest."
digest_min_excerpt_length: "Minimum post excerpt in the email digest, in characters."
- suppress_digest_email_after_days: "Suppress digest emails for users not seen on the site for more than (n) days."
+ delete_digest_email_after_days: "Suppress digest emails for users not seen on the site for more than (n) days."
+ digest_suppress_categories: "Suppress these categories from digest emails."
disable_digest_emails: "Disable digest emails for all users."
detect_custom_avatars: "Whether or not to check that users have uploaded custom profile pictures."
@@ -1141,24 +1210,32 @@ en:
anonymous_posting_min_trust_level: "Minimum trust level required to enable anonymous posting"
anonymous_account_duration_minutes: "To protect anonymity create a new anonymous account every N minutes for each user. Example: if set to 600, as soon as 600 minutes elapse from last post AND user switches to anon, a new anonymous account is created."
+ hide_user_profiles_from_public: "Disable user cards, user profiles and user directory for anonymous users."
+
allow_profile_backgrounds: "Allow users to upload profile backgrounds."
- sequential_replies_threshold: "Number posts a user has to make in a row in a topic before being reminded about too many sequential replies. "
+ sequential_replies_threshold: "Number of posts a user has to make in a row in a topic before being reminded about too many sequential replies."
enable_mobile_theme: "Mobile devices use a mobile-friendly theme, with the ability to switch to the full site. Disable this if you want to use a custom stylesheet that is fully responsive."
dominating_topic_minimum_percent: "What percentage of posts a user has to make in a topic before being reminded about overly dominating a topic."
+ disable_avatar_education_message: "Disable education message for changing avatar."
+
daily_performance_report: "Analyze NGINX logs daily and post a Staff Only topic with details"
suppress_uncategorized_badge: "Don't show the badge for uncategorized topics in topic lists."
- permalink_normalizations: "Apply the following regex before matching permalinks, for example: /(\\/topic.*)\\?.*/\\1 will strip query strings from topic routes. Format is regex+string use \\1 etc. to access captures"
+ permalink_normalizations: "Apply the following regex before matching permalinks, for example: /(topic.*)\\?.*/\\1 will strip query strings from topic routes. Format is regex+string use \\1 etc. to access captures"
global_notice: "Display an URGENT, EMERGENCY global banner notice to all visitors, change to blank to hide it (HTML allowed)."
disable_edit_notifications: "Disables edit notifications by the system user when 'download_remote_images_to_local' is active."
+ automatically_unpin_topics: "Automatically unpin topics when the user reaches the bottom."
+
+ read_time_word_count: "Word count per minute for calculating estimated reading time."
+
full_name_required: "Full name is a required field of a user's profile."
enable_names: "Show the user's full name on their profile, user card, and emails. Disable to hide full name everywhere."
display_name_on_posts: "Show a user's full name on their posts in addition to their @username."
@@ -1176,6 +1253,7 @@ en:
embed_username_key_from_feed: "Key to pull discourse username from feed."
embed_truncate: "Truncate the embedded posts."
embed_post_limit: "Maximum number of posts to embed."
+ embed_username_required: "The username for topic creation is required."
embed_whitelist_selector: "CSS selector for elements that are allowed in embeds."
embed_blacklist_selector: "CSS selector for elements that are removed from embeds."
notify_about_flags_after: "If there are flags that haven't been handled after this many hours, send an email to the contact_email. Set to 0 to disable."
@@ -1184,9 +1262,7 @@ en:
delete_drafts_older_than_n_days: Delete drafts older than (n) days.
- show_logout_in_header: "Show log out in user dropdown in header"
-
- vacuum_db_days: "Run VACUUM FULL ANALYZE to reclaim DB space after migrations (set to 0 to disable)"
+ vacuum_db_days: "Run VACUUM ANALYZE to reclaim DB space after migrations (set to 0 to disable)"
prevent_anons_from_downloading_files: "Prevent anonymous users from downloading attachments. WARNING: this will prevent any non-image site assets posted as attachments from working."
@@ -1196,15 +1272,20 @@ en:
emoji_set: "How would you like your emoji?"
enforce_square_emoji: "Force a square aspect ratio to all emojis."
- approve_post_count: "The amount of posts from a new user that must be approved"
+ approve_post_count: "The amount of posts from a new or basic user that must be approved"
approve_unless_trust_level: "Posts for users below this trust level must be approved"
notify_about_queued_posts_after: "If there are posts that have been waiting to be reviewed for more than this many hours, an email will be sent to the contact email. Set to 0 to disable these emails."
default_email_digest_frequency: "How often users receive digest emails by default."
+ default_include_tl0_in_digests: "Include posts from new users in digest emails by default. Users can change this in their preferences."
default_email_private_messages: "Send an email when someone messages the user by default."
default_email_direct: "Send an email when someone quotes/replies to/mentions or invites the user by default."
default_email_mailing_list_mode: "Send an email for every new post by default."
+ disable_mailing_list_mode: "Disallow users from enabling mailing list mode."
default_email_always: "Send an email notification even when the user is active by default."
+ default_email_previous_replies: "Include previous replies in emails by default."
+
+ default_email_in_reply_to: "Include excerpt of replied to post in emails by default."
default_other_new_topic_duration_minutes: "Global default condition for which a topic is considered new."
default_other_auto_track_topics_after_msecs: "Global default time before a topic is automatically tracked."
@@ -1214,6 +1295,10 @@ en:
default_other_disable_jump_reply: "Don't jump to user's post after they reply by default."
default_other_edit_history_public: "Make the post revisions public by default."
+ default_other_like_notification_frequency: "Notify users on likes by default"
+
+ default_topics_automatic_unpin: "Automatically unpin topics when the user reaches the bottom by default."
+
default_categories_watching: "List of categories that are watched by default."
default_categories_tracking: "List of categories that are tracked by default."
default_categories_muted: "List of categories that are muted by default."
@@ -1232,8 +1317,16 @@ en:
invalid_string_min: "Must be at least %{min} characters."
invalid_string_max: "Must be no more than %{max} characters."
invalid_reply_by_email_address: "Value must contain '%{reply_key}' and be different from the notification email."
+ pop3_polling_host_is_empty: "You must set a 'pop3 polling host' before enabling POP3 polling."
+ pop3_polling_username_is_empty: "You must set a 'pop3 polling username' before enabling POP3 polling."
+ pop3_polling_password_is_empty: "You must set a 'pop3 polling password' before enabling POP3 polling."
+ pop3_polling_authentication_failed: "POP3 authentication failed. Please verify your pop3 credentials."
+ reply_by_email_address_is_empty: "You must set a 'reply by email address' before enabling reply by email."
+ email_polling_disabled: "You must enable either manual or POP3 polling before enabling reply by email."
+ user_locale_not_enabled: "You must first enable 'allow user locale' before enabling this setting."
notification_types:
+ group_mentioned: "%{group_name} was mentioned in %{link}"
mentioned: "%{display_username} mentioned you in %{link}"
liked: "%{display_username} liked your post in %{link}"
replied: "%{display_username} replied to your post in %{link}"
@@ -1243,7 +1336,7 @@ en:
moved_post: "%{display_username} moved your post to %{link}"
private_message: "%{display_username} sent you a message: %{link}"
invited_to_private_message: "%{display_username} invited you to a message: %{link}"
- invited_to_topic: "%{display_username} invited you to a topic: %{link}"
+ invited_to_topic: "%{display_username} invited you to %{link}"
invitee_accepted: "%{display_username} accepted your invitation"
linked: "%{display_username} linked you in %{link}"
granted_badge: "You earned %{link}"
@@ -1256,10 +1349,10 @@ en:
user: 'Users'
sso:
- not_found: "Unable to lookup or create account, contact site admin"
- account_not_approved: "Account is pending approval, you will receive an email notification once approved"
- unknown_error: "Error updating information, contact site admin"
- timeout_expired: "Account login timed out, please try logging in again"
+ not_found: "Your account couldn't be found. Please contact the site's administrator."
+ account_not_approved: "Your account is pending approval. You will receive an email notification when you are approved."
+ unknown_error: "There is a problem with your account. Please contact the site's administrator."
+ timeout_expired: "Account login timed out, please try logging in again."
original_poster: "Original Poster"
most_posts: "Most Posts"
@@ -1341,6 +1434,7 @@ en:
reserved_username: "That username is not allowed."
missing_user_field: "You have not completed all the user fields"
close_window: "Authentication is complete. Close this window to continue."
+ already_logged_in: "Oops, looks like you are attempting to accept an invitation for another user. If you are not %{current_user}, please log out and try again."
user:
no_accounts_associated: "No accounts associated"
@@ -1350,10 +1444,10 @@ en:
characters: "must only include numbers, letters and underscores"
unique: "must be unique"
blank: "must be present"
- must_begin_with_alphanumeric: "must begin with a letter or number or an underscore"
- must_end_with_alphanumeric: "must end with a letter or number or an underscore"
+ must_begin_with_alphanumeric_or_underscore: "must begin with a letter, a number or an underscore"
+ must_end_with_alphanumeric: "must end with a letter or a number"
must_not_contain_two_special_chars_in_seq: "must not contain a sequence of 2 or more special chars (.-_)"
- must_not_contain_confusing_suffix: "must not contain a confusing suffix like .json or .png etc."
+ must_not_end_with_confusing_suffix: "must not end with a confusing suffix like .json or .png etc."
email:
not_allowed: "is not allowed from that email provider. Please use another email address."
blocked: "is not allowed."
@@ -1361,6 +1455,25 @@ en:
blocked: "New registrations are not allowed from your IP address."
max_new_accounts_per_registration_ip: "New registrations are not allowed from your IP address (maximum limit reached). Contact a staff member."
+ flags_reminder:
+ flags_were_submitted:
+ one: "Flags were submitted over 1 hour ago. Please review them."
+ other: "Flags were submitted over %{count} hours ago. Please review them."
+ subject_template:
+ one: "1 flag waiting to be handled"
+ other: "%{count} flags waiting to be handled"
+
+ unsubscribe_mailer:
+ subject_template: "Confirm you no longer want to receive email updates from %{site_title}"
+ text_body_template: |
+ Someone (possibly you?) requested to no longer send email updates from %{site_domain_name} to this address.
+ If you with to confirm this, please click this link:
+
+ %{confirm_unsubscribe_link}
+
+
+ If you want to continue receiving email updates, you may ignore this email.
+
invite_mailer:
subject_template: "%{invitee_name} invited you to '%{topic_title}' on %{site_domain_name}"
text_body_template: |
@@ -1426,7 +1539,9 @@ en:
- If you run your own mail server, check to make sure the IPs of your mail server are [not on any email blacklists][4]. Also verify that it is definitely sending a fully-qualified hostname that resolves in DNS in its HELO message. If not, this will cause your email to be rejected by many mail services.
- (The *easy* way is to create a free account on [Mandrill][md] or [Mailgun][mg] or [Mailjet][mj], which have free generous free mailing plans and will be fine for small communities. You'll still need to set up the SPF and DKIM records in your DNS, though!)
+ - We highly recommend you **send a test email to [mail-tester.com][mt]** to verify that all the above is working correctly.
+
+ (The *easy* way is to create a free account on [SendGrid][sg], [SparkPost][sp], [Mailgun][mg] or [Mailjet][mj], which have free generous free mailing plans and will be fine for small communities. You'll still need to set up the SPF and DKIM records in your DNS, though!)
We hope you received this email deliverability test OK!
@@ -1441,20 +1556,20 @@ en:
[4]: http://whatismyipaddress.com/blacklist-check
[7]: http://dkimcore.org/tools/dkimrecordcheck.html
[8]: http://www.openspf.org/SPF_Record_Syntax
- [md]: http://mandrill.com
+ [sg]: https://sendgrid.com/
+ [sp]: https://www.sparkpost.com/
[mg]: http://www.mailgun.com/
[mj]: https://www.mailjet.com/pricing
+ [mt]: http://www.mail-tester.com/
new_version_mailer:
subject_template: "[%{site_name}] New Discourse version, update available"
text_body_template: |
- A new version of [Discourse](http://www.discourse.org) is available.
+ Hooray, a new version of [Discourse](http://www.discourse.org) is available!
Your version: %{installed_version}
New version: **%{new_version}**
- You may want to:
-
- See what's new in the [GitHub changelog](https://github.com/discourse/discourse/commits/master).
- Upgrade from your browser at [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade).
@@ -1464,13 +1579,11 @@ en:
new_version_mailer_with_notes:
subject_template: "[%{site_name}] update available"
text_body_template: |
- A new version of [Discourse](http://www.discourse.org) is available.
+ Hooray, a new version of [Discourse](http://www.discourse.org) is available!
Your version: %{installed_version}
New version: **%{new_version}**
- You may want to:
-
- See what's new in the [GitHub changelog](https://github.com/discourse/discourse/commits/master).
- Upgrade from your browser at [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade).
@@ -1481,17 +1594,6 @@ en:
%{notes}
- flags_reminder:
- flags_were_submitted:
- one: "These flags were submitted over 1 hour ago."
- other: "These flags were submitted over %{count} hours ago."
- please_review: "Please review them."
- post_number: "post"
- how_to_disable: 'You can disable or change the frequency of this email reminder via the "notify about flags after" setting.'
- subject_template:
- one: "1 flag waiting to be handled"
- other: "%{count} flags waiting to be handled"
-
queued_posts_reminder:
subject_template:
one: "[%{site_name}] 1 post waiting to be reviewed"
@@ -1564,7 +1666,15 @@ en:
- To reply with **a new topic**, use to the right of the post. Both old and new topics will be automatically linked together.
- To insert a quote, select the text you wish to quote, then press any Reply button. Repeat for multiple quotes!
+ Your reply can be formatted using simple HTML, BBCode, or [Markdown](http://commonmark.org/help/):
+
+ This is **bold**.
+ This is bold.
+ This is [b]bold[/b].
+
+ Want to learn Markdown? [Take our fun 10 minute interactive tutorial!](http://commonmark.org/help/tutorial/)
+
+ To insert a quote, select the text you wish to quote, then press any Reply button. Repeat for multiple quotes.
@@ -1716,19 +1826,47 @@ en:
subject_template: "Data export failed"
text_body_template: "We're sorry, but your data export failed. Please check the logs or contact a staff member."
- email_reject_trust_level:
+ email_reject_insufficient_trust_level:
subject_template: "[%{site_name}] Email issue -- Insufficient Trust Level"
text_body_template: |
We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
Your account does not have the required trust level to post new topics to this email address. If you believe this is in error, contact a staff member.
+ email_reject_user_not_found:
+ subject_template: "[%{site_name}] Email issue -- User Not Found"
+ text_body_template: |
+ We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
+
+ Your reply was sent from an unknown email address. Try sending from another email address, or contact a staff member.
+
+ email_reject_inactive_user:
+ subject_template: "[%{site_name}] Email issue -- Inactive User"
+ text_body_template: |
+ We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
+
+ Your account associated with this email address is not activated. Please activate your account before sending emails in.
+
+ email_reject_blocked_user:
+ subject_template: "[%{site_name}] Email issue -- Blocked User"
+ text_body_template: |
+ We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
+
+ Your account associated with this email address has been blocked.
+
+ email_reject_reply_user_not_matching:
+ subject_template: "[%{site_name}] Email issue -- Reply User Not Matching"
+ text_body_template: |
+ We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
+
+ Your reply was sent from a different email address than the one we expected, so we're not sure if this is the same person. Try sending from another email address, or contact a staff member.
+
email_reject_no_account:
subject_template: "[%{site_name}] Email issue -- Unknown Account"
text_body_template: |
We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
- There is no known user account with this email address. Try sending from a different email address, or contact a staff member.
+ We can't find any accounts that match your email address. Try sending from a different email address, or contact a staff member.
email_reject_empty:
subject_template: "[%{site_name}] Email issue -- No Content"
@@ -1753,14 +1891,21 @@ en:
Your account does not have the privileges to post new topics in that category. If you believe this is in error, contact a staff member.
- email_reject_post_error:
+ email_reject_strangers_not_allowed:
+ subject_template: "[%{site_name}] Email issue -- Invalid Access"
+ text_body_template: |
+ We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
+
+ The category you sent this email to only allows replies from users with valid accounts and known email addresses. If you believe this is in error, contact a staff member.
+
+ email_reject_invalid_post:
subject_template: "[%{site_name}] Email issue -- Posting error"
text_body_template: |
We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
Some possible causes are: complex formatting, message too large, message too small. Please try again, or post via the website if this continues.
- email_reject_post_error_specified:
+ email_reject_invalid_post_specified:
subject_template: "[%{site_name}] Email issue -- Posting error"
text_body_template: |
We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
@@ -1771,26 +1916,41 @@ en:
If you can correct the problem, please try again.
+ email_reject_rate_limit_specified:
+ subject_template: "[%{site_name}] Email issue -- Rate limited"
+ text_body_template: |
+ We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
+
+ Reason: %{rate_limit_description}
+
+ email_reject_invalid_post_action:
+ subject_template: "[%{site_name}] Email issue -- Invalid Post Action"
+ text_body_template: |
+ We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
+
+ The Post Action was not recognized. Please try again, or post via the website if this continues.
+
+
email_reject_reply_key:
subject_template: "[%{site_name}] Email issue -- Unknown Reply Key"
text_body_template: |
We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
- The provided reply key is invalid or unknown, so we don't know what this email is in reply to. Contact a staff member.
+ The reply key in the email is invalid or unknown, so we can't figure out what this email is in reply to. Contact a staff member.
- email_reject_destination:
+ email_reject_bad_destination_address:
subject_template: "[%{site_name}] Email issue -- Unknown To: Address"
text_body_template: |
We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
- None of the destination addresses are recognized. Please make sure that the site address is in the To: line (not Cc: or Bcc:), and that you are sending to the correct email address provided by staff.
+ None of the destination email addresses are recognized. Please make sure that you are sending to the correct email address provided by staff.
email_reject_topic_not_found:
subject_template: "[%{site_name}] Email issue -- Topic Not Found"
text_body_template: |
We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
- The topic you are replying to no longer exists, perhaps it was deleted? If you believe this is in error, contact a staff member.
+ The topic you are replying to no longer exists -- perhaps it was deleted? If you believe this is in error, contact a staff member.
email_reject_topic_closed:
subject_template: "[%{site_name}] Email issue -- Topic Closed"
@@ -1804,15 +1964,17 @@ en:
text_body_template: |
We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work.
- Your email was marked as "auto generated", which we can't accept. If you believe this is in error, contact a staff member.
+ Your email was marked as "auto generated", which means it was automatically created by a computer instead of being typed by a human; we can't accept those kinds of emails. If you believe this is in error, contact a staff member.
email_error_notification:
subject_template: "[%{site_name}] Email issue -- POP authentication error"
text_body_template: |
- There has been an authentication error while polling mails from the POP server.
+ Unfortunately, there was an authentication error while polling mails from the POP server.
Please make sure you have properly configured the POP credentials in [the site settings](%{base_url}/admin/site_settings/category/email).
+ If there is a web UI for the POP email account, you may need to log in on the web and check your settings there.
+
too_many_spam_flags:
subject_template: "New account blocked"
text_body_template: |
@@ -1831,6 +1993,10 @@ en:
This is an automated message from %{site_name} to inform you that your account has been blocked by a staff member.
+ Please be aware that you will not be able to create new replies or topics until unblocked by a staff member.
+
+ If you have questions regarding this block, please contact a [staff members](%{base_url}/about).
+
For additional guidance, please refer to our [community guidelines](%{base_url}/guidelines).
user_automatically_blocked:
@@ -1838,9 +2004,9 @@ en:
text_body_template: |
This is an automated message.
- The new user [%{username}](%{base_url}%{user_url}) was automatically blocked because multiple users flagged %{username}'s post(s).
+ The new user [%{username}](%{user_url}) was automatically blocked because multiple users flagged %{username}'s post(s).
- Please [review the flags](%{base_url}/admin/flags). If %{username} was incorrectly blocked from posting, click the unblock button on [the admin page for this user](%{base_url}%{user_url}).
+ Please [review the flags](%{base_url}/admin/flags). If %{username} was incorrectly blocked from posting, click the unblock button on [the admin page for this user](%{user_url}).
This threshold can be changed via the `block_new_user` site settings.
@@ -1849,9 +2015,9 @@ en:
text_body_template: |
This is an automated message.
- The new user [%{username}](%{base_url}%{user_url}) tried to create multiple posts with links to %{domains}, but those posts were blocked to avoid spam. The user is still able to create new posts that do not link to %{domains}.
+ The new user [%{username}](%{user_url}) tried to create multiple posts with links to %{domains}, but those posts were blocked to avoid spam. The user is still able to create new posts that do not link to %{domains}.
- Please [review the user](%{base_url}%{user_url}).
+ Please [review the user](%{user_url}).
This can be modified via the `newuser_spam_host_threshold` and `white_listed_spam_host_domains` site settings.
@@ -1878,59 +2044,102 @@ en:
text_body_template: "The `download_remote_images_to_local` setting was disabled because the disk space limit at `download_remote_images_threshold` was reached."
unsubscribe_link: |
- To unsubscribe from these emails, visit your [user preferences](%{user_preferences_url}).
+ To stop receiving notifications for this particular topic, [click here](%{unsubscribe_url}). To unsubscribe from these emails, change your [user preferences](%{user_preferences_url})
- To stop receiving notifications about this particular topic, [click here](%{unsubscribe_url}).
+ unsubscribe_via_email_link: |
+ or, [click here](mailto:reply@%{hostname}?subject=unsubscribe) to unsubscribe via email.
subject_re: "Re: "
subject_pm: "[PM] "
user_notifications:
previous_discussion: "Previous Replies"
+ reached_limit:
+ one: "WARNING: you reached the limit of daily emails. Further email notifications will be suppressed."
+ other: "WARNING: you reached the limit of %{count} daily emails. Further email notifications will be suppressed."
+ in_reply_to: "In Reply To"
unsubscribe:
title: "Unsubscribe"
description: "Not interested in getting these emails? No problem! Click below to unsubscribe instantly:"
- reply_by_email: "To respond, reply to this email or visit %{base_url}%{url} in your browser."
- visit_link_to_respond: "To respond, visit %{base_url}%{url} in your browser."
+ header_instructions: ''
+ reply_by_email: "[Visit Topic](%{base_url}%{url}) or reply to this email to respond"
+ reply_by_email_pm: "[Visit Message](%{base_url}%{url}) or reply to this email to respond"
+ only_reply_by_email: "Reply to this email to respond"
+ visit_link_to_respond: "[Visit Topic](%{base_url}%{url}) to respond"
+ visit_link_to_respond_pm: "[Visit Message](%{base_url}%{url}) to respond"
posted_by: "Posted by %{username} on %{post_date}"
+ invited_to_private_message_body: |
+ %{username} invited you to a message
+
+ > **%{topic_title}**
+ >
+ > %{topic_excerpt}
+
+ at
+
+ > %{site_title} -- %{site_description}
+
+ invited_to_topic_body: |
+ %{username} invited you to a discussion
+
+ > **%{topic_title}**
+ >
+ > %{topic_excerpt}
+
+ at
+
+ > %{site_title} -- %{site_description}
+
user_invited_to_private_message_pm:
subject_template: "[%{site_name}] %{username} invited you to a message '%{topic_title}'"
text_body_template: |
+ %{header_instructions}
- %{username} invited you to a message
+ %{message}
- > **%{topic_title}**
- >
- > %{topic_excerpt}
+ ---
+ %{respond_instructions}
- at
+ user_invited_to_private_message_pm_staged:
+ subject_template: "[%{site_name}] %{username} invited you to a message '%{topic_title}'"
+ text_body_template: |
+ %{header_instructions}
- > %{site_title} -- %{site_description}
+ %{message}
- Please visit this link to view the message: %{base_url}%{url}
+ ---
+ %{respond_instructions}
user_invited_to_topic:
- subject_template: "[%{site_name}] %{username} invited you to a topic '%{topic_title}'"
+ subject_template: "[%{site_name}] %{username} invited you to '%{topic_title}'"
text_body_template: |
+ %{header_instructions}
- %{username} invited you to a discussion
+ %{message}
- > **%{topic_title}**
- >
- > %{topic_excerpt}
-
- at
-
- > %{site_title} -- %{site_description}
-
- Please visit this link to view the message: %{base_url}%{url}
+ ---
+ %{respond_instructions}
user_replied:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+
+ user_replied_pm:
+ subject_template: "[%{site_name}] [PM] %{topic_title}"
+ text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1941,6 +2150,20 @@ en:
user_quoted:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+
+ user_linked:
+ subject_template: "[%{site_name}] %{topic_title}"
+ text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1951,6 +2174,20 @@ en:
user_mentioned:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+
+ user_group_mentioned:
+ subject_template: "[%{site_name}] %{topic_title}"
+ text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1961,6 +2198,8 @@ en:
user_posted:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1971,6 +2210,8 @@ en:
user_posted_pm:
subject_template: "[%{site_name}] [PM] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1978,6 +2219,15 @@ en:
---
%{respond_instructions}
+ user_posted_pm_staged:
+ subject_template: "%{optional_re}%{topic_title}"
+ text_body_template: |
+
+ %{message}
+
+ ---
+ %{respond_instructions}
+
digest:
why: "A brief summary of %{site_link} since your last visit on %{last_seen_at}"
subject_template: "[%{site_name}] Digest"
@@ -2029,13 +2279,35 @@ en:
Click the following link to choose a password for your new account:
%{base_url}/users/password-reset/%{email_token}
- authorize_email:
+ confirm_new_email:
subject_template: "[%{site_name}] Confirm your new email address"
text_body_template: |
Confirm your new email address for %{site_name} by clicking on the following link:
%{base_url}/users/authorize-email/%{email_token}
+ confirm_old_email:
+ subject_template: "[%{site_name}] Confirm your current email address"
+ text_body_template: |
+ Before we can change your email address, we need you to confirm that you control
+ the current email account. After you complete this step, we will have you confirm
+ the new email address.
+
+ Confirm your current email address for %{site_name} by clicking on the following link:
+
+ %{base_url}/users/authorize-email/%{email_token}
+
+ notify_old_email:
+ subject_template: "[%{site_name}] Your email address has been changed"
+ text_body_template: |
+ This is an automated message to let you know that your email address for
+ %{site_name} has been changed. If this was done in error, please contact
+ a site administrator.
+
+ Your email address has been changed to:
+
+ %{new_email}
+
signup_after_approval:
subject_template: "You've been approved on %{site_name}!"
text_body_template: |
@@ -2067,7 +2339,7 @@ en:
If the above link is not clickable, try copying and pasting it into the address bar of your web browser.
page_not_found:
- title: "The page you requested doesn't exist or is private."
+ title: "Oops! That page doesn’t exist or is private."
popular_topics: "Popular"
recent_topics: "Recent"
see_more: "More"
@@ -2098,7 +2370,7 @@ en:
size_not_found: "Sorry, but we couldn't determine the size of the image. Maybe your image is corrupted?"
avatar:
- missing: "Sorry, but the avatar you have selected is not present on the server. Can you try uploading it again?"
+ missing: "Sorry, we can't find any avatar associated with that email address. Can you try uploading it again?"
flag_reason:
sockpuppet: "A new user created a topic, and another new user at the same IP address replied. See the flag_sockpuppets site setting."
@@ -2115,6 +2387,7 @@ en:
post_deleted: "post was deleted by the author"
user_suspended: "user was suspended"
already_read: "user has already read this post"
+ exceeded_limit: "Exceeded max_emails_per_day_per_user"
message_blank: "message is blank"
message_to_blank: "message.to is blank"
text_part_body_blank: "text_part.body is blank"
@@ -2478,65 +2751,214 @@ en:
status:open
status:closed
status:archived
status:noreplies
status:single_user
category:foo
user:foo
group:foo
badge:foo
in:likes
in:posted
in:watching
in:tracking
in:private
-
in:bookmarks
in:first
-
posts_count:num
min_age:days
max_age:days
+
in:bookmarks
in:first
in:pinned
in:unpinned
+
posts_count:num
before:days or date
after:days or date
+
- rainbows category:parks status:open order:latest
will search for topics containing the word "rainbows" in the category "parks" that are not closed or archived, ordered by date of last post.
+
rainbows category:parks status:open order:latest
will search for topics containing the word "rainbows" in the category "parks" that are not closed or archived, ordered by date of last post.rainbows category:"parks and gardens" in:bookmarks
will search for topics containing the word "rainbows" in the category "parks and gardens" that are bookmarked by you.badges: - long_descriptions: - autobiographer: | - This badge is granted for filling out your user profile and selecting a profile picture. Letting the community know more about who you are and what you're interested in makes for a better, more connected community. - first_like: | - This badge is granted the first time you like a post using the :heart: button. Liking posts is a great way to let your fellow community members know that what they posted was interesting, useful, cool, or fun. Share the love! - first_link: | - This badge is granted the first time you place a link to another topic in a reply. Linking topics helps fellow readers find interesting related conversations, by showing connections between topics in both directions. - first_quote: | - This badge is granted the first time you quote a post in your reply. Quoting relevant sections of earlier posts in your reply helps keep discussions focused and on topic. - first_share: | - This badge is granted the first time you share a link to a reply or topic using the share button. Sharing links is a great way to show off interesting discussions with the rest of the world and grow your community. - read_guidelines: | - This badge is granted for reading the community guidelines. Following and sharing these simple guidelines helps build a safe, fun, and sustainable community. - reader: | - This badge is granted for reading a long topic. Reading is fundamental. Reading closely helps you follow the conversation and leads to better, more complete replies. - editor: | - This badge is granted for editing your post. Don't hesitate to edit your posts any time to improve them, fix small mistakes, or add anything you forgot. - first_flag: | - This badge is granted for flagging a post. Flagging is critical to the health of your community. If you notice any posts that require moderator attention please - do not hesitate to flag. You may also use the flagging dialog to send messages to fellow users. - nice_share: | - This badge is granted for sharing a link to a post that's visited by 25 outside visitors. Nice job! Sharing links to interesting discussions with friends is an excellent way to grow our community. - welcome: | + editor: + name: Editor + description: First post edit + long_description: | + This badge is granted the first time you edit one of your posts. While you won't be able to edit your posts forever, editing is always a good idea — you can improve your posts, fix small mistakes, or add anything you missed when you originally posted. Edit to make your posts even better! + basic_user: + name: Basic + description: Granted all essential community functions + long_description: | + This badge is granted when you reach trust level 1. Thanks for sticking around a little while and reading a few topics to learn what our community is about. Your new user restrictions have been lifted; you've been granted all essential community abilities, such as personal messaging, flagging, wiki editing, and the ability to post multiple images and links. + member: + name: Member + description: Granted invitations, group messaging, more likes + long_description: | + This badge is granted when you reach trust level 2. Thanks for participating over a period of weeks to truly join our community. You can now send invitations from your user page or individual topics, create group personal messages, and have a few more likes per day. + regular: + name: Regular + description: Granted recategorize, rename, followed links, wiki, more likes + long_description: | + This badge is granted when you reach trust level 3. Thanks for being a regular part of our community over a period of months. You're now one of the most active readers, and a reliable contributor that makes our community great. You can now recategorize and rename topics, take advantage of more powerful spam flags, access a private lounge area, and you'll also get lots more likes per day. + leader: + name: Leader + description: Granted global edit, pin, close, archive, split and merge, more likes + long_description: | + This badge is granted when you reach trust level 4. You're a leader in this community as selected by staff, and you set a positive example for the rest of the community in your actions and words here. You have the ability to edit all posts, take common topic moderator actions such as pin, close, unlist, archive, split, and merge, and you have tons of likes per day. + welcome: + name: Welcome + description: Received a like + long_description: | This badge is granted when you receive your first like on a post. Congratulations, you've posted something that your fellow community members found interesting, cool, or useful! - anniversary: | - This badge is granted when you've been a member for a year with at least one post in that year. Thanks for sticking around and contributing to our community! - good_share: | - This badge is granted for sharing a link to a post that's visited by 300 outside visitors. Good work! You've shown off an interesting discussion to a lot of new people and helped us grow. - great_share: | - This badge is granted for sharing a link to a post that's visited by 100 outside visitors. Wow! You've promoted an interesting discussion to a huge new audience for this community, and helped us grow in a big way. - nice_post: | - This badge is granted for creating a reply that gets 10 likes. Nice job! - nice_topic: | - This badge is granted for creating a topic that gets 10 likes. Nice job! - good_post: | - This badge is granted for creating a reply that gets 25 likes. Good work! - good_topic: | - This badge is granted for creating a topic that gets 25 likes. Good work! - great_post: | - This badge is granted for creating a post that gets 50 likes. Wow! - great_topic: | - This badge is granted for creating a reply that gets 50 likes. Wow! - basic: | - This badge is granted when you reach trust level 1. Thanks for sticking around a little while and reading a few topics to learn what our community is about. Your new user restrictions have been lifted, and you've been granted all essential community abilities, such as personal messaging, flagging, wiki editing, and the ability to post images and multiple links. - member: | - This badge is granted when you reach trust level 2. Thanks for participating over a period of weeks to more join our community. You can now send personal invitations from your user page or individual topics, create group messages, and a few more likes per day. - regular: | - This badge is granted when you reach trust level 3. Thanks for being a regular part of our community over a period of months, one of the most active readers and a reliable contributor to what makes this community great. You can now recategorize and rename topics, access a private lounge area, more powerful spam flags, and lots more likes per day. - leader: | - This badge is granted when you reach trust level 4. You're a leader in this community as selected by staff, and set a positive example for the community in your deeds and words. You have the ability to edit all posts, take topic moderator actions such as pin, close, unlist, archive, split, and merge, and tons of likes per day. + autobiographer: + name: Autobiographer + description: Filled out profile information + long_description: | + This badge is granted for filling out your user profile and selecting a profile picture. Letting the community know a bit more about who you are and what you're interested in makes for a better, more connected community. Join us! + anniversary: + name: Anniversary + description: Active member for a year, posted at least once + long_description: | + This badge is granted when you've been a member for a year with at least one post in that year. Thank you for sticking around and contributing to our community. We couldn't do it without you. + nice_post: + name: Nice Reply + description: Received 10 likes on a reply + long_description: | + This badge is granted when your reply gets 10 likes. Your reply really made an impression on the community and helped move the conversation forward! + good_post: + name: Good Reply + description: Received 25 likes on a reply + long_description: | + This badge is granted when your reply gets 25 likes. Your reply was exceptional and made the conversation a whole lot better for everyone! + great_post: + name: Great Reply + description: Received 50 likes on a reply + long_description: | + This badge is granted when your reply gets 50 likes. Wow! Your reply was inspiring, fascinating, hilarious, or insightful and the community loved it. + nice_topic: + name: Nice Topic + description: Received 10 likes on a topic + long_description: | + This badge is granted when your topic gets 10 likes. Hey, you started an interesting conversation that the community enjoyed! + good_topic: + name: Good Topic + description: Received 25 likes on a topic + long_description: | + This badge is granted when your topic gets 25 likes. You launched a vibrant conversation that the community rallied around and loved! + great_topic: + name: Great Topic + description: Received 50 likes on a topic + long_description: | + This badge is granted when your topic gets 50 likes. You kicked off a fascinating conversation and the community enjoyed the dynamic discussion that resulted! + nice_share: + name: Nice Share + description: Shared a post with 25 unique visitors + long_description: | + This badge is granted for sharing a link that was clicked by 25 outside visitors. Thanks for spreading the word about our discussions, and this community. + good_share: + name: Good Share + description: Shared a post with 300 unique visitors + long_description: | + This badge is granted for sharing a link that was clicked by 300 outside visitors. Good work! You've shown off a great discussion to a bunch of new people and helped this community grow. + great_share: + name: Great Share + description: Shared a post with 1000 unique visitors + long_description: | + This badge is granted for sharing a link that was clicked by 1000 outside visitors. Wow! You've promoted an interesting discussion to a huge new audience, and helped us grow our community in a big way! + first_like: + name: First Like + description: Liked a post + long_description: | + This badge is granted the first time you like a post using the :heart: button. Liking posts is a great way to let your fellow community members know that what they posted was interesting, useful, cool, or fun. Share the love! + first_flag: + name: First Flag + description: Flagged a post + long_description: | + This badge is granted the first time you flag a post. Flagging is how we all help keep this a clean, well lit place for everyone. If you notice any posts that require moderator attention for any reason please don't hesitate to flag. You can also flag to send personal messages to fellow users if you see an issue with their post. If you see a problem, :flag_black: flag it! + promoter: + name: Promoter + description: Invited a user + long_description: | + This badge is granted when you invite someone to join the community via the invite button on your user page, or at the bottom of a topic. Inviting friends who might be interested in specific discussions is an great way to introduce new people to our community, so thanks! + campaigner: + name: Campaigner + description: Invited 3 basic users + long_description: | + This badge is granted when you've invited 3 people who subsequently spent enough time on the site to become basic users. A vibrant community needs a regular infusion of newcomers who regularly participate and add new voices to the conversationss. + champion: + name: Champion + description: Invited 5 members + long_description: | + This badge is granted when you've invited 5 people who subsequently spent enough time on the site to become full members. Wow! Thanks for expanding the diversity of our community with new members! + first_share: + name: First Share + description: Shared a post + long_description: | + This badge is granted the first time you share a link to a reply or topic using the share button. Sharing links is a great way to show off interesting discussions with the rest of the world and grow your community. + first_link: + name: First Link + description: Added a link to another topic + long_description: | + This badge is granted the first time you add a link to another topic. Linking topics helps fellow readers find interesting related conversations, by showing the connections between topics in both directions. Link freely! + first_quote: + name: First Quote + description: Quoted a post + long_description: | + This badge is granted the first time you quote a post in your reply. Quoting relevant sections of earlier posts in your reply helps keep discussions focused and on topic. And it's easy: you can quickly quote by highlighting a section of any post and using the Quote Reply button that appears near the selection. Quote generously! + read_guidelines: + name: Read Guidelines + description: Read the community guidelines + long_description: | + This badge is granted for reading the community guidelines. Following and sharing these simple guidelines helps build a safe, fun, and sustainable community for everyone. Always remember there's another human being, one very much like yourself, on the other side of that screen. Be nice! + reader: + name: Reader + description: Read every reply in a topic with more than 100 replies + long_description: | + This badge is granted the first time you read a long topic with more than 100 replies. Reading a conversation closely helps you follow the discussion, understand different viewpoints, and leads to more interesting conversations. The more you read, the better the conversation gets. As we like to say, Reading is Fundamental! :slight_smile: + popular_link: + name: Popular Link + description: Posted an external link with 50 clicks + long_description: | + This badge is granted when a link you shared gets 50 clicks. Thanks for posting a useful link that added interesting context to the conversation! + hot_link: + name: Hot Link + description: Posted an external link with 300 clicks + long_description: | + This badge is granted when a link you shared gets 300 clicks. Thanks for posting a fascinating link that drove the conversation forward and illuminated the discussion! + famous_link: + name: Famous Link + description: Posted an external link with 1000 clicks + long_description: | + This badge is granted when a link you shared gets 1000 clicks. Wow! You posted a link that significantly improved the conversation by addding essential detail, context, and information. Great work! + appreciated: + name: Appreciated + description: Received 1 like on 20 posts + long_description: | + This badge is granted when you receive at least one like on 20 different posts. The community is enjoying your contributions to the conversations here! + respected: + name: Respected + description: Received 2 likes on 100 posts + long_description: | + This badge is granted when you receive at least 2 likes on 100 different posts. The community is growing to respect your many contributions to the conversations here. + admired: + name: Admired + description: Received 5 likes on 300 posts + long_description: | + This badge is granted when you receive at least 5 likes on 300 different posts. Wow! The community admires your frequent, high quality contributions to the conversations here. + out_of_love: + name: Out of Love + description: Used 50 likes in a day + long_description: | + This badge is granted when you use all 50 of your daily likes. Remembering to take a moment and like the posts you enjoy and appreciate encourages your fellow community members to create even more great discussions in the future. + higher_love: + name: Higher Love + description: Used 50 likes in a day 5 times + long_description: | + This badge is granted when you use all 50 of your daily likes for 5 days. Thanks for taking the time actively encouraging the best conversations every day! + crazy_in_love: + name: Crazy in Love + description: Used 50 likes in a day 20 times + long_description: | + This badge is granted when you use all 50 of your daily likes for 20 days. Wow! You're a model of regularly encouraging your fellow community members! + thank_you: + name: Thank You + description: Has 20 liked posts and gave 10 likes + long_description: | + This badge is granted when you've received 20 likes on your posts and have given 10 or more likes in return. When someone likes your posts, you find the time to like what other people are posting in return. + gives_back: + name: Gives Back + description: Has 100 liked posts and gave 100 likes + long_description: | + This badge is granted when you've received 100 likes and have given 100 or more likes in return. Thanks for paying it forward, and liking in return! + empathetic: + name: Empathetic + description: Has 500 liked posts and gave 1000 likes + long_description: | + This badge is granted when you've received 500 likes and have given 1000 or more likes in return. Wow! You're a model of generosity and mutual love :two_hearts:. admin_login: success: "Email Sent" @@ -2550,3 +2972,6 @@ en: performance_report: initial_post_raw: This topic includes daily performance reports for your site. initial_topic_title: Website performance reports + + topic_invite: + user_exists: "Sorry, that user has already been invited. You may only invite a user to a topic once." diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml index 385334271f4..2265a587b22 100644 --- a/config/locales/server.es.yml +++ b/config/locales/server.es.yml @@ -10,18 +10,41 @@ es: short_date_no_year: "D MMM" short_date: "D MMM, YYYY" long_date: "D MMMM, YYYY h:mma" + datetime_formats: &datetime_formats + formats: + short: "%d-%m-%Y" + short_no_year: "%-d %B" + date_only: "%-d %B, %Y" + date: + month_names: [null, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] + <<: *datetime_formats title: "Discourse" topics: "Temas" posts: "posts" loading: "Cargando" powered_by_html: 'Funciona gracias a Discourse, se ve mejor con JavaScript activado' log_in: "Iniciar sesión" - via: "%{username} vía %{site_name}" - is_reserved: "está reservado" purge_reason: "Eliminada automáticamente como cuenta abandonada, sin activar" disable_remote_images_download_reason: "La descarga de imágenes remotas se desactivó porque no había suficiente espacio disponible en disco." anonymous: "Anónimos" - errors: + emails: + incoming: + default_subject: "Email entrante desde %{email}" + show_trimmed_content: "Mostrar contenido recortado" + errors: + empty_email_error: "Sucede cuando el texto en bruto del email que recibimos está en blanco." + no_message_id_error: "Sucede cuando el email no tiene Id del mensaje en el encabezado." + auto_generated_email_error: "Sucede cuando la 'prioridad' en el encabezado está establecida en: lista, basura, en masa o auto_respuesta, o cuando algún otro encabezado contiene: auto-enviado, auto-respondido o auto-generado." + no_body_detected_error: "Sucede cuando no podemos extraer el cuerpo del mensaje y no hay archivos adjuntos." + inactive_user_error: "Sucede cuando el emisor no está activo." + blocked_user_error: "Sucede cuando el emisor ha sido bloqueado." + bad_destination_address: "Sucede cuando ninguna de las direcciones de email en los campos Para/Cc/Bcc coincide con un email configurado como dirección de correo entrante." + strangers_not_allowed_error: "Sucede cuando un usuario intentó crear un nuevo tema en una categoría de la que no forma parte." + insufficient_trust_level_error: "Sucede cuando un usuario intentó crear un nuevo tema en una categoría para la que no tiene el nivel de confianza requerido." + reply_user_not_matching_error: "Sucede cuando una respuesta vino de una dirección de email diferente a la que fue enviada la notificación." + topic_not_found_error: "Sucede cuando entró una respuesta pero el tema relacionado ha sido eliminado." + topic_closed_error: "Sucede cuando entró una respuesta pero el tema relacionado ha sido cerrado. " + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "está limitado a %{max} caracteres; has introducido %{length}." @@ -37,8 +60,10 @@ es: exclusion: está reservado greater_than: debe ser más grande que %{count} greater_than_or_equal_to: debe ser igual o más grande que %{count} + has_already_been_used: "ya se está utilizando" inclusion: no está incluido en la lista invalid: no es válido + is_invalid: "no es válido; intenta ser más descriptivo" less_than: debe ser menor que %{count} less_than_or_equal_to: debe ser menor o igual que %{count} not_a_number: no es un número @@ -82,6 +107,8 @@ es: not_found: "No se ha podido encontrar la URL o recurso solicitado." invalid_access: "No tienes permiso para ver el recurso solicitado." read_only_mode_enabled: "El sitio está en modo sólo lectura. Las interacciones están deshabilitadas." + reading_time: "Tiempo de lectura" + likes: "Me gusta" too_many_replies: one: "Lo sentimos, pero los usuarios nuevos están limitados a 1 respuesta en el mismo tema." other: "Lo sentimos, pero los usuarios nuevos están limitados a %{count} respuestas en el mismo tema." @@ -98,29 +125,29 @@ es: replies: one: "1 respuesta" other: "%{count} respuestas" + no_mentions_allowed: "Lo sentimos, pero no puedes mencionar a otros usuarios." too_many_mentions: - zero: "Lo sentimos, pero no puedes mencionar a otros usuarios." - one: "Lo sentimos, pero solo puedes mencionar a un usuario en un post." + one: "Lo sentimos, solo puedes mencionar a un usuario en un post." other: "Lo sentimos, pero solo puedes mencionar a %{count} usuarios en un post." + no_mentions_allowed_newuser: "Lo sentimos, pero los usuarios nuevos no pueden mencionar a otros usuarios." too_many_mentions_newuser: - zero: "Lo sentimos, pero los usuarios nuevos no pueden mencionar a otros usuarios." one: "Lo sentimos, pero los usuarios nuevos solo pueden mencionar a un usuario en un post." other: "Lo sentimos, pero los usuarios nuevos solo pueden mencionar a %{count} usuarios en un post." + no_images_allowed: "Lo sentimos, pero los usuarios nuevos no pueden poner imágenes en los mensajes." too_many_images: - zero: "Lo sentimos, pero los usuarios nuevos no pueden poner imágenes en posts." one: "Lo sentimos, pero los usuarios nuevos solo pueden poner una imagen por post." other: "Lo sentimos, los nuevos usuarios solo pueden poner %{count} imágenes en un post." + no_attachments_allowed: "Lo sentimos, los usuarios nuevos no pueden adjuntar archivos en posts." too_many_attachments: - zero: "Lo sentimos, los usuarios nuevos no pueden adjuntar archivos en posts." one: "Lo sentimos, los usuarios nuevos solo pueden adjuntar un archivo por post" other: "Lo sentimos, los usuarios nuevos solo pueden adjuntar %{count} archivos por post." + no_links_allowed: "Lo sentimos, los nuevos usuarios no pueden poner enlaces en los posts." too_many_links: - zero: "Lo sentimos, los nuevos usuarios no pueden poner enlaces en los posts." one: "Lo sentimos, los nuevos usuarios solo pueden poner un link en un post." other: "Lo sentimos, los nuevos usuarios solo pueden poner %{count} enlaces en un post." spamming_host: "Lo sentimos, no puedes publicar un enlace a esa web." user_is_suspended: "A los usuarios suspendidos no se les permite publicar." - topic_not_found: "Algo ha salido mal. Tal vez este tema fue cerrado o eliminado mientras estabas mirando en él?" + topic_not_found: "Algo ha salido mal. ¿Tal vez este tema ha sido cerrado o eliminado mientras estabas lo estabas mirando?" just_posted_that: "es demasiado parecido a lo que has publicado recientemente" has_already_been_used: "ya ha sido utilizado" invalid_characters: "contiene caracteres no válidos" @@ -139,9 +166,14 @@ es: private_message_abbrev: "Msj" rss_description: latest: "Temas recientes" - hot: "Temas calientes" + hot: "Temas candentes" + top: "Top temas" posts: "Últimos posts" + private_posts: "Últimos mensajes privados" + group_posts: "Últimos posts de %{group_name}" + group_mentions: "Últimas menciones de %{group_name}" too_late_to_edit: "Ese post fue publicado hace demasiado tiempo. No puede ser editado ni eliminado." + revert_version_same: "La versión actual es la misma que la versión a la que intentas volver." excerpt_image: "imagen" queue: delete_reason: "Eliminado vía moderación" @@ -149,6 +181,10 @@ es: errors: can_not_modify_automatic: "No puedes modificar un grupo automático" member_already_exist: "'%{username}' ya es miembro de este grupo." + invalid_domain: "'%{domain}' no es un dominio válido." + invalid_incoming_email: "'%{email}' no es una dirección de email válida." + email_already_used_in_group: "'%{email}' ya está siendo utilizado por el grupo '%{group_name}'." + email_already_used_in_category: "'%{email}' ya está siendo utilizado por la categoría '%{category_name}'." default_names: everyone: "todos" admins: "administradores" @@ -203,11 +239,11 @@ es: En vez de añadir otra respuesta, por favor, considera editar tus respuestas previas o visitar otros temas. reviving_old_topic: | - ### ¿Resucitar este tema? + ### ¿Revivir este tema? La última respuesta a este tema fue hace %{days} días. Tu post reactivará el tema subiéndolo a las primeras posiciones de la lista y notificará a aquellos involucrados en la conversación previa. - ¿Estás seguro de que quieres continuar esta antigua conversación? + ¿Estás seguro de que quieres continuar esta conversación antigua? activerecord: attributes: category: @@ -217,9 +253,6 @@ es: user_profile: bio_raw: "Sobre mí" errors: - messages: - is_invalid: "no es válido; intenta ser un poco más descriptivo" - has_already_been_used: "ya ha sido utilizado" models: topic: attributes: @@ -240,6 +273,7 @@ es: attributes: hex: invalid: "no es un color válido" + <<: *errors user_profile: no_info_me: "
" no_info_other: "
" @@ -275,13 +309,15 @@ es: [trust]: https://meta.discourse.org/t/what-do-user-trust-levels-do/4924 category: topic_prefix: "Definición de la categoría %{category}" - replace_paragraph: "[Reemplaza el primer párrafo con una descripción corta de tu nueva categoría. Esta guía aparecerá en el área de selección de categoría, por lo que trata de mantenerla por debajo de los 200 caracteres.]" - post_template: "%{replace_paragraph}\n\nUtiliza los siguientes párrafos para dar una descripción más larga y también para establecer cualquier norma o recomendación para esta categoría.\n\nAlgunos aspectos a tener en consideración en cualquier respuesta:\n\n- ¿Para que es esta categoría? ¿Por qué deben que seleccionar esta categoría como tema?\n\n- ¿Qué diferencia esta categoría de las demas?\n\n- ¿Es necesaria esta categoría?\n\n- ¿Deberíamos unir esta categoría con otra o dividirla en varias?\n" + replace_paragraph: "(Sustituye este primer párrafo con una descripción breve de tu nueva categoría. Esta descripción aparecerá en el área de selección de categoría, por ello, intenta que sea inferior a 200 caracteres. **Hasta que edites esta descripción o se creen temas, esta categoría no aparecerá en la página de categorías.**)" + post_template: "%{replace_paragraph}\n\nUtiliza los siguientes párrafos para una descripción más detallada, o establece las directrices o reglas de la categoría::\n\n- ¿Para qué podrían usar los usuarios esta categoría? ¿De qué trata?\n\n- ¿Cómo se distingue de otras categorías existentes?\n\n- ¿Qué temas debería contener esta categoría normalmente?\n\n- ¿Necesitamos esta categoría? ¿Podría agruparse o converger con otra categoría o subcategoría?\n" errors: uncategorized_parent: "Sin categoría no puede tener categoría primaria" self_parent: "La categoría primaria de una subcategoría no puede ser ella misma." depth: "No se puede anidar una subcategoría debajo de otra" - email_in_already_exist: "La dirección de email entrante '%{email_in}' ya está en uso para la categoría '%{category_name}'." + invalid_email_in: "'%{email}' no es una dirección de email válida." + email_already_used_in_group: "'%{email}' ya está siendo utilizado por el grupo '%{group_name}'." + email_already_used_in_category: "'%{email}' ya está siendo utilizado por la categoría '%{category_name}'." cannot_delete: uncategorized: "Sin categoría no se puede eliminar" has_subcategories: "No se puede eliminar esta categoría porque tiene sub-categorías." @@ -289,21 +325,36 @@ es: one: "No se puede eliminar esta categoría porque tiene 1 tema. El más antiguo es %{topic_link}." other: "No se puede eliminar esta categoría porque tiene %{count} temas. El tema más antiguo es %{topic_link}." topic_exists_no_oldest: "No se puede eliminar esta categoría porque el contador de temas está en %{count}." + uncategorized_description: "Debates que no necesitan una categoría, o bien no encajan en alguna de las categorías existentes." trust_levels: newuser: title: "nuevo usuario" basic: title: "usuario básico" - regular: + member: title: "miembro" + regular: + title: "regular" leader: - title: "habitual" - elder: title: "líder" change_failed_explanation: "Trataste de degradar a %{user_name} a '%{new_trust_level}'. Sin embargo su nivel de confianza ya es '%{current_trust_level}'. %{user_name} va a permanecer en '%{current_trust_level}' - si deseas degradar al usuario primero bloquea su nivel de confianza." rate_limiter: - slow_down: "Has realizado esta acción demasiadas veces, inténtalo de nuevo más tarde" + slow_down: "Has realizado esta acción muchas veces, inténtalo de nuevo más tarde." too_many_requests: "Estas haciendo eso demasiado a menudo. Por favor espera %{time_left} antes de intentarlo de nuevo." + by_type: + first_day_replies_per_day: "Has llegado al límite de respuestas que un nuevo usuario puede crear en su primer día. Por favor, espera %{time_left} antes de intentarlo de nuevo." + first_day_topics_per_day: "Has llegado al límite de temas que un nuevo usuario puede crear en su primer día. Por favor, espera %{time_left} antes de intentarlo de nuevo." + create_topic: "Estás creando temas demasiado rápido. Por favor, espera %{time_left} antes de intentarlo de nuevo." + create_post: "Estás respondiendo demasiado rápido. Por favor, espera %{time_left} antes de intentarlo de nuevo." + delete_post: "Estás eliminando posts demasiado rápido. Por favor espera %{time_left} antes de intentarlo de nuevo." + topics_per_day: "Has llegado al límite de nuevos temas de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + pms_per_day: "Has llegado al límite de mensajes de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + create_like: "Has llegado al límite de Me gusta de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + create_bookmark: "Has llegado al límite de marcadores de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + edit_post: "Has llegado al límite de ediciones de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + live_post_counts: "Estás solicitando actualizaciones de posts demasiado rápido. Por favor, espera %{time_left} antes de intentarlo de nuevo." + unsubscribe_via_email: "Has alcanzado el máximo de bajas de suscripción vía email por hoy. Por favor espera %{time_left} antes de intentarlo de nuevo." + topic_invitations_per_day: "Has alcanzado el máximo de invitaciones a temas por hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." hours: one: "1 hora" other: "%{count} horas" @@ -398,6 +449,11 @@ es: confirmed: "Tu email ha sido actualizado." please_continue: "Continuar a %{site_name}" error: "Hubo un problema cambiando tu dirección de email. ¿Quizás la dirección ya está en uso?" + error_staged: "Hubo un error al cambiar tu email. La dirección ya está en uso por un usuario provisional." + already_done: "Lo sentimos, este enlace de confirmación ya no es válido. ¿Quizá tu email ya fue cambiado?" + authorizing_old: + title: "Gracias por confirmar tu dirección de correo actual" + description: "Te enviaremos un email a tu nueva dirección para confirmar." activation: action: "Haz clic aquí para activar tu cuenta" already_done: "Lo sentimos, este link de confirmación de cuenta ya no es válido. ¿Quizás tu cuenta ya está activa?" @@ -422,16 +478,16 @@ es: description: 'Este post contiene contenido que una persona sensata podría considerar ofensivo, abusivo o que viola nuestras directrices de comunidad.' long_form: 'reportado como inapropiado' notify_user: - title: 'Notificar por mensaje a @{{username}}' - description: 'Este post contiene algo que yo quiero hablar con esta persona directa y privadamente. No se marca como bandera.' + title: 'Enviar un mensaje a @{{username}}' + description: 'Quiero hablar con esta persona de forma directa y privada sobre su mensaje.' long_form: 'usuario notificado vía mensaje' email_title: 'Tu publicación en "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: title: "Notificar a los moderadores" - description: 'Este post requiere la atención de un moderador por otra razón distinta a las mencionadas arriba.' - long_form: 'reportado para atención de los moderadores' - email_title: 'Un post en "%{title}" requiere la atención de un moderador' + description: 'Este mensaje requiere la atención del equipo de moderación por una razón no especificada arriba.' + long_form: 'reportó esto' + email_title: 'Un mensaje en "%{title}" requiere atención del staf' email_body: "%{link}\n\n%{message}" bookmark: title: 'Marcador' @@ -456,7 +512,7 @@ es: long_form: 'marcado como inapropiado' notify_moderators: title: "Notificar a los moderadores" - description: 'Este tema requiere la atención de un moderador, en base a nuestras directrices, CDS, o por otra razón distinta a las mencionadas.' + description: 'Este tema requiere atención del equipo de moderación basándose en las pautas de la comunidad o los Términos y condiciones, o por otra razón no especificada arriba.' long_form: 'reportado para atención de los moderadores' email_title: 'El tema "%{title}" requiere la atención de un moderador' email_body: "%{link}\n\n%{message}" @@ -492,6 +548,10 @@ es: title: "Nuevos usuarios" xaxis: "Día" yaxis: "Número de usuarios nuevos" + profile_views: + title: "Visitas a perfil de usuario" + xaxis: "Día" + yaxis: "Número de perfiles de usuario vistos" topics: title: "Temas nuevos" xaxis: "Día" @@ -643,42 +703,16 @@ es: consumer_email_warning: "Tu sitio está configurado para Utilizar Gmail (u otro servicio de email de consumidor) para enviar email. Gmail limita la cantidad de emails que puedes enviar. Considera usar un proveedor de servicio email como mandrill.com para asegurarte la entrega de los emails." site_contact_username_warning: "Introduce el nombre de un administrador o moderador simpático desde el cual se enviarán mensajes automáticos importantes. Actualiza site_contact_username en Ajustes del sitio." notification_email_warning: "Las notificaciones por email no están siendo enviadas desde una dirección de correo electrónico válida en tu dominio; la entrega de emails será errática y poco fiable. Por favor, establece para notification_email una dirección de correo electrónico local válida en Ajustes del sitio." - content_types: - education_new_reply: - title: "Educación de nuevo usuario: primeras respuestas" - description: "Un mensaje emergente de guia 'justo a tiempo' aparecerá automáticamente sobre el compositor cuando nuevos usuarios empiecen ingresar sus dos primeras respuestas." - education_new_topic: - title: "Educación de nuevo usuario: primeros temas" - description: "Un mensaje emergente de guia 'justo a tiempo' aparecerá automáticamente sobre el compositor cuando nuevos usuarios empiecen ingresar sus dos primeras respuestas." - usage_tips: - title: "Consejos para nuevos usuarios" - description: "Guía e información esencial para los nuevos usarios." - welcome_user: - title: "Bienvenido: nuevo usuario" - description: "Un mensaje que se enviará automáticamente a todos los nuevos usuarios cuando se registren." - welcome_invite: - title: "Bienvenido: usuario invitado" - description: "Un mensaje que se enviará automáticamente a todos los nuevos usuarios invitados cuando acepten la invitación de otro usuario." - login_required_welcome_message: - title: "Registro requerido: mensaje de bienvenida" - description: "El mensaje de bienvenida que se muestra a los usuarios que han salido cuando la configuración de 'login required' está activada." - login_required: - title: "Registro Requerido: Homepage" - description: "El texto mostrado para usuarios no autorizados cuando el registro es requerido en el sitio." - head: - title: "HTML head" - description: "HTML que va a ser insertado dentro de las
etiquetas"
- top:
- title: "Encabezado de página"
- description: "HTML que va a ser añadido encima de cada página (después del header, y antes de la navegación o el título del tema)."
- bottom:
- title: "Pie de página"
- description: "HTML que será añadido antes de la etiqueta "
+ subfolder_ends_in_slash: "La configuación del subdirectorio no es correcta; el campo DISCOURSE_RELATIVE_URL_ROOT termina con una barra."
+ email_polling_errored_recently:
+ one: "El email polling ha generado un error en las pasadas 24 horas. Mira en los logs para más detalles."
+ other: "El email polling ha generado %{count} errores en las pasadas 24 horas. Mira en los logs para más detalles."
site_settings:
censored_words: "Las palabras serán reemplazadas con ■■■■"
delete_old_hidden_posts: "Auto-borrar cualquier post que se quede oculto por mas de 30 días."
default_locale: "El idioma por defecto de Discourse (ISO 639-1 Code)"
allow_user_locale: "Permitir que los usuarios escojan su propio idioma para la interfaz"
+ set_locale_from_accept_language_header: "Establece el lenguaje de la interfaz para usuarios anónimos desde el lenguaje declarado por su navegador web. (EXPERIMENTAL, no funciona con caché anónimo)"
min_post_length: "Extensión mínima de los posts, en número de caracteres"
min_first_post_length: "Extensión mínima permitida en el primer mensaje (cuerpo del tema) en caracteres"
min_private_message_post_length: "Extensión mínima de los posts en los mensajes, en número de caracteres"
@@ -687,8 +721,8 @@ es:
max_topic_title_length: "Extensión máxima del título de los temas, en número de caracteres"
min_private_message_title_length: "Extensión mínima del título de los temas en mensajes, en número de caracteres"
min_search_term_length: "Extensión mínima de una búsqueda válida, en número de caracteres"
+ search_tokenize_chinese_japanese_korean: "Forzar la búsqueda a tokenizar Chino/Japonés/Coreano incluso en sitios que no basados en esos idiomas"
allow_uncategorized_topics: "Permitir la creación de temas sin categoría. AVISO: Si ya hay algún tema sin categoría, debes recategorizarlo antes de activar esta opción."
- uncategorized_description: "La descripción de la categoría Sin categoría. Déjalo en blanco para no añadir descripción."
allow_duplicate_topic_titles: "Permitir temas con títulos idénticos, duplicados."
unique_posts_mins: "¿Cuántos minutos deben pasar antes de que un usuario pueda publicar el mismo contenido de nuevo?"
educate_until_posts: "Cuando el usuario comienza a escribir su primer o primeros (n) posts, mostrar un pop-up con el panel de consejos para nuevos usuarios en el editor."
@@ -701,7 +735,7 @@ es:
download_remote_images_to_local: "Convertir imágenes remotas a imágenes locales descargándolas; esto previene imágenes rotas."
download_remote_images_threshold: "Mínimo espacio en disco necesario para descargar imágenes remotas de forma local (porcentaje)"
disabled_image_download_domains: "Las imágenes remotas que provengan de estos dominios no serán descargadas. Lista delimitada por barras."
- ninja_edit_window: "Durante (n) segundos después de publicar un post, se puede editar ese post sin crear una nueva versión en el historial."
+ editing_grace_period: "Durante (n) segundos después de publicar un post, se puede editar ese post sin crear una nueva versión en el historial."
post_edit_time_limit: "El autor puede editar o eliminar su post durante (n) minutos después de publicarlo. Pon un 0 para que pueda hacerlo siempre."
edit_history_visible_to_public: "Permitir a todos ver las versiones previas de un post editado. Si se deshabilita, solo los miembros del staff podrán verlas."
delete_removed_posts_after: "Los posts borrados por su autor serán automáticamente eliminados después de (n) horas. Si se establece este valor a 0, los posts serán eliminados automáticamente."
@@ -731,7 +765,7 @@ es:
summary_likes_required: "Mínimo de \"me gusta\" en un tema para habilitar 'Resumen de este tema'"
summary_percent_filter: "Cuando un usuario hace clic en 'Resumen de este tema', se muestra el n % mejores posts"
summary_max_results: "Máximo de posts devueltos en \"Resumen de este tema\""
- enable_private_messages: "Permitir a los usuarios de nivel de confianza 1 crear y responder mensajes"
+ enable_private_messages: "Permitir a los usuarios de nivel 1 (configurable vía nivel de confianza para enviar mensajes) crear y responder mensajes"
enable_long_polling: "Los mensajes usados para notificaciones pueden usar el long polling"
long_polling_base_url: "URL base usada para el 'long polling' (cuando un CDN esta sirviendo contenido dinámico, asegúrate de ajustar esto al 'pull' de origen) ejemplo: http://origin.site.com"
long_polling_interval: "Cantidad de tiempo que el servidor debe de esperar antes de responder a los clientes que no hay datos enviados (solamente usuarios con sesión iniciada)."
@@ -750,9 +784,10 @@ es:
notify_mods_when_user_blocked: "Si un usuario es bloqueado automáticamente, enviar un mensaje a todos los moderadores."
flag_sockpuppets: "Si un nuevo usuario responde a un tema desde la misma dirección de IP que el nuevo usuario que inició el tema, reportar los posts de los dos como spam en potencia."
traditional_markdown_linebreaks: "Utiliza saltos de línea tradicionales en Markdown, que requieren dos espacios al final para un salto de línea."
- allow_html_tables: "Permitir la inserción de tablas en Markdown usando etiquetas HTML como TABLE, THEAD, TD, TR o TH (requiere un rebake completo para todos los posts antiguos que contengan tablas)"
+ allow_html_tables: "Permitir la inserción de tablas en Markdown usando etiquetas HTML. Se permitirá usar TABLE, THEAD, TD, TR o TH (requiere un rebake completo para los posts antiguos que contengan tablas)"
post_undo_action_window_mins: "Número de minutos durante los cuales los usuarios pueden deshacer sus acciones recientes en un post (me gusta, reportes, etc)."
must_approve_users: "Los miembros administración deben aprobar todas las nuevas cuentas antes de que se les permita el acceso al sitio. AVISO: ¡habilitar esta opción en un sitio activo revocará el acceso a los usuarios que no sean moderadores o admin!"
+ pending_users_reminder_delay: "Notificar a los moderadores si hay nuevos usuarios que hayan estado esperando aprbación durante más estas horas. Usa -1 para desactivar estas notificaciones."
ga_tracking_code: "Código de Google Analytics, ej: UA-12345678-9; visita http://google.com/analytics"
ga_domain_name: "El nombre de dominio especificado en Google Analytics (ga.js). Ejemplo: misitio.com; ver en http://google.com/analytics"
ga_universal_tracking_code: "Código de seguimiento de Google Universal Analytics (analytics.js), ejemplo: UA-12345678-9; visita http://google.com/analytics"
@@ -761,6 +796,7 @@ es:
enable_noscript_support: "Habilitar el soporte de motor de búsqueda estándar webcrawler mediante la etiqueta noscript"
allow_moderators_to_create_categories: "Permitir a los moderadores crear nuevas categorías"
cors_origins: "Orígenes permitidos para las cross-origin requests (CORS). Cada origen debe incluir http:// or https://. La variable env DISCOURSE_ENABLE_CORS debe establecerse a verdadero para activar CORS."
+ use_admin_ip_whitelist: "Los admins solo pueden iniciar sesión si están en una dirección IP definida en la lista de Screened IPs (Admin > Logs > Screened Ips)."
top_menu: "Determinar que items aparecen en la navegación de la home y en qué orden. Ejemplo latest|new|unread|categories|top|read|posted|bookmarks"
post_menu: "Determina qué elementos aparecen en el menú de un post y en qué orden. Ejemplo: like|edit|flag|delete|share|bookmark|reply"
post_menu_hidden_items: "Los elementos del menú a ocultar por defecto en el menú de cada post a menos que se haga clic en el botón para expandir las opciones."
@@ -772,15 +808,15 @@ es:
suppress_reply_directly_above: "No mostrar el en-respuesta-a desplegable en un post cuando solo hay una sola respuesta justo encima del post."
suppress_reply_when_quoting: "No mostrar el desplegable en-respuesta-a en un post cuando el post cite la respuesta."
max_reply_history: "Número máximo de respuestas a mostrar al expandir en-respuesta-a"
- experimental_reply_expansion: "Ocultar respuestas intermedias cuando se expande una respuesta (experimental)"
topics_per_period_in_top_summary: "Número de mejores temas mostrados en el resumen de mejores temas."
topics_per_period_in_top_page: "Número de mejores temas mostrados en la vista expandida al clicar en 'ver más'."
redirect_users_to_top_page: "Redirigir automáticamente a los nuevos usuarios y a los ausentes de larga duración a la página de mejores temas."
+ top_page_default_timeframe: "Período de tiempo por defecto para la página de temas top"
show_email_on_profile: "Mostrar el e-mail los usuarios en su perfil (solamente visibles para ellos mismos y el staff)"
email_token_valid_hours: "Los tokens para restablecer contraseña olvidada / activar cuenta son válidos durante (n) horas."
email_token_grace_period_hours: "Los tokens para restablecer contraseña olvidada / activar cuenta son válidos durante (n) horas de periodo de gracia, después de ser redimidos."
enable_badges: "Activar el sistema de distintivos"
- enable_whispers: "Permitir a los usuarios enviar susurros a los moderadores"
+ enable_whispers: "Permitir al staff comunicarse privadamente en los temas. (experimental)"
allow_index_in_robots_txt: "Especificar en robots.txt que este sitio puede ser indexado por los motores de búsqueda web."
email_domains_blacklist: "Una lista de dominios de correo electrónico con los que los usuarios no se podrán registrar. Ejemplo: mailinator.com|trashmail.net"
email_domains_whitelist: "Una lista de dominios de email con los que los usuarios DEBERÁN registrar sus cuentas. AVISO: ¡los usuarios con un email con diferente dominio a los listados no estarán permitidos!"
@@ -798,6 +834,7 @@ es:
max_username_length: "Longitud máxima del nombre de usuario en caracteres."
reserved_usernames: "Nombres de usuario no permitidos en el registro."
min_password_length: "Longitud mínima de contraseña."
+ min_admin_password_length: "Longitud mínima de la contraseña para un Admin."
block_common_passwords: "No permitir contraseñas que están entre las 10.000 más comunes."
enable_sso: "Activar single sign on a través de un sitio externo (AVISO: ¡LAS DIRECCIONES DE EMAIL SERÁN VALIDADAS POR EL SITIO EXTERNO!)"
enable_sso_provider: "Implementar el protocolo del proveedor de SSO de Discourse en el endpoint /session/sso_provider requiere establecer un sso_secret"
@@ -818,6 +855,9 @@ es:
enable_twitter_logins: "Activar autenticación por Twitter, requiere una twitter_consumer_key y un twitter_consumer_secret"
twitter_consumer_key: "Comsumer key para autenticación por Twitter, registrado en http://dev.twitter.com"
twitter_consumer_secret: "Comsumer secret para autenticación por Twitter, registrado en http://dev.twitter.com"
+ enable_instagram_logins: "Activar la autenticación por Instagram, requiere instagram_consumer_key y instagram_consumer_secret"
+ instagram_consumer_key: "Consumer key para autenticación por Instagram"
+ instagram_consumer_secret: "Consumer secret para autenticación por Instagram"
enable_facebook_logins: "Activar autenticación por Facebook, requiere una facebook_app_id y un facebook_app_secret"
facebook_app_id: "App id para la autenticación por Facebook, registrado en https://developers.facebook.com/apps"
facebook_app_secret: "App secret para autenticación por Facebook, registrado en https://developers.facebook.com/apps"
@@ -830,9 +870,15 @@ es:
backup_frequency: "Con qué frecuencia, en días, crearemos un backup del sitio."
enable_s3_backups: "Sube copias de seguridad a S3 cuando complete. IMPORTANTE: requiere credenciales validas de S3 puestas Archivos configuración."
s3_backup_bucket: "El bucket remoto para mantener copias de seguridad. AVISO: Asegúrate de que es un bucket privado."
+ s3_disable_cleanup: "Desactivar el eliminado de backups de S3 cuando se eliminen de forma local."
+ backup_time_of_day: "Hora UTC del día cuando debería ejecutarse el backup."
+ backup_with_uploads: "Incluir archivos adjuntos en los backups programados. Desactivando esta opción tan solo se ejecutará una copia de seguridad de la base de datos."
active_user_rate_limit_secs: "Con qué frecuencia actualizaremos el campo 'last_seen_at', en segundos"
verbose_localization: "Mostrar sugerencias de localización extendida en la interface de usuario "
previous_visit_timeout_hours: "Cuanto tiempo debe pasar antes de que una visita sea considerada la 'visita previa', en horas"
+ top_topics_formula_log_views_multiplier: "valor del multiplicador de visitas (n) en la fórmula de temas top: `log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
+ top_topics_formula_first_post_likes_multiplier: "valor del multiplicador de me gusta en el primer post (n) en la fórmula de temas top:: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
+ top_topics_formula_least_likes_per_post_multiplier: "valor del multiplicador de me gusta por post (n) en la fórmula de temas top: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
rate_limit_create_topic: "Después de crear un tema, los usuarios deben esperar (n) segundos antes de crear otro tema."
rate_limit_create_post: "Después de publicar un post, los usuarios deben esperar (n) segundos antes de crear otro post."
rate_limit_new_user_create_topic: "Después de crear un tema, los nuevos usuarios deben esperar (n) segundos antes de crear otro tema."
@@ -845,6 +891,8 @@ es:
max_private_messages_per_day: "Máximo número de mensajes por usuario y día."
max_invites_per_day: "Máximo número de invitaciones que un usuario puede enviar al día."
max_topic_invitations_per_day: "Máximo número de invitaciones a un tema que un usuario puede enviar por día."
+ alert_admins_if_errors_per_minute: "Número de errores por minuto que activa la alerta a administración. Un valor de 0 desactiva esta funcionalidad. NOTA: requiere reiniciar la instancia."
+ alert_admins_if_errors_per_hour: "Número de errores por hora que activa la alerta a administración. Un valor de 0 desactiva esta funcionalidad. NOTA: requiere reiniciar la instancia."
suggested_topics: "Número de temas sugeridos mostrados al pie del tema."
limit_suggested_to_category: "Solo mostrar temas de la categoría actual en los temas sugeridos."
clean_up_uploads: "Eliminar subidas huérfanas sin referencia para prevenir hosting ilegal. AVISO: antes de habilitar esta opción quizá quieres hacer un backup de tu directorio de /uploads"
@@ -861,6 +909,8 @@ es:
avatar_sizes: "Lista de tamaños de avatar generados automáticamente."
external_system_avatars_enabled: "Usar un servicio externo para los avatares."
external_system_avatars_url: "Dirección URL del servicio externo para los avatares. Sustituciones permitidas: {username} {first_letter} {color} {size}"
+ default_opengraph_image_url: "URL de la imagen opengraph por defecto."
+ allow_all_attachments_for_group_messages: "Permitir todos los archivos adjuntos de email para los mensajes a grupos."
enable_flash_video_onebox: "Habilitar el embebido de enlaces swf y flv (Adobe Flash) en formato Onebox. AVISO: podría introducir riesgos de seguridad."
default_invitee_trust_level: "Nivel de confianza por defecto (0-4) para usuarios invitados."
default_trust_level: "Nivel de confianza por defecto (0-4) para los nuevos usuarios. ¡AVISO! Cambiar esto puede resultar en riesgo por spam."
@@ -874,32 +924,38 @@ es:
tl2_requires_likes_received: "¿Cuántos 'me gusta' un usuario debe de recibir antes de promoverlo a nivel de confianza 2?"
tl2_requires_likes_given: "¿Cuántos 'me gusta' un usuario debe de dar antes de promoverlo a nivel de confianza 2?"
tl2_requires_topic_reply_count: "¿Cuántos temas un usuario debe de contestar antes de promoverlo a nivel de confianza 2?"
- tl3_requires_days_visited: "El número mínimo de días que un usuario necesito haber visitado el sitio en los últimos 100 días para calificar a promoción de nivel de confianza 3. (0 a 100)"
- tl3_requires_topics_replied_to: "El número mínimo de temas que un usuario necesito haber respondido en los últimos 100 días para calificar a promoción de nivel de confianza 3. (0 o superior)."
- tl3_requires_topics_viewed: "El porcentaje de temas creados en los últimos 100 días que un usuario necesito haber visto para calificar a promoción de nivel de confianza 3. (0 a 100)"
- tl3_requires_posts_read: "El porcentaje de posts creados en los últimos 100 días que un usuario necesito haber visto para calificar a promoción de nivel de confianza 3. (0 a 100)"
+ tl3_time_period: "Período de tiempo (en días) para los requisitos de nivel de confianza 3"
+ tl3_requires_days_visited: "Mínimo número de días que un usuario necesita haber visitado el sitio en los últimos (tl3 time period) días para poder ser promocionado a nivel de confianza 3. Establece un valor superior para desactivar la posibilidad de subir a nivel de confianza 3. (0 o más)"
+ tl3_requires_topics_replied_to: "Mínimo número de temas que un usuario necesita haber respondido en los últimos (tl3 time period) días para poder ser promocionado a nivel de confianza 3. (0 o más)"
+ tl3_requires_topics_viewed: "Porcentaje de temas creados en los últimos (tl3 time period) días para que un usuario sea tenido en cuenta para promocionar a nivel de confianza 3. (0 a 100)"
+ tl3_requires_posts_read: "El porcentaje de posts creados en los últimos (tl3 time period) días para que un usuario sea tenido en cuenta para promocionar a nivel de confianza 3. (0 a 100)"
tl3_requires_topics_viewed_all_time: "El número total mínimo de temas que un usuario debió de haber visto para calificar a promoción de nivel de confianza 3."
tl3_requires_posts_read_all_time: "El número mínimo total de posts que un usuario debió de haber leído para calificar a nivel de confianza 3."
- tl3_requires_max_flagged: "El usuario no debió de haber tenido mas de x posts reportados por más de x diferentes usuarios en los últimos 100 días para calificar a promoción de nivel de confianza 3, donde x es el valor de configuración. (0 o superior)."
+ tl3_requires_max_flagged: "El usuario no debe haber tenido más de x posts reportados por x diferentes usuarios en los últimos (tl3 time period) días para poder ser promocionado a nivel de confianza 3, donde x es el valor de esta opción. (0 o más)"
tl3_promotion_min_duration: "El número mínimo de días que una promoción de nivel de confianza 3 dura antes que el usuario pueda ser degradado de vuelta a nivel de confianza 2."
- tl3_requires_likes_given: "El número mínimo de 'me gusta' que deben de ser dados en los últimos 100 días para calificar a promoción de nivel de confianza 3."
- tl3_requires_likes_received: "El número mínimo de 'me gusta' que debió haber recibido en los últimos 100 días para calificar a promoción de nivel de confianza 3."
+ tl3_requires_likes_given: "El mínimo número de me gusta que un usuario debe dar en los últimos (tl3 time period) días para promocionar a nivel de confianza 3."
+ tl3_requires_likes_received: "El mínimo número de me gusta que un usuario debe recibir en los últimos (tl3 time period) días para promocionar a nivel de confianza 3."
tl3_links_no_follow: "No remover rel=nofollow de los enlaces publicados por usuarios con nivel de confianza 3."
min_trust_to_create_topic: "El mínimo nivel de confianza requerido para crear un nuevo tema."
min_trust_to_edit_wiki_post: "El mínimo nivel de confianza requerido para editar un post marcado como wiki."
+ min_trust_to_allow_self_wiki: "El mínimo nivel de confianza requerido para que un usuario convierta sus propios posts a wiki."
+ min_trust_to_send_messages: "Mínimo nivel de confianza requerido para crear nuevos mensajes directos."
newuser_max_links: "Cuántos enlaces puede un nuevo usuario añadir a un post."
newuser_max_images: "Cuántas imágenes puede un nuevo usuario añadir a un post."
newuser_max_attachments: "Cuántos adjuntos puede un nuevo usuario añadir a un post."
newuser_max_mentions_per_post: "Máximo número de menciones a @usuarios que un nuevo usuario puede usar en un post."
newuser_max_replies_per_topic: "Máximo número de respuestas que un nuevo usuario puede realizar en el mismo tema antes de que alguien responda a su vez a alguna de ellas."
max_mentions_per_post: "Máximo número de menciones a @usuarios que alguien puede usar en un post."
+ max_users_notified_per_group_mention: "Número de usuarios máximos que serán notificados si un grupo es mencionado (si se llega al límite no se mandarán más invitaciones)"
create_thumbnails: "Crear miniaturas de imágenes y lightbox cuando estas son demasiado grandes para encajar en un post."
email_time_window_mins: "Esperar (n) minutos antes de enviar cualquier email de notificación, para dar a los usuarios margen con el que editar y finalizar sus posts."
+ private_email_time_window_seconds: "Espera (n) segundos antes de enviar cualquier email de notificación, para dar a los usuarios margen con el que editar y finalizar sus mensajes."
email_posts_context: "Cuántas respuestas previas se incluirán como contexto en los emails de notificación."
flush_timings_secs: "Cuán frecuente, en segundos, se alinean los datos de sincronización con el servidor."
title_max_word_length: "La longitud máxima permitida de una palabra, en caracteres, en el título del tema."
title_min_entropy: "La mínima entropía permitida (caracteres únicos) requerida para el título de un tema."
body_min_entropy: "La mínima entropía permitida (caracteres únicos) requerida para el cuerpo de un post."
+ allow_uppercase_posts: "Permite todas mayúsculas en el título de un tema o en el cuerpo del mensaje"
title_fancy_entities: "Convertir caracteres ASCII comunes en entidades HTML de adorno en el título de los temas, como SmartyPants http://daringfireball.net/projects/smartypants/"
min_title_similar_length: "La extensión mínima que un título debe tener antes de revisar temas similares."
min_body_similar_length: "La extensión mínima que el cuerpo de un post debe tener antes de revisar temas similares."
@@ -929,6 +985,7 @@ es:
white_listed_spam_host_domains: "Una lista de dominios a excluir de las pruebas de spam. A los nuevos usuarios no se les restringirá la posibilidad de crear posts con enlaces a estos dominios."
staff_like_weight: "Qué ponderación extra otorgan los me gusta provenientes de los miembros del Staff."
topic_view_duration_hours: "Contar una visita a un nuevo tema por IP/Usuario cada N horas"
+ user_profile_view_duration_hours: "Contar una nueva visita de perfil por IP/Usuario cada N horas"
levenshtein_distance_spammer_emails: "Al revisar coincidencias por correos electrónicos de spammers, qué número de caracteres permiten una coincidencia parcial."
max_new_accounts_per_registration_ip: "Si ya hay (n) cuentas con nivel de confianza 0 desde esta IP (y ninguna es de un miembro del staff o de nivel de confianza 2 o más), prohibir nuevos registros desde esa IP."
min_ban_entries_for_roll_up: "Al hacer clic en el botón Agrupar, se crea un nuevo rango de entradas para banear si hay al menos (N) entradas."
@@ -946,6 +1003,13 @@ es:
disable_emails: "Impedir que Discourse envié cualquier tipo de e-mail."
strip_images_from_short_emails: "Remover imágenes de e-mails que tengan un tamaño menor a 2800 Bytes"
short_email_length: "e-mail corto longitud en Bytes"
+ display_name_on_email_from: "Mostrar nombres completos en los campos de remitente de emails"
+ unsubscribe_via_email: "Permitir a los usuarios darse de baja de los emails respondiendo con el texto 'unsubscribe' en el asunto o el cuerpo del mensaje"
+ unsubscribe_via_email_footer: "Adjuntar un enlace para darse de baja al pie de los emails enviados"
+ delete_email_logs_after_days: "Eliminar logs de email después de (N) días. Si es 0 permanecerán de forma indefinida."
+ max_emails_per_day_per_user: "Máximo número de emails a enviar a los usuarios por día. Establece 0 para desactivar el límite"
+ enable_staged_users: "Crear cuentas provisionales automáticamente al procesar emails entrantes."
+ manual_polling_enabled: "Lanza emails usando la API para las respuestas por email."
pop3_polling_enabled: "Poll vía POP3 para respuestas de e-mail."
pop3_polling_ssl: "Usar SSL mientras se conecta al servidor POP3. (Recomendado)"
pop3_polling_period_mins: "El período en minutos entre revisiones de correo de la cuenta POP3. NOTA: requiere reiniciar."
@@ -972,7 +1036,8 @@ es:
automatically_download_gravatars: "Descargar Gravatars para usuarios cuando se creen una cuenta o cambien el email."
digest_topics: "El número máximo de temas a mostrar en el resumen por email."
digest_min_excerpt_length: "La extensión mínima, en caracteres, del extracto de un post en el resumen por email."
- suppress_digest_email_after_days: "Suprimir los emails de resumen para aquellos usuarios que no han visto el sitio desde más de (n) días."
+ delete_digest_email_after_days: "Omitir los emails de resumen para usuarios que no hayan visto el sitio después de (n) días."
+ digest_suppress_categories: "Ocultar estas categorías de los emails de resumen."
disable_digest_emails: "Inhabilitar e-mails de resumen para todos los usuarios."
detect_custom_avatars: "Verificar o no que los usuarios han subido una imagen de perfil."
max_daily_gravatar_crawls: "Máximo número de veces que Discourse comprobará Gravatar en busca de avatares personalizados en un día"
@@ -982,51 +1047,60 @@ es:
allow_anonymous_posting: "Permitir a los usuarios cambiar a modo anónimo"
anonymous_posting_min_trust_level: "Nivel de confianza mínimo requerido para activar el modo anónimo"
anonymous_account_duration_minutes: "Para proteger el anonimato, crear una nueva cuenta anónima cada N minutos para cada usuario. Ejemplo: si se establece en 600, tan pronto como pasen 600 minutos desde el último post Y el usuario cambie a anónimo, se creará una nueva cuenta anónima."
+ hide_user_profiles_from_public: "Desactiva las tarjetas de usuario, los perfiles y el directorio de usuarios para usuarios anónimos."
allow_profile_backgrounds: "Permitir a los usuarios subir sus propios fondos de perfil personalizados."
- sequential_replies_threshold: "Número de posts consecutivos que un usuario publicará en un mismo tema hasta mostrarle un recordatorio sobre demasiadas repuestas seguidas."
+ sequential_replies_threshold: "Número de mensajes que un usuario tiene que publicar seguidos antes de que se le recuerde sobre demasiadas respuestas consecutivas."
enable_mobile_theme: "Los dispositivos móviles utilizan un tema adaptado, con la habilidad de cambiar al estilo de sitio completo. Deshabilita esta opción si quieres utilizar una plantilla personalizada que sea completamente adaptable."
dominating_topic_minimum_percent: "Qué porcentaje de posts tiene que publicar un usuario en un mismo tema hasta mostrarle un recordatorio acerca de dominar en demasía un tema."
+ disable_avatar_education_message: "Desactivar mensaje incentivador para que los usuarios se cambien su foto de perfil."
daily_performance_report: "Analizar registros de NGINX diariamente y publicar un tema para Administradores con los detalles"
suppress_uncategorized_badge: "No mostrar la etiqueta de los temas sin categoría en la lista de temas."
+ permalink_normalizations: "Aplicar la siguiente expresión regular antes de los enlaces, por ejemplo: /(topic.*)\\?.*/\\1 despojará las cadenas de consulta de las rutas de los temas. El formato es regex+string usa \\1 etc. para acceder a capturas"
global_notice: "Mostrar una noticia de URGENCIA o EMERGENCIA para todos los visitantes, deja este campo en blanco para ocultarla (se puede utilizar código HTML)"
disable_edit_notifications: "Inhabilitar editar notificaciones por el usuario system cuando 'download_remote_images_to_local' este activo."
- full_name_required: "Su nombre completo es un campo obligatorio de un perfil de usuario."
+ automatically_unpin_topics: "Quitar destacado automáticamente cuando el usuario llega al final del tema."
+ read_time_word_count: "Número de palabras por minuto para calcular el tiempo de lectura estimado."
+ full_name_required: "El nombre completo es un campo obligatorio del perfil de usuario."
enable_names: "Mostrar el nombre completo del usuario en su perfil, tarjeta de usuario y emails. Desactiva esta opción para ocultar el nombre completo en todas partes."
display_name_on_posts: "Mostrar el nombre completo de un usuario en sus posts, además de su @usuario."
show_time_gap_days: "Si entre dos publicaciones han pasado este número de días, mostrar el lapso de tiempo en el tema."
invites_per_page: "Número de invitaciones por defecto mostradas en la página de perfil del usuario."
short_progress_text_threshold: "Después de que un número de posts en un tema alcance esta cifra, la barra de progreso sólo mostrará el número del post actual. Si cambias el ancho de la barra de progreso, deberías revisar este valor."
default_code_lang: "Lenguaje de programación por defecto para aplicar el resaltado de la sintaxis en los bloques de código de GitHub (lang-auto, ruby, python etc.)"
- warn_reviving_old_topic_age: "Cuando alguien publica en un tema cuya última respuesta fue hace este número de días o más, se le mostrará un aviso para desalentar el hecho de resucitar una antigua discusión. Deshabilita esta opción introduciendo el valor 0."
+ warn_reviving_old_topic_age: "Cuando alguien publica en un tema cuya última respuesta fue hace este número de días o más, se le mostrará un aviso para desalentar el hecho de revivir una antigua discusión. Deshabilita esta opción introduciendo el valor 0."
autohighlight_all_code: "Forzar el resaltado de código a los bloques de código preformateado cuando no se especifique el lenguaje del código."
- highlighted_languages: "Incluye reglas resaltadas de sintaxis. (Advertencia: incluyendo demasiadas lenguages puede afectar al rendimiento) ver: https://highlightjs.org/static/demo/ para una demostración"
+ highlighted_languages: "Incluye reglas resaltadas de sintaxis. (Advertencia: incluyendo demasiados lenguajes puede afectar al rendimiento) ver: https://highlightjs.org/static/demo/ para una demostración"
feed_polling_enabled: "SOLO PARA EMBEBER: embeber feeds RSS/ATOM como posts."
feed_polling_url: "SOLO PARA EMBEBER: URL de los feeds RSS/ATOM a embeber."
embed_by_username: "Nombre de usuario en Discourse del que crea los temas embebidos."
embed_username_key_from_feed: "Clave para extraer el nombre de usuario en Discourse desde el feed."
embed_truncate: "Truncar los posts embebidos."
embed_post_limit: "Número máximo de posts a embeber."
+ embed_username_required: "Se requiere el nombre de usuario para la creación de temas."
embed_whitelist_selector: "Selector CSS para los elementos que están permitidos en los embebidos."
embed_blacklist_selector: "Selector CSS para los elementos que están eliminados desde los embebidos."
notify_about_flags_after: "Si hay reportes que no han sido revisados después de este número de horas, enviar un correo electrónico al contact_email. Deshabilita esta opción introduciendo el valor 0."
enable_cdn_js_debugging: "Permitir /logs mostrar los errores correctamente, añadiendo permisos crossorigin en todas las inclusiones de js"
show_create_topics_notice: "Si el sitio tiene menos de 5 temas abiertos al público, mostrar un aviso pidiendo a los administradores crear más temas."
delete_drafts_older_than_n_days: Eliminar borradores de más de (n) días de antigüedad.
- show_logout_in_header: "Mostrar el botón para cerrar sesión en el desplegable de la cabecera"
- vacuum_db_days: "Correr VACUUM FULL ANALYZE para reclamar espacio en la base de datos después de las migraciones. (Poner en 0 para inhabilitar)"
+ vacuum_db_days: "Ejecutar VACUUM ANALYZE para reclamar espacio en la base de datos después de las migraciones. (Poner en 0 para inhabilitar)"
prevent_anons_from_downloading_files: "Impedir que los usuarios anónimos descarguen archivos. ADVERTENCIA: Esto impedirá que funcione cualquier recurso del sitio publicado como adjunto."
slug_generation_method: "Elegir un método de generación de slug. 'encoded' generará cadenas con código porciento. 'none' hara que no se genere slug."
enable_emoji: "Habilitar emoji"
emoji_set: "¿De qué tipo os gustan los emoji?"
enforce_square_emoji: "Forzar una relación de aspecto cuadrada para todos los emojis."
- approve_post_count: "La cantidad de posts de un nuevo usuario que deben ser aprobados"
+ approve_post_count: "La cantidad de posts que deben ser aprobados de usuarios nuevos o de nivel básico"
approve_unless_trust_level: "Los posts de usuarios con un nivel de confianza inferior a este deberán ser aprobados"
notify_about_queued_posts_after: "Si hay posts esperando a ser revisados por este número de horas, se enviará un email al correo de contacto. Establece este valor a 0 para desactivar estos emails."
default_email_digest_frequency: "Frecuencia por defecto con la que se reciben los emails resumen."
+ default_include_tl0_in_digests: "Incluir posts de nuevos usuarios en los emails de resumen por defecto. Los usuarios pueden cambiar esto en sus preferencias."
default_email_private_messages: "Enviar un email cuando alguien envíe un mensaje al usuario por defecto."
default_email_direct: "Enviar un email cuando alguien cite/responda/mencione o invite al usuario por defecto."
default_email_mailing_list_mode: "Enviar un email por cada nuevo post por defecto."
+ disable_mailing_list_mode: "No permitir a los usuarios que activen el modo lista de correo."
default_email_always: "Enviar una notificación por email aunque el usuario esté activo por defecto."
+ default_email_previous_replies: "Incluir por defecto respuestas previas en los emails."
+ default_email_in_reply_to: "Incluir por defecto un extracto del post al que se ha respondido en los emails."
default_other_new_topic_duration_minutes: "Condición por defecto para que un tema sea considerado nuevo"
default_other_auto_track_topics_after_msecs: "Tiempo por defecto hasta que un tema sea seguido automáticamente."
default_other_external_links_in_new_tab: "Abrir enlaces externos en una nueva pestaña por defecto."
@@ -1034,6 +1108,8 @@ es:
default_other_dynamic_favicon: "Mostrar temas nuevos/actualizados en el icono del navegador por defecto"
default_other_disable_jump_reply: "No ir a un nuevo post tras publicarlo por defecto"
default_other_edit_history_public: "Hacer la lista de ediciones pública por defecto."
+ default_other_like_notification_frequency: "Notificar a los usuarios de los me gusta por defecto"
+ default_topics_automatic_unpin: "Quitar destacado automáticamente cuando el usuario llega al final del tema."
default_categories_watching: "Lista de categorías que están vigiladas por defecto."
default_categories_tracking: "Lista de categorías que están seguidas por defecto"
default_categories_muted: "Lista de categorías que están silenciadas por defecto."
@@ -1051,7 +1127,13 @@ es:
invalid_string_min: "Debe contener como mínimo %{min} caracteres. "
invalid_string_max: "No debe exceder los %{max} caracteres. "
invalid_reply_by_email_address: "El valor debe contener '%{reply_key}' y debe ser diferente del email de notificación."
+ pop3_polling_host_is_empty: "Debes establecer un host de 'pop3 polling' antes de activar el polling POP3."
+ pop3_polling_username_is_empty: "Debes establecer un usuario de 'pop3 polling' antes de activar el polling POP3."
+ pop3_polling_password_is_empty: "Debes establecer una contraseña de 'pop3 polling' antes de activar el polling POP3."
+ pop3_polling_authentication_failed: "La autenticación POP3 falló. Por favor, verifica tus credenciales pop3."
+ reply_by_email_address_is_empty: "Debes establecer el campo 'reply by email address' antes de activar respuesta por email."
notification_types:
+ group_mentioned: "%{group_name} ha sido mencionado en %{link}"
mentioned: "%{display_username} te ha mencionado en %{link}"
liked: "%{display_username} le ha gustado tu post en %{link}"
replied: "%{display_username} ha contestado tu post en %{link}"
@@ -1061,7 +1143,7 @@ es:
moved_post: "%{display_username} ha movido tu post a %{link}"
private_message: "%{display_username} te ha enviado un mensaje: %{link}"
invited_to_private_message: "%{display_username} te ha invitado a un hilo de mensajes: %{link}"
- invited_to_topic: "%{display_username} te ha invitado a un tema: %{link}"
+ invited_to_topic: "%{display_username} te invitó a %{link}"
invitee_accepted: "%{display_username} ha aceptado tu invitación"
linked: "%{display_username} te enlazó en %{link}"
granted_badge: "Obtuviste %{link}"
@@ -1071,11 +1153,6 @@ es:
category: 'Categorías'
topic: 'Resultados'
user: 'Usuarios'
- sso:
- not_found: "No se puede buscar o crear cuenta, contacta al administrador del sitio"
- account_not_approved: "La cuenta está pendiente de aprobación, recibirás una notificación por email cuando se apruebe"
- unknown_error: "Error al actualizar la información, contacta al administrador del sitio"
- timeout_expired: "Se agotó el tiempo de espera para el inicio de sesión, por favor, intenta iniciar sesión de nuevo"
original_poster: "Autor original"
most_posts: "Con más posts"
most_recent_poster: "Autor más reciente"
@@ -1150,6 +1227,7 @@ es:
reserved_username: "Ese nombre de usuario no está permitido."
missing_user_field: "No has completado todos los campos de usuario"
close_window: "Autenticación completa. Cierra esta ventana para continuar."
+ already_logged_in: "Ups, parece que estás intentando aceptar una invitación dirigida a otro usuariol. Si no eres %{current_user}, por favor cierra sesión e inténtalo de nuevo."
user:
no_accounts_associated: "No hay cuentas relacionadas."
username:
@@ -1158,16 +1236,33 @@ es:
characters: "solo debe incluir números y letras"
unique: "debe ser único"
blank: "debe estar presente"
- must_begin_with_alphanumeric: "debe empezar con una letra, número o guión bajo"
- must_end_with_alphanumeric: "debe terminar con una letra, número o guión bajo"
+ must_begin_with_alphanumeric_or_underscore: "debe comenzar con una letra, un número o un guión bajo"
+ must_end_with_alphanumeric: "debe terminar con una letra o un número"
must_not_contain_two_special_chars_in_seq: "no debe contener una secuencia de 2 o más caracteres especiales (.-_)"
- must_not_contain_confusing_suffix: "no debe contener un sufijo confuso como .json, .png, etc."
+ must_not_end_with_confusing_suffix: "no debe terminar con un sufijo que lleve a confusión como .json o .png etc."
email:
not_allowed: "este proveedor de email no está permitido. Por favor, utiliza otra dirección de email."
blocked: "no está permitido."
ip_address:
blocked: "No se permiten nuevos registros desde tu dirección IP."
max_new_accounts_per_registration_ip: "No se permiten nuevos registros desde tu dirección IP (alcanzado el límite máximo). Contacta un miembro del staff."
+ flags_reminder:
+ flags_were_submitted:
+ one: "Hay reportes enviados hace 1 hora. Por favor, revísalos."
+ other: "Hay reportes enviados hace %{count} horas. Por favor, revísalos."
+ subject_template:
+ one: "1 reporte esperando ser atendidos."
+ other: "%{count} reportes esperando ser atendidos."
+ unsubscribe_mailer:
+ subject_template: "Confirma que no quieres recibir más emails de %{site_title}"
+ text_body_template: |
+ Alguien (posiblemente tú?) solicitó no recibir más actualizaciones por email desde %{site_domain_name} a esta dirección de email.
+ Si deseas confirmar esta acción, por favor haz clic en el siguiente enlace:
+
+ %{confirm_unsubscribe_link}
+
+
+ Si quieres continuar recibiendo actualizaciones por email, por favor ignora este correo.
invite_mailer:
subject_template: "%{invitee_name} te invitó a '%{topic_title}' en %{site_domain_name}"
text_body_template: |
@@ -1200,87 +1295,10 @@ es:
(Si el enlace anterior ha caducado, utiliza "Olvidé mi contraseña" cuando vayas a iniciar sesión con tu dirección de email.)
test_mailer:
subject_template: "[%{site_name}] Prueba de envío de email"
- text_body_template: |
- Este es un correo electrónico de prueba de
-
- [**%{base_url}**][0]
-
- La entrega de correo electrónico es complicada. Aquí hay unas cuantas cosas importantes que deberías comprobar primero:
-
- - *Asegúrate* de ajustar la dirección `notification email` desde: correctamente en los ajustes de tu sitio. **El dominio especificado en la dirección "from" de los emails que envíes es el dominio contra el que se validará tu email**.
-
- - Entérate de como ver el código fuente del email desde tu cliente de correo, para que así puedas examinar las cabeceras para ver pistas importantes. En Gmail está la opción "mostrar original" en el menú de lista desplegable en la parte superior derecha de cada email.
-
- - **IMPORTANTE:** ¿Tu ISP tiene registros de DNS inversa para asociar los nombres de dominio y las direcciones IP desde donde envías los correos? [Comprueba tu registro PTR Inverso][2] aquí. Si tu ISP no introduce el puntero de registro DNS inverso adecuado, es muy improbable que cualquiera de tus correos pueda ser entregado.
-
- - ¿Es el [registro SPF][8] de tu dominio correcto? [Comprueba tu registro SPF][1] aquí. Ten en cuenta que TXT es el tipo de registro oficial correcto para SPF.
-
- - ¿Es el [registro DKIM][3] de tu dominio correcto? Esto puede mejorar significativamente la entregabilidad de correos. [Comprueba tu registro DKIM][7] aquí.
-
- - Si estás corriendo tu propio servidor de correo, asegúrate de que las IPs de tu servidor de correo [no están en ninguna lista negra de correos][4]. También verifica que definitivamente se está enviando un nombre de huésped "hostname" completamente cualificado que resuelva en DNS en su mensaje HELO. Si no es así, esto causará que tu correo sea denegado por muchos servicios de correo.
-
- (La forma *fácil* es crear una cuenta gratuíta en [Mandrill][md] o [Mailgun][mg] o [Mailjet][mj], que proveen generosamente planes de mailing gratuítos y serán adecuados para pequeñas comunidades. ¡De todas formas todavía tendrás que configurar los registros SPF y DKIM en tus DNS!)
-
- ¡Esperamos que recibas esta prueba de entregabilidad de correo electrónico correctamente!
-
- Buena suerte,
-
- Tus amigos de [Discourse](http://www.discourse.org)
-
- [0]: %{base_url}
- [1]: http://www.kitterman.com/spf/validate.html
- [2]: http://mxtoolbox.com/ReverseLookup.aspx
- [3]: http://www.dkim.org/
- [4]: http://whatismyipaddress.com/blacklist-check
- [7]: http://dkimcore.org/tools/dkimrecordcheck.html
- [8]: http://www.openspf.org/SPF_Record_Syntax
- [md]: http://mandrill.com
- [mg]: http://www.mailgun.com/
- [mj]: https://www.mailjet.com/pricing
new_version_mailer:
subject_template: "[%{site_name}] Nueva versión de Discourse, actualización disponible"
- text_body_template: |
- Está disponible una nueva versión de [Discourse](http://www.discourse.org).
-
- Tu versión: %{installed_version}
- Nueva versión: **%{new_version}**
-
- Tal vez quieras:
-
- - Ver qué hay de nuevo en el [historial de cambios de GitHub](https://github.com/discourse/discourse/commits/master).
-
- - Actualizar desde tu navegador en [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade).
-
- - Visitar [meta.discourse.org](http://meta.discourse.org) para ver noticias, debatir u obtener soporte de Discourse.
new_version_mailer_with_notes:
subject_template: "[%{site_name}] actualización disponible"
- text_body_template: |
- Está disponible una nueva versión de [Discourse](http://www.discourse.org).
-
- Tu versión: %{installed_version}
- Nueva versión: **%{new_version}**
-
- Tal vez quieras:
-
- - Ver qué hay de nuevo en el [historial de cambios de GitHub](https://github.com/discourse/discourse/commits/master).
-
- - Actualizar desde tu navegador en [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade).
-
- - Visitar [meta.discourse.org](http://meta.discourse.org) para ver noticias, debatir u obtener soporte de Discourse.
-
- ### Notas de lanzamiento
-
- %{notes}
- flags_reminder:
- flags_were_submitted:
- one: "Estos reportes fueron enviados desde hace 1 hora."
- other: "Estos reportes fueron enviados desde hace %{count} horas."
- please_review: "Por favor, revísalos."
- post_number: "post"
- how_to_disable: 'Puedes desactivar o cambiar la frecuencia de este email de recordatorio mediante la opción "notify about flags after".'
- subject_template:
- one: "1 reporte esperando ser atendidos."
- other: "%{count} reportes esperando ser atendidos."
queued_posts_reminder:
subject_template:
one: "[%{site_name}] 1 post esperando ser revisado"
@@ -1319,12 +1337,7 @@ es:
Para más información, por favor consulta nuestras [directrices](%{base_url}/guidelines).
usage_tips:
- text_body_template: "Aquí tienes unos breves consejos para empezar:\n\n## Lectura\n\nPara leer más, **¡tan solo tienes que hacer scroll!** \n\nTan pronto como se publiquen nuevas respuestas o temas, aparecerán automáticamente – sin necesidad de actualizar la página.\n\n## Navegación\n\n- Para la búsqueda, tu perfil de usuario, o el menú ☰;, usa los **botones con iconos de la esquina superior derecha**. \n\n- Entrar a un tema desde su título te llevará a la **última respuesta sin leer** del hilo. Para ir al primer o al último post, haz clic en el contador de respuestas o en la fecha de última respuesta.\n\n \n\n- Mientras lees un tema, selecciona la barra de progreso en la esquina inferior derecha para ver los controles de navegación. Podrás ir al inicio del hilo seleccionando su\
- \ título. Teclea ? para ver una lista de rápidos atajos de teclado.\n\n
\n\n## Participando\n\n- Para responder al **tema en general**, utiliza
al final del hilo. \n\n- Para responder a **una persona en específico**, utiliza
en su post. \n\n- Para responder **creando un nuevo tema**, utiliza
a la derecha del post. Tanto el tema original como el nuevo serán enlazados entre sí automáticamente. \n\nPara escribir una cita, selecciona el texto que quieres citar, después haz clic en el botón citar. ¡Puedes repetir para realizar\
- \ múltiples citas! \n\n
\n\nPara notificar a alguien en tu respuesta, menciónale. Empieza a escribir `@` para elegir su nombre de usuario. \n\n
\n\nPara usar [Emojis](http://www.emoji.codes/), teclea `:` para elegir por nombre, o usa los tradicionales smileys `;)` \n\n
\n\n## Acciones\n\nHay algunos botones de acción al final de cada post: \n\n
\n\nPara hacerle saber a alguien que has disfrutado o que aprecias su post, utiliza el botón de **Me gusta**. ¡Compartir es amor! \n\nSi ves algún problema en la publicación de\
- \ alguien, escríbele un privado, o házselo saber [a nuestros moderadores](%{base_url}/about), con el botón **reporte**. También puedes **compartir** un enlace a un post, o guardarlo en **marcadores** para tenerlo de referencia en tu página de perfil. \n\n## Notificaciones\n\nCuando alguien te responde, cita tu post, o bien menciona tu `@usuario`, inmediatamente aparecerá un número en la esquina superior derecha de la página. Usa ese botón para acceder a tus **notificaciones**. \n\n
\n\nNo te preocupes si te pierdes alguna respuesta – te enviaremos un email con las notificaciones que lleguen cuando estés fuera.\n\n## Tus preferencias\n\n- Todos los temas creados hace menos de **dos días** se consideran nuevos. \n\n- Aquellos temas en los que hayas **participado activamente** (porque lo hayas creado,\
- \ o respondido o leído durante un período razonable) serán seguidos por tu usuario automáticamente. Verás los indicadores azules de temas nuevos o número de respuestas no leídas al lado de estos temas: \n\n
\n\nPuedes cambiar tus notificaciones para cualquier tema mediante el control de notificaciones al final del tema. \n\n
\n\nTambién puedes establecer el estado de notificación de una categoría entera, si quieres vigilar cualquier nuevo tema en una categoría específica. Para cambiar cualquiera de estas opciones, puedes ver [tus preferencias](%{base_url}/my/preferences). \n\n## Confianza \n\nAl participar aquí, con el tiempo te ganarás la confianza de la comunidad, te convertirás en usuario de\
- \ pleno derecho y te serán retiradas las limitaciones de nuevo usuario. Llegado a un punto de un alto [nivel de confianza](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924), obtendrás además nuevas habilidades para ayudarnos a gestionar la comunidad juntos.\n"
+ text_body_template: "Aquí tienes unos breves consejos para empezar:\n\n## Lectura\n\nPara leer más, **¡tan solo tienes que hacer scroll!**\n\nTan pronto como se publiquen nuevas respuestas o temas, aparecerán automáticamente – sin necesidad de actualizar la página.\n\n## Navegación\n\n- Para realizar una búsqueda, ver tu perfil de usuario, o el menú ☰, usa los **botones de la esquina superior derecha**.\n\n- Entrar a un tema desde su título te llevará a la **última respuesta sin leer** del hilo. Para ir al primer o al último post, haz clic en el contador de respuestas o en la fecha de última respuesta..\n\n
\n\n- Mientras lees un tema, selecciona la barra de progreso en la esquina inferior derecha para ver los controles de navegación. Podrás ir al inicio del hilo seleccionando su título. Teclea ? para ver una lista de rápidos atajos de teclado.\n\n
\n\n## Participación\n\n- Para responder al **tema en general**, utiliza
al final del hilo.\n\n- Para responder a **una persona en específico**, utiliza
en su post.\n\n- Para responder **creando un nuevo tema**, utiliza
la derecha del post. Tanto el tema original como el nuevo serán enlazados entre sí automáticamente.\n\nTu respuesta puede estar en varios formatos como HTML simple, BBCode, o [Markdown](http://commonmark.org/help/):\n\n Esto es **negrita**.\n Esto es negrita.\n Esto es [b]negrita[/b].\n\n¿Quieres aprender Markdown? [¡Echa un vistazo a nuestro divertido tutorial interactivo de 10 minutos!](http://commonmark.org/help/tutorial/)\n\nPara escribir una cita, selecciona el texto que quieres citar, después haz clic en el botón citar. ¡Puedes repetir para realizar múltiples citas!\n\n
\n\nPara notificar a alguien en tu respuesta, menciónale. Empieza a escribir `@` para elegir su nombre de usuario.\n\n
\n\nPara usar [Emojis](http://www.emoji.codes/), teclea `:` para elegir por nombre, o usa los tradicionales smileys `;)`\n\n
\n\nPara generar un extracto desde un enlace, pégalo en una línea aparte para él solo:\n\n
\n\n## Acciones\n\nHay algunos botones de acción al final de cada post:\n\n
\n\nPara hacerle saber a alguien que aprecias su post, utiliza el botón de **Me gusta**. ¡Compartir es amor!\n\nSi ves algún problema en la publicación de alguien, escríbele un privado, o házselo saber [a nuestros moderadores](%{base_url}/about), con el botón **reporte**. También puedes **compartir** un enlace a un post, o guardarlo en **marcadores** para tenerlo de referencia en tu página de perfil.\n\n## Notificaciones\n\nCuando alguien te responde, cita tu post, o bien menciona tu `@usuario`, inmediatamente aparecerá un número en la esquina superior derecha de la página. Usa ese botón para acceder a tus **notificaciones**.\n\n
\n\nNo te preocupes si te pierdes alguna respuesta – te enviaremos un email con las notificaciones que lleguen cuando estés fuera.\n\n## Tus preferencias\n\n - Todos los temas creados hace menos de **dos días** se consideran nuevos..\n\n - Aquellos temas en los que hayas **participado activamente** (porque lo hayas creado, o respondido o leído durante un período razonable) serán seguidos por tu usuario automáticamente. \n\nVerás los indicadores de temas nuevos o número de respuestas no leídas al lado de estos temas::\n\n
\n\nPuedes cambiar tus notificaciones para cualquier tema mediante el control de notificaciones al final del tema.\n\n
\n\nTambién puedes establecer el estado de notificación de una categoría entera, si quieres vigilar cualquier nuevo tema en una categoría específica.\n\nPara cambiar cualquiera de estas opciones, puedes ver [tus preferencias](%{base_url}/my/preferences).\n\n## Confianza y comunidad\n\nAl participar aquí, con el tiempo te ganarás la confianza de la comunidad, te convertirás en usuario de pleno derecho y te serán retiradas las limitaciones de nuevo usuario. Llegado a un punto de un alto [nivel de confianza](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924), obtendrás además nuevas habilidades para ayudarnos a gestionar la comunidad juntos.\n"
welcome_user:
subject_template: "¡Bienvenido a %{site_name}!"
text_body_template: |
@@ -1409,18 +1422,22 @@ es:
csv_export_failed:
subject_template: "La exportación de datos falló"
text_body_template: "Lo sentimos, pero la exportación de datos falló. Por favor, verifica los registros o contacta a un miembro del staff."
- email_reject_trust_level:
- subject_template: "[%{site_name}] Problema con el correo electrónico -- Nivel de Confianza Insuficiente"
+ email_reject_insufficient_trust_level:
+ subject_template: "[%{site_name}] Problema relacionado con el email -- Insuficiente nivel de confianza"
text_body_template: |
- Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) se ha rechazado.
+ Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) no fue entregado.
- Tu cuenta no tiene el nivel de confianza suficiente para publicar nuevos temas a esta dirección de correo electrónico. Si crees que esto es un error, contacta con algún miembro del Staff.
+ Tu cuenta no tiene el suficiente nivel de confianza requerido para publicar nuevos temas a esta dirección de email. Si crees que esto es un error, contacta a un administrador.
+ email_reject_inactive_user:
+ subject_template: "[%{site_name}] Problema relacionado con el email -- Usuario inactivo"
+ text_body_template: |
+ Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) no se entregó.
+
+ La cuenta asociada a esta dirección de email no ha sido activada. Por favor activa tu cuenta antes de enviar emails.
+ email_reject_reply_user_not_matching:
+ subject_template: "[%{site_name}] Problema relacionado con el email -- No coincide el usuario de la respuesta"
email_reject_no_account:
subject_template: "[%{site_name}] Problema con el correo electrónico -- Cuenta Desconocida"
- text_body_template: |
- Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) se ha rechazado.
-
- No hay una cuenta de usuario asociada con esta dirección de email. Intenta enviarlo con otra dirección de email o contacta con algún miembro del Staff.
email_reject_empty:
subject_template: "[%{site_name}] Problema con el correo electrónico -- Sin Contenido"
text_body_template: |
@@ -1441,40 +1458,10 @@ es:
Lo sentimos, pero tu mensaje por email a %{destination} (titled %{former_title}) no funcionó.
Tu cuenta no tiene los privilegios para publicar nuevos temas en esa categoría. Si crees que esto es un error, contacta a un moderador o administrador.
- email_reject_post_error:
- subject_template: "[%{site_name}] Problema con el correo electrónico -- Error de publicación"
- text_body_template: |
- Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) se ha rechazado.
-
- Posibles causas: formato complejo, mensaje demasiado extenso o demasiado breve. Por favor, inténtalo de nuevo.
- email_reject_post_error_specified:
- subject_template: "[%{site_name}] Problema con el correo electrónico -- Error de publicación"
- text_body_template: |
- Lo sentimos, pero tu mensaje e-mail para %{destination} (titulado %{former_title}) no funciono.
-
- Razón:
-
- %{post_error}
-
- Si puedes corregir el problema, por favor intenta de nuevo.
email_reject_reply_key:
subject_template: "[%{site_name}] Problema con el correo electrónico -- Clave de Respuesta Desconocida"
- text_body_template: |
- Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) se ha rechazado.
-
- La clave de respuesta proporcionada no es válida o es desconocida, por lo que no sabemos a qué responde este email. Contacta con algún miembro del staff.
- email_reject_destination:
- subject_template: "[%{site_name}] Problema con el correo electrónico -- Desconocido Para: Dirección"
- text_body_template: |
- Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) no funcionó.
-
- No se ha podido reconocer ninguna de las direcciones destino. Por favor, asegúrate de que la dirección del sitio está en Para: (no CC ni BCC), y que lo estás enviando a la dirección de e-mail proporcionada por los administradores.
email_reject_topic_not_found:
subject_template: "[%{site_name}] Problema con el correo electrónico -- Tema no encontrado"
- text_body_template: |
- Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) no funcionó.
-
- El tema al que estás respondiendo ya no existe, quizá debe haber sido eliminado. Si crees que esto es un error, contacta a un administrador.
email_reject_topic_closed:
subject_template: "[%{site_name}] Problema con el correo electrónico -- Tema cerrado"
text_body_template: |
@@ -1483,16 +1470,8 @@ es:
El tema actualmente está cerrado y no acepta más respuestas. Si crees que esto es un error, contacta a un administrador.
email_reject_auto_generated:
subject_template: "[%{site_name}] Problema con el correo electrónico -- Respuesta Auto Generada"
- text_body_template: |
- Lo sentimos, pero tu mensaje de correo electrónico para %{destination} (titulado %{former_title}) no funcionó.
-
- Tu respuesta de correo fue marcada como "generada automáticamente" y no aceptamos esto. Si crees que se trata de un error contacta con un administrador.
email_error_notification:
subject_template: "[%{site_name}] Problema con el correo electrónico -- Error de autenticación POP"
- text_body_template: |
- Ha habido un error de autenticación mientras se ejecutaba el polling de los emails desde el servidor POP.
-
- Por favor, asegúrate de que se han configurado las credenciales POP correctamente en los [ajustes del sitio](%{base_url}/admin/site_settings/category/email).
too_many_spam_flags:
subject_template: "Cuenta nueva bloqueada"
text_body_template: |
@@ -1502,28 +1481,29 @@ es:
Como medida precautoria, tu nueva cuenta ha sido bloqueada para crear nuevas respuestas o temas hasta que un miembro del staff pueda revisar tu cuenta.
- Para orientación adicional, por favor revise nuestras [reglas de comunidad](%{base_url}/guidelines).
+ Para orientación adicional, por favor revisa nuestras [reglas de comunidad](%{base_url}/guidelines).
blocked_by_staff:
subject_template: "Cuenta bloqueada"
- text_body_template: |
- Hola,
-
- Esto es un mensaje automatizado de %{site_name} para informatarte que tu cuenta ha sido bloqueada por un miembro del staff.
-
- Para orientación adicional, por favor revise nuestras [reglas de comunidad](%{base_url}/guidelines).
user_automatically_blocked:
subject_template: "El nuevo usuario %{username} ha sido bloqueado tras ser reportado por la comunidad"
text_body_template: |
- Éste es un mensaje automático.
+ Este es un mensaje automático.
- El nuevo usuario [%{username}](%{base_url}%{user_url}) ha sido bloqueado automáticamente porque múltiples usuarios han reportado el/los post(s) de %{username}.
+ El usuario nuevo [%{username}](%{user_url}) ha sido automáticamente bloqueado porque varios usuarios han reportado los mensajes de %{username}.
- Por favor, [revisa los informes](%{base_url}/admin/flags). Si %{username} ha sido bloqueado incorrectamente, clica el botón de desbloquear en [la página de administración para este usuario](%{base_url}%{user_url}).
+ Por favor, [mira los reportes](%{base_url}/admin/flags). Si %{username} hubiera sido bloqueado incorrectamente, click haz clic en el botón de desbloquear en la [página de administración del usuario](%{user_url}).
- El umbral puede ser cambiado vía configuración del sitio en `block_new_user`.
+ Esto puede ser cambiado con el ajuste `block_new_user`.
spam_post_blocked:
subject_template: "El nuevo usuario %{username} tiene posts bloqueados debido a repetición de enlaces."
- text_body_template: "Este es un mensaje automático. \n\nEl usuario [%{username}](%{base_url}%{user_url}) intento crear multiples posts con links hacia %{domains}, pero dichos posts fueron bloqueados para evitar el spam. El usuario aun esta habilitado para crear nuevos posts que no contengan links hacia %{domains}.\n\nPor favor [revise el usuario] (%{base_url}%{user_url}).\n\nEsto puede ser modificado por medio de las opciones de configuración `newuser_spam_host_threshold` y `white_listed_spam_host_domains`.\n"
+ text_body_template: |
+ Este es un mensaje automático.
+
+ El usuario nuevo [%{username}](%{user_url}) ha intentado crear múltiples temas con enlaces a %{domains}, pero han sido bloqueados para evitar spam. El usuario todavía puede crear temas, siempre y cuando no contengan enlaces a %{domains}.
+
+ Por favor, [echa un vistazo al usuario](%{user_url}).
+
+ Esto puede ser modificado con los ajustes`newuser_spam_host_threshold` y`white_listed_spam_host_domains`.
unblocked:
subject_template: "Cuenta desbloqueada"
text_body_template: |
@@ -1544,52 +1524,45 @@ es:
subject_template: "Inhabilitar la descarga de imágenes remotas"
text_body_template: "La opción `download_remote_images_to_local` ha sido inhabilitada porque se ha llegado al límite de espacio en disco configurado en `download_remote_images_threshold`."
unsubscribe_link: |
- Para dar de baja tu suscripción a estos emails, visita tus [preferencias](%{user_preferences_url}).
-
- Para dejar de recibir notificaciones sobre este tema en particular, [haz clic aquí](%{unsubscribe_url}).
+ Para no recibir más notificaciones de este tema en particular, [haz clic aquí](%{unsubscribe_url}). Para darte de baja de estos emails, cambia tus [preferencias](%{user_preferences_url})
+ unsubscribe_via_email_link: |
+ o, [haz clic aquí](mailto:reply@%{hostname}?subject=unsubscribe) para darte de baja por email.
subject_re: "Re:"
subject_pm: "[MP]"
user_notifications:
previous_discussion: "Respuestas anteriores"
+ in_reply_to: "En respuesta a"
unsubscribe:
title: "Darse de baja"
description: "¿No estás interesado en recibir estos emails? ¡No hay problema! Haz clic abajo para darte de baja de forma instantánea:"
- reply_by_email: "Para comentar, responde a este email o visita %{base_url}%{url} en tu navegador."
- visit_link_to_respond: "Para responder, visita %{base_url}%{url} en tu navegador."
+ reply_by_email: "[Visita el tema](%{base_url}%{url}) o responde a este email para comentar"
+ reply_by_email_pm: "[Visita el mensaje](%{base_url}%{url}) o responde a este email para comentar"
+ only_reply_by_email: "Responde a este email para comentar"
+ visit_link_to_respond: "[Visita el tema](%{base_url}%{url}) para comentar"
+ visit_link_to_respond_pm: "[Visita el mensaje](%{base_url}%{url}) para comentar"
posted_by: "Publicado por %{username} el %{post_date}"
user_invited_to_private_message_pm:
subject_template: "[%{site_name}] %{username} te ha invitado a un hilo de mensajes '%{topic_title}'"
- text_body_template: |2
-
- %{username} te invitó al hilo de mensajes
-
- > **%{topic_title}**
- >
- > %{topic_excerpt}
-
- en
-
- > %{site_title} -- %{site_description}
-
- Por favor visita este enlace para verlo: %{base_url}%{url}
+ user_invited_to_private_message_pm_staged:
+ subject_template: "[%{site_name}] %{username} te ha invitado a un mensaje '%{topic_title}'"
user_invited_to_topic:
- subject_template: "[%{site_name}] %{username} te ha invitado a un tema '%{topic_title}'"
- text_body_template: |2
-
- %{username} te invitó al hilo
-
- > **%{topic_title}**
- >
- > %{topic_excerpt}
-
- en
-
- > %{site_title} -- %{site_description}
-
- Por favor, visita este enlace para verlo: %{base_url}%{url}
+ subject_template: "[%{site_name}] %{username} te invitó a '%{topic_title}'"
user_replied:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+ user_replied_pm:
+ subject_template: "[%{site_name}] [MP] %{topic_title}"
+ text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1599,6 +1572,19 @@ es:
user_quoted:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+ user_linked:
+ subject_template: "[%{site_name}] %{topic_title}"
+ text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1608,6 +1594,19 @@ es:
user_mentioned:
subject_template: "[%{site_name}] %{topic_title}"
text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+ user_group_mentioned:
+ subject_template: "[%{site_name}] %{topic_title}"
+ text_body_template: |
+ %{header_instructions}
+
%{message}
%{context}
@@ -1617,20 +1616,31 @@ es:
user_posted:
subject_template: "[%{site_name}] %{subject_prefix}%{username} publicó en '%{topic_title}'"
text_body_template: |
- %{username} publicó en '%{topic_title}' en %{site_name}:
+ %{header_instructions}
- ---
- %{message}
-
- ---
- Por favor visita este enlace para contestar: %{base_url}%{url}
- user_posted_pm:
- subject_template: "[%{site_name}] [MP] %{topic_title}"
- text_body_template: |
%{message}
%{context}
+ ---
+ %{respond_instructions}
+ user_posted_pm:
+ subject_template: "[%{site_name}] [MP] %{topic_title}"
+ text_body_template: |
+ %{header_instructions}
+
+ %{message}
+
+ %{context}
+
+ ---
+ %{respond_instructions}
+ user_posted_pm_staged:
+ subject_template: "%{optional_re}%{topic_title}"
+ text_body_template: |2
+
+ %{message}
+
---
%{respond_instructions}
digest:
@@ -1677,14 +1687,8 @@ es:
text_body_template: |
Una nueva cuenta ha sido creada por ti en %{site_name}
- Da clic en el siguiente enlace para escoger una contraseña para tu nueva cuenta:
+ Pulsa en el siguiente enlace para escoger una contraseña para tu nueva cuenta:
%{base_url}/users/password-reset/%{email_token}
- authorize_email:
- subject_template: "[%{site_name}] Confirma tu nueva dirección de email"
- text_body_template: |
- Confirma tu nueva dirección de email para %{site_name} haciendo clic en el siguiente enlace:
-
- %{base_url}/users/authorize-email/%{email_token}
signup_after_approval:
subject_template: "Tú solicitud ha sido aprobada en %{site_name}!"
text_body_template: |
@@ -1714,7 +1718,7 @@ es:
Si el enlace anterior no es clicable, prueba copiándolo y pegándolo en la barra de direcciones de tu navegador.
page_not_found:
- title: "La página que deseas ver no existe o es privada."
+ title: "¡Ups! Esa página no existe o es privada."
popular_topics: "Populares"
recent_topics: "Recientes"
see_more: "Más"
@@ -1739,8 +1743,6 @@ es:
images:
too_large: "Lo sentimos, la imagen que estás intentando subir es demasiado grande (el tamaño máximo es %{max_size_kb}%KB). Por favor, modifica sus dimensiones y prueba otra vez."
size_not_found: "Lo sentimos, pero no hemos podido determinar el tamaño de la imagen. ¿Quizás el archivo está corrupto?"
- avatar:
- missing: "Lo sentimos, pero el avatar que has elegido no está disponible en el servidor. ¿Puedes intentar subirlo de nuevo?"
flag_reason:
sockpuppet: "Un nuevo usuario ha creado un tema, y otro nuevo usuario con la misma dirección IP le ha respondido. Mira la opción flag_sockpuppets del sitio."
spam_hosts: "Este nuevo usuario intentó crear varios posts con enlaces al mismo dominio. Mira la opción newuser_spam_host_threshold."
@@ -1772,88 +1774,245 @@ es:
Edita el primer post de este tema para cambiar el contenido de la página %{page_name}.
guidelines_topic:
title: "Preguntas Frecuentes / Directrices"
+ body: |
+
+
+ ## [Este es un lugar público para conversaciones civilizadas](#civilized)
+
+ Por favor, trata este foro de debate con el mismo respeto con el que tratarías un parque. Este es un lugar donde compartir habilidades, conocimiento e intereses a través de debates y conversaciones.
+
+ Estas no son unas normas estrictas y cerradas, sino una ayuda para el correcto desarrollo de la comunidad. Usa estas pautas para mantener este sitio como un lugar limpio y adecuado para poder debatir y conversar correctamente.
+
+
+
+ ## [Aporta](#improve)
+
+ Ayúdanos a mantener este foro como un buen lugar esforzándote para mejorar el debate de alguna manera, aunque sea mínima. Si no estás seguro de lo que tu mensaje aporta a la conversación, piensa sobre lo que quieres decir e intenta contestar después.
+
+ El contenido de este foro nos importa, y queremos que actúes como si te importara a ti también. Sé respetuoso con los temas debatidos y con la gente que los debate, aunque no estés de acuerdo con algo de lo que digan.
+
+ Una buena manera de de mejorar el foro es investigando un poco lo que está pasando o ya ha pasado. Por favor, echa un vistazo a los temas ya existentes antes de responder a uno o crearlo y así podrás ver quién opina lo mismo o tiene intereses parecidos a los tuyos.
+
+
+
+ ## [Sé aceptable incluso cuando no estés de acuerdo](#agreeable)
+
+ Cuando vayas a responder a algo con lo que no estás de acuerdo acuérdate de __criticar las ideas y no las personas__. Por favor, evita:
+
+
+ * Ridiculizar a los demás.
+ * Faltar al respeto e insultar.
+ * Responder al tono del mensaje en vez de a su contenido.
+ * Hacer comparaciones y contradicciones exageradas y/o fuera de lugar.
+
+ En lugar de eso, da argumentos que aporten algo al tema, por favor.
+
+
+
+ ## [Tu participación cuenta](#participate)
+
+ Eres parte de la comunidad, y queremos que todo el mundo participe en ella. Crea o responde a los temas aportando algo y harás de este foro un lugar más interesante y agradable.
+
+ Este foro ofrece herramientas que permiten a la comunidad identificar entre todas las mejores (y peores) contribuciones: "Me gusta", marcadores, reportes, distintivos, respuestas, ediciones, y demás. Usa todo esto para mejorar tu experiencia y la de los demás.
+
+ Intentemos dejar esto mejor de lo que nos lo encontramos.
+
+
+
+ ## [Si ves un problema, repórtalo](#flag-problems)
+
+ Los moderadores tienen una autoridad especial: son los responsables de este foro. Pero tú lo eres también. Con tu ayuda, los moderadores pueden ser personas que faciliten el desarrollo de la comunidad en lugar de la policía del foro o el servicio de limpieza.
+
+ Cuando veas un comportamiento inadecuado, no respondas. Eso hace que, al reconocer públicamente el contenido inadecuado, se siga publicando contenido de esa clase. Además, lo único que harás será perder energía y el tiempo de todos. En su lugar, repórtalo. Si un post es reportado lo suficiente, se tomarán medidas automáticamente o mediante la intervención de un moderador.
+
+ Para el correcto funcionamiento de esta comunidad, los moderadores se reservan el derecho de eliminar cualquier contenido y cualquier cuenta, por cualquier razón en cualquier momento. Los moderadores no ven los temas antes de que sean publicados por lo que ellos y los operadores del foro no son responsables del contenido publicado por la comunidad.
+
+
+
+ ## [Sé educado](#be-civil)
+
+ Nada estropea más una conversación que la mala educación.
+
+ * Sé educado. No publoques nada que una persona razonable consideraría ofensivo o abusivo.
+ * Mantén limpio el foro. No publiques nada obsceno o sexualmente explícito.
+ * Respeta. No molestes ni acoses a los demás usuarios, tampoco publiques su información privada y/o personal.
+ * Respeta el foro. No publiques spam ni nos estropees el foro.
+
+ Como puedes ver, estos no son términos exactos con definiciones exactas. Evita siquiera la aparición de cualquiera de estas cosas en el foro. Si no estás seguro, piensa en cómo te sentirías si tu post apareciera en la portada de algún periódico importante.
+
+ Este es un foro público y por tanto el contenido puede aparecer en los motores de búsqueda. El foro es para todos los públicos, así que debes tener cuidado con el vocabulario y el contenido.
+
+
+
+ ## [Mantén limpio y organizado el foro](#keep-tidy)
+
+ Esfuérzate para poner las cosas en su lugar correspondiente para que podamos estar más tiempo participando en la comunidad y menos tiempo limpiando y organizando.
+
+ * No empieces un nuevo tema en la categoría equivocada.
+ * No publiques lo mismo en varios temas diferentes.
+ * No respondas con un mensaje sin contenido.
+ * No desvíes un tema en mitad de la discusión.
+ * No firmes tus mensajes — tu información y perfil están claramente visibles junto al post.
+
+ En vez de responder “+1” or “Estoy de acuerdo”, usa el botón de Me gusta. En lugar de cambiar radicalmente la dirección de un tema, responde como nuevo tema.
+
+
+
+ ## [Publica sólo lo que es tuyo](#stealing)
+
+ No publiques nada que pertenezca a otra persona sin permiso. No debes facilitar enlaces, descipciones o métodos de robar la propiedad intelectual de los demás. (software, vídeo, audio, imágenes, etc.), o formas de violar las leyes.
+
+
+
+ ## [Funcionamos gracias a gente como tú](#power)
+
+ Este foro es operado por nuestro [equipo](/about) y *vosotros*, la comunidad. Si tienes alguna pregunta sobre cómo deberían funcionar las cosas aquí, abre un nuevo tema en la [categoría de Sugerencias](/c/site-feedback). Si pasa algo urgente que no puede ser resuelto con un tema o un reporte, contáctanos a través de [esta página](/about).
+
+
+
+ ## [Términos del Servicio](#tos)
+
+ Sí, estos temas aburren, pero debemos protegernos – y, por extensión, a ti y a tus datos – frente a gente poco amigable. Tenemos unos [Términos del Servicio](/tos) que describen nuestra forma de actuar (y la tuya), y los derechos con relación al contenido, la privacidad y las leyes, Para usar nuestros servicios, debes aceptar nuestros [Términos y Condiciones](/tos).
tos_topic:
title: "Términos de Servicio"
+ body: |
+ The following terms and conditions govern all use of the %{company_domain} website and all content, services and products available at or through the website, including, but not limited to, %{company_domain} Forum Software, %{company_domain} Support Forums and the %{company_domain} Hosting service ("Hosting"), (taken together, the Website). The Website is owned and operated by %{company_full_name} ("%{company_name}"). The Website is offered subject to your acceptance without modification of all of the terms and conditions contained herein and all other operating rules, policies (including, without limitation, %{company_domain}’s [Privacy Policy](/privacy) and [Community Guidelines](/faq)) and procedures that may be published from time to time on this Site by %{company_name} (collectively, the "Agreement").
+
+ Please read this Agreement carefully before accessing or using the Website. By accessing or using any part of the web site, you agree to become bound by the terms and conditions of this agreement. If you do not agree to all the terms and conditions of this agreement, then you may not access the Website or use any services. If these terms and conditions are considered an offer by %{company_name}, acceptance is expressly limited to these terms. The Website is available only to individuals who are at least 13 years old.
+
+
+
+ ## [1. Your %{company_domain} Account](#1)
+
+ If you create an account on the Website, you are responsible for maintaining the security of your account and you are fully responsible for all activities that occur under the account. You must immediately notify %{company_name} of any unauthorized uses of your account or any other breaches of security. %{company_name} will not be liable for any acts or omissions by you, including any damages of any kind incurred as a result of such acts or omissions.
+
+
+
+ ## [2. Responsibility of Contributors](#2)
+
+ If you post material to the Website, post links on the Website, or otherwise make (or allow any third party to make) material available by means of the Website (any such material, "Content"), You are entirely responsible for the content of, and any harm resulting from, that Content. That is the case regardless of whether the Content in question constitutes text, graphics, an audio file, or computer software. By making Content available, you represent and warrant that:
+
+ * the downloading, copying and use of the Content will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark or trade secret rights, of any third party;
+ * if your employer has rights to intellectual property you create, you have either (i) received permission from your employer to post or make available the Content, including but not limited to any software, or (ii) secured from your employer a waiver as to all rights in or to the Content;
+ * you have fully complied with any third-party licenses relating to the Content, and have done all things necessary to successfully pass through to end users any required terms;
+ * the Content does not contain or install any viruses, worms, malware, Trojan horses or other harmful or destructive content;
+ * the Content is not spam, is not machine- or randomly-generated, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or boost the search engine rankings of third party sites, or to further unlawful acts (such as phishing) or mislead recipients as to the source of the material (such as spoofing);
+ * the Content is not pornographic, does not contain threats or incite violence, and does not violate the privacy or publicity rights of any third party;
+ * your content is not getting advertised via unwanted electronic messages such as spam links on newsgroups, email lists, blogs and web sites, and similar unsolicited promotional methods;
+ * your content is not named in a manner that misleads your readers into thinking that you are another person or company; and
+ * you have, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by %{company_name} or otherwise.
+
+
+
+ ## [3. User Content License](#3)
+
+ User contributions are licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US). Without limiting any of those representations or warranties, %{company_name} has the right (though not the obligation) to, in %{company_name}’s sole discretion (i) refuse or remove any content that, in %{company_name}’s reasonable opinion, violates any %{company_name} policy or is in any way harmful or objectionable, or (ii) terminate or deny access to and use of the Website to any individual or entity for any reason, in %{company_name}’s sole discretion. %{company_name} will have no obligation to provide a refund of any amounts previously paid.
+
+
+
+
+ ## [4. Payment and Renewal](#4)
+
+ ### General Terms
+
+ Optional paid services or upgrades may be available on the Website. When utilizing an optional paid service or upgrade, you agree to pay %{company_name} the monthly or annual subscription fees indicated. Payments will be charged on a pre-pay basis on the day you begin utilizing the service or upgrade and will cover the use of that service or upgrade for a monthly or annual subscription period as indicated. These fees are not refundable.
+
+ ### Automatic Renewal
+
+ Unless you notify %{company_name} before the end of the applicable subscription period that you want to cancel a service or upgrade, your subscription will automatically renew and you authorize us to collect the then-applicable annual or monthly subscription fee (as well as any taxes) using any credit card or other payment mechanism we have on record for you. Subscriptions can be canceled at any time.
+
+
+
+ ## [5. Services](#5)
+
+ ### Hosting, Support Services
+
+ Optional Hosting and Support services may be provided by %{company_name} under the terms and conditions for each such service. By signing up for a Hosting/Support or Support services account, you agree to abide by such terms and conditions.
+
+
+
+ ## [6. Responsibility of Website Visitors](#6)
+
+ %{company_name} has not reviewed, and cannot review, all of the material, including computer software, posted to the Website, and cannot therefore be responsible for that material’s content, use or effects. By operating the Website, %{company_name} does not represent or imply that it endorses the material there posted, or that it believes such material to be accurate, useful or non-harmful. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. The Website may contain content that is offensive, indecent, or otherwise objectionable, as well as content containing technical inaccuracies, typographical mistakes, and other errors. The Website may also contain material that violates the privacy or publicity rights, or infringes the intellectual property and other proprietary rights, of third parties, or the downloading, copying or use of which is subject to additional terms and conditions, stated or unstated. %{company_name} disclaims any responsibility for any harm resulting from the use by visitors of the Website, or from any downloading by those visitors of content there posted.
+
+
+
+ ## [7. Content Posted on Other Websites](#7)
+
+ We have not reviewed, and cannot review, all of the material, including computer software, made available through the websites and webpages to which %{company_domain} links, and that link to %{company_domain}. %{company_name} does not have any control over those non-%{company_domain} websites and webpages, and is not responsible for their contents or their use. By linking to a non-%{company_domain} website or webpage, %{company_name} does not represent or imply that it endorses such website or webpage. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. %{company_name} disclaims any responsibility for any harm resulting from your use of non-%{company_domain} websites and webpages.
+
+
+
+ ## [8. Copyright Infringement and DMCA Policy](#8)
+
+ As %{company_name} asks others to respect its intellectual property rights, it respects the intellectual property rights of others. If you believe that material located on or linked to by %{company_domain} violates your copyright, and if this website resides in the USA, you are encouraged to notify %{company_name} in accordance with %{company_name}’s [Digital Millennium Copyright Act](http://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act) ("DMCA") Policy. %{company_name} will respond to all such notices, including as required or appropriate by removing the infringing material or disabling all links to the infringing material. %{company_name} will terminate a visitor’s access to and use of the Website if, under appropriate circumstances, the visitor is determined to be a repeat infringer of the copyrights or other intellectual property rights of %{company_name} or others. In the case of such termination, %{company_name} will have no obligation to provide a refund of any amounts previously paid to %{company_name}.
+
+
+
+ ## [9. Intellectual Property](#9)
+
+ This Agreement does not transfer from %{company_name} to you any %{company_name} or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with %{company_name}. %{company_name}, %{company_domain}, the %{company_domain} logo, and all other trademarks, service marks, graphics and logos used in connection with %{company_domain}, or the Website are trademarks or registered trademarks of %{company_name} or %{company_name}’s licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any %{company_name} or third-party trademarks.
+
+
+
+ ## [10. Advertisements](#10)
+
+ %{company_name} reserves the right to display advertisements on your content unless you have purchased an Ad-free Upgrade or a Services account.
+
+
+
+ ## [11. Attribution](#11)
+
+ %{company_name} reserves the right to display attribution links such as ‘Powered by %{company_domain},’ theme author, and font attribution in your content footer or toolbar. Footer credits and the %{company_domain} toolbar may not be removed regardless of upgrades purchased.
+
+
+
+ ## [12. Changes](#12)
+
+ %{company_name} reserves the right, at its sole discretion, to modify or replace any part of this Agreement. It is your responsibility to check this Agreement periodically for changes. Your continued use of or access to the Website following the posting of any changes to this Agreement constitutes acceptance of those changes. %{company_name} may also, in the future, offer new services and/or features through the Website (including, the release of new tools and resources). Such new features and/or services shall be subject to the terms and conditions of this Agreement.
+
+
+
+ ## [13. Termination](#13)
+
+ %{company_name} may terminate your access to all or any part of the Website at any time, with or without cause, with or without notice, effective immediately. If you wish to terminate this Agreement or your %{company_domain} account (if you have one), you may simply discontinue using the Website. All provisions of this Agreement which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.
+
+
+
+ ## [14. Disclaimer of Warranties](#14)
+
+ The Website is provided "as is". %{company_name} and its suppliers and licensors hereby disclaim all warranties of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose and non-infringement. Neither %{company_name} nor its suppliers and licensors, makes any warranty that the Website will be error free or that access thereto will be continuous or uninterrupted. If you’re actually reading this, here’s [a treat](http://www.newyorker.com/online/blogs/shouts/2012/12/the-hundred-best-lists-of-all-time.html). You understand that you download from, or otherwise obtain content or services through, the Website at your own discretion and risk.
+
+
+
+ ## [15. Limitation of Liability](#15)
+
+ In no event will %{company_name}, or its suppliers or licensors, be liable with respect to any subject matter of this agreement under any contract, negligence, strict liability or other legal or equitable theory for: (i) any special, incidental or consequential damages; (ii) the cost of procurement for substitute products or services; (iii) for interruption of use or loss or corruption of data; or (iv) for any amounts that exceed the fees paid by you to %{company_name} under this agreement during the twelve (12) month period prior to the cause of action. %{company_name} shall have no liability for any failure or delay due to matters beyond their reasonable control. The foregoing shall not apply to the extent prohibited by applicable law.
+
+
+
+ ## [16. General Representation and Warranty](#16)
+
+ You represent and warrant that (i) your use of the Website will be in strict accordance with the %{company_name} [Privacy Policy](/privacy), [Community Guidelines](/guidelines), with this Agreement and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the country in which this website resides or the country in which you reside) and (ii) your use of the Website will not infringe or misappropriate the intellectual property rights of any third party.
+
+
+
+ ## [17. Indemnification](#17)
+
+ You agree to indemnify and hold harmless %{company_name}, its contractors, and its licensors, and their respective directors, officers, employees and agents from and against any and all claims and expenses, including attorneys’ fees, arising out of your use of the Website, including but not limited to your violation of this Agreement.
+
+
+
+ ## [18. Miscellaneous](#18)
+
+ This Agreement constitutes the entire agreement between %{company_name} and you concerning the subject matter hereof, and they may only be modified by a written amendment signed by an authorized executive of %{company_name}, or by the posting by %{company_name} of a revised version. Except to the extent applicable law, if any, provides otherwise, this Agreement, any access to or use of the Website will be governed by the laws of the state of California, U.S.A., excluding its conflict of law provisions, and the proper venue for any disputes arising out of or relating to any of the same will be the state and federal courts located in San Francisco County, California. Except for claims for injunctive or equitable relief or claims regarding intellectual property rights (which may be brought in any competent court without the posting of a bond), any dispute arising under this Agreement shall be finally settled in accordance with the Comprehensive Arbitration Rules of the Judicial Arbitration and Mediation Service, Inc. (“JAMS”) by three arbitrators appointed in accordance with such Rules. The arbitration shall take place in San Francisco, California, in the English language and the arbitral decision may be enforced in any court. The prevailing party in any action or proceeding to enforce this Agreement shall be entitled to costs and attorneys’ fees. If any part of this Agreement is held invalid or unenforceable, that part will be construed to reflect the parties’ original intent, and the remaining portions will remain in full force and effect. A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach thereof. You may assign your rights under this Agreement to any party that consents to, and agrees to be bound by, its terms and conditions; %{company_name} may assign its rights under this Agreement without condition. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and permitted assigns.
+
+ This document is CC-BY-SA. It was last updated May 31, 2013.
+
+ Originally adapted from the [WordPress Terms of Service](http://en.wordpress.com/tos/).
privacy_topic:
title: "Políticas de Privacidad"
- body: "\n\n## [¿Qué información recolectamos?](#collect)\n\nRecolectamos información tuya cuando te registras en nuestra web, y recopilamos información cuando participas en ella leyendo, escribiendo y evaluando el contenido compartido aquí.\n\nAl registrarte en nuestra web, puede que se te pida que indiques tu nombre y tu email. Sin embargo, puedes visitarnos sin registrarte. Tu email será verificado a través de un mensaje que contendrá un enlace único. Si ese enlace es visitado, sabremos que controlas el email.\n\nCuando estés registrado y publiques, guardamos la dirección IP de donde el mensaje ha sido publicado. Puede que guardemos registros que incluyan la dirección IP de cada intercambio de datos con nuestro servidor.\n\n\n\n## [¿Para qué usamos tu información?](#use)\n\nCualquier información recolectada puede ser usada en una de las siguientes\
- \ maneras:\n\n* Para personalizar tu experiencia — tu información nos ayuda a responder a tus necesidades individuales.\n* Para mejorar nuestra web — intentamos continuamente mejorar nuestro sitio web ofreciéndote contenido basado en la información que recibimos de ti.\n* Para mejorar el servicio de soporte — tu información nos ayuda a responder de una forma más efectiva a tus dudas y problemas.\n* Para enviar emails cada cierto tiempo — La direccion de email que nos proporciones puede ser usada para enviarte información, notificaciones que tú solicites sobre cambios en temas, sobre respuestas a tu nombre, respuestas a consultas y/o cualquier otro tipo de solicitudes o cuestiones.\n\n\n\n## [¿Cómo protegemos tu información?](#protect)\n\nTenemos implementadas varias medidas de seguridad para mantener tu información personal segura cuuando la introduces\
- \ o accedes a ella.\n\n\n\n## [¿Cuál es la política de retención de datos?](#data-retention)\n\nIntentamos:\n\n* No retener los registros de los servidores conteniendo la dirección IP de todas las solicitudes durante más de 90 días.\n* No retener las direcciones IP asociadas con usuarios registrados y sus mensajes durante no más de 5 años.\n\n\n\n\n## [¿Usamos cookies?](#cookies)\n\nSí. Las cookies con pequeños archivos que una web o su proveedor de servicios transfiere a tu disco duro a través de tu navegador (si lo permites).\nEstas cookies permiten a la web reconocer tu navegador y, si tienes una cuenta registrada, asociarlo con ella.nt.\n\nUsamos cookies para entender y guardar tus preferencias para futuras visitas y para recolectar información sobre el tráfico y la interacción con este sitio web para que podamos ofrecer mejores experiencias\
- \ y herramientas en un futuro. Puede que nos asociemos con terceras personas para que nos asisten a entender mejor a nuestros visitantes. Estos proveedores de servicios no tienen permitido usar esta información para otro propósito que no sea ayudarnos a mejorar.\n\n\n\n## [¿Revelamos alguna información a terceros?](#disclose)\n\nNo vendemos, intercambiamos o transferimos a terceros tu información personal. Esto no incluye a terceros que nos ayuden a operar correctamente este sitio web, a administrar nuestro negocio o a ofrecerte un servicio, siempre y cuando acepten mantener esta información confidencial.\nPuede que revelemos tu información cuando creamos que sea apropiado para cumplir con la ley, hacer cumplir con nuestras políticas, derechos, propiedades, o seguridad nuestros o de terceros. Sin embargo, la información no personal de los visitantes puede que sea entregada\
- \ debidamente a terceros con propósitos de marketing, publicidad u otros usos. \n\n\n\n## [Enlaces de terceros](#third-party)\n\nOcasionalmente, es posible que incluyamos u ofrezcamos enlaces a productos o servicios de terceros en esta web. Estos sitios webs de terceros tienen otras políticas de privacidad, por lo que no nos hacemos responsables del contenido y actividades de estos sitios. Sin embargo, intentamos proteger la integridad de nuestra web y aceptamos opiniones sobre estos sitios de terceros.\n\n\n\n## [Cumplimiento del Acta de Protección de la Privacidad Online de los Niños de 1998](#coppa)\n\nNuestra web, sus productos y servicios están dirigidos a personas que tengan 13 o más años de edas. Si este servidor está en EEUU, y tienes menos de 13 años de edad, a causa del Acta de Protección de la Privacidad Online de los Niños de 1998\
- \ ([Children's Online Privacy Protection Act](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act)) de EEUU, no uses este sitio web.\n\n\n\n## [Política de privacidad online](#online)\n\nEsta política de privacidad sólo tiene validez para la información recolectada a través de nuestro sitio web, y no para aquella recolectada offline.\n\n\n\n## [Consentimiento](#consent)\n\nAl usar nuestra web, aceptas esta política.\n\n\n\n## [Cambios a nuestra política de privacidad](#changes)\n\nSi decidimos cambiar nuestra política de privacidad, publicaremos los cambios en esta misma página.\n\nEste documento tiene una licencia \"CC-BY-SA\". Última actualización: 31 de mayo del 2013.\n"
- static:
- search_help: |
-
-
-
-
-
-
-
order:views | order:latest | order:likes | |||
status:open | status:closed | status:archived | status:noreplies | status:single_user | |
category:foo | user:foo | group:foo | badge:foo | ||
in:likes | in:posted | in:watching | in:tracking | in:private | |
in:bookmarks | in:first | ||||
posts_count:num | min_age:days | max_age:days |
-
-
- gatos category:parques status:open order:latest
buscará temas que contengan la palabra "gatos" en la categoría "parques" que no estén cerrados o archivados, ordenados por fecha del último post.
-
- badges: - long_descriptions: - autobiographer: | - Este distintivo se otorga por completar tu perfil de usuario y seleccionando una foto de perfil. Permitiendo a la comunidad saber más sobre ti y tus intereses hace que la comunidad sea mejor y esté más conectada. - first_like: "Este distintivo se otorga la primera vez que le das 'Me gusta' a un post usando el botón de :heart:. Dándole 'Me gusta' a posts es una manera estupenda de hacer saber al resto de compañeros de la comunidad que lo que han publicado te ha parecido interesante, útil, chulo o divertido. \n" - first_link: | - Este distintivo se otorga la primera vez que incluyes un enlace a otro tema en una respuesta. Enlazar temas ayuda al resto de lectores a encontrar interesantes conversaciones relevantes al enseñar las conexiones que dos temas tienen. - first_quote: | - Este distintivo se otorga la primera vez que citas un post en una respuesta. Citar secciones relevantes de posts anteriores en tus respuestas ayuda a mantener los debates centrados en el tema central. - first_share: | - Este distintivo se otorga la primera vez que compartes un enlace a una respuesta o tema usando el botón de compartir. Compartir enlaces es una buena manera de mostrar contenido interesante de la comunidad al resto de gente, ayudando a su crecimiento. - read_guidelines: | - Este distintivo se otorga por leer las directrices de la comunidad. Siguiendo y compartiendo estas simples directrices ayuda a construir una comunidad segura, divertida y sostenible. - reader: | - Este distintivo se otorga por leer un tema largo. Leer es fundamental. Leer al detalle ayuda a seguir la conversación y hace que las respuestas sean mejores y más completas. - editor: | - Este distintivo se otorga por editar tu post. No dudes en editar tus posts en cualquier momento para mejorarlos, corregir pequeños errores o añadir algo que olvidaste. - first_flag: "Este distintivo se concede por reportar un post. Reportar es crítico para la salud de tu comunidad. Si detectas que alguna publicación requiere de la atención de un moderador por favor \nno dudes en reportarlo. También puedes usar el diálogo de reporte para enviar mensajes a otros usuarios.\n\n" - nice_share: | - Este distintivo se concede por compartir un enlace a un post que ha recibido 25 visitantes nuevos. ¡Buen trabajo! Compartir enlaces a debates interesantes con amigos es una manera excelente de hacer crecer nuestra comunidad. - welcome: | - Este distintivo se concede cuando recibes tu primer Me gusta en un post. ¡Enhorabuena, has publicado algo que la comunidad considera guay, útil o interesante! - anniversary: | - Este distintivo se concede cuando cumples un año como miembro que ha publicado al menos un post. ¡Gracias por pasarte por aquí y contribuir a nuestra comunidad! - good_share: | - Este distintivo se concede por compartir un enlace a un post que ha recibido 300 visitantes nuevos. ¡Genial! Has descubierto un debate interesante para mucha gente que no conocía el sitio y nos has ayudado a crecer. - great_share: | - Este distintivo se concede por compartir un enlace a un post que ha recibido 1000 visitantes nuevos. ¡Bravo! Has promovido un debate interesante para una inmensa audiencia que no conocía el sitio y nos has ayudado a crecer muchísimo. - nice_post: | - Este distintivo se concede al publicar una respuesta con 10 Me gusta. ¡Buen trabajo! - nice_topic: | - Este distintivo se concede al crear un tema con 10 Me gusta. ¡Buen trabajo! - good_post: | - Este distintivo se concede al publicar una respuesta con 25 Me gusta. ¡Genial! - good_topic: | - Este distintivo se concede al crear un tema con 25 Me gusta. ¡Genial! - great_post: | - Este distintivo se concede al publicar una respuesta con 50 Me gusta. ¡Excelente! - great_topic: | - Este distintivo se concede al crear un tema con 50 Me gusta. ¡Excelente! - basic: | - Este distintivo se concede cuando alcanzas el nivel de confianza 1. Gracias por pasar por aquí un momento y leer unos cuantos temas para ver de qué va esta comunidad. Las restricciones de nuevo usuario se eliminan y podrás usar las funcionalidades esenciales del sitio como enviar mensajes a otras personas, reportar posts, editar posts wiki y publicar imágenes o varios enlaces. - member: | - Este distintivo se concede cuando alcanzas el nivel de confianza 2. Gracias por tu constante participación en la comunidad. Ahora puedes enviar invitaciones a otras personas desde tu perfil o temas individuales, enviar mensajes a grupos y dar más Me gusta por día. - regular: | - Este distintivo se concede cuando alcanzas el nivel de confianza 3. Gracias por tomar parte activa de nuestra comunidad por tanto tiempo, ser uno de los más ávidos lectores y contribuir tanto a su crecimiento y calidad. Ahora puedes recategorizar o renombrar temas, acceder al área vip, reportar spam de forma más contundente y dar muchos más Me gusta por día. - leader: | - Este distintivo se concede cuando alcanzas el nivel de confianza 4. Eres un líder de la comunidad elegido por los administradores, constituyes un ejemplo positivo para los demás mediante tus hechos y palabras. Ahora puedes editar todos los posts, dar muchísimos Me gusta por día y realizar acciones de moderador como destacar temas, cerrarlos, archivarlos, hacerlos invisibles, dividirlos o integrarlos. + body: "\n\n## [¿Qué información recolectamos?](#collect)\n\nRecolectamos información tuya cuando te registras en nuestra web, y recopilamos información cuando participas en ella leyendo, escribiendo y evaluando el contenido compartido aquí.\n\nAl registrarte en nuestra web, puede que se te pida que indiques tu nombre y tu email. Sin embargo, puedes visitarnos sin registrarte. Tu email será verificado a través de un mensaje que contendrá un enlace único. Si ese enlace es visitado, sabremos que controlas el email.\n\nCuando estés registrado y publiques, guardamos la dirección IP de donde el mensaje ha sido publicado. Puede que guardemos registros que incluyan la dirección IP de cada intercambio de datos con nuestro servidor.\n\n\n\n## [¿Para qué usamos tu información?](#use)\n\nCualquier información recolectada puede ser usada en una de las siguientes maneras:\n\n* Para personalizar tu experiencia — tu información nos ayuda a responder a tus necesidades individuales.\n* Para mejorar nuestra web — intentamos continuamente mejorar nuestro sitio web ofreciéndote contenido basado en la información que recibimos de ti.\n* Para mejorar el servicio de soporte — tu información nos ayuda a responder de una forma más efectiva a tus dudas y problemas.\n* Para enviar emails cada cierto tiempo — La direccion de email que nos proporciones puede ser usada para enviarte información, notificaciones que tú solicites sobre cambios en temas, sobre respuestas a tu nombre, respuestas a consultas y/o cualquier otro tipo de solicitudes o cuestiones.\n\n\n\n## [¿Cómo protegemos tu información?](#protect)\n\nTenemos implementadas varias medidas de seguridad para mantener tu información personal segura cuuando la introduces o accedes a ella.\n\n\n\n## [¿Cuál es la política de retención de datos?](#data-retention)\n\nIntentamos:\n\n* No retener los registros de los servidores conteniendo la dirección IP de todas las solicitudes durante más de 90 días.\n* No retener las direcciones IP asociadas con usuarios registrados y sus mensajes durante no más de 5 años.\n\n\n\n\n## [¿Usamos cookies?](#cookies)\n\nSí. Las cookies con pequeños archivos que una web o su proveedor de servicios transfiere a tu disco duro a través de tu navegador (si lo permites).\nEstas cookies permiten a la web reconocer tu navegador y, si tienes una cuenta registrada, asociarlo con ella.nt.\n\nUsamos cookies para entender y guardar tus preferencias para futuras visitas y para recolectar información sobre el tráfico y la interacción con este sitio web para que podamos ofrecer mejores experiencias y herramientas en un futuro. Puede que nos asociemos con terceras personas para que nos asisten a entender mejor a nuestros visitantes. Estos proveedores de servicios no tienen permitido usar esta información para otro propósito que no sea ayudarnos a mejorar.\n\n\n\n## [¿Revelamos alguna información a terceros?](#disclose)\n\nNo vendemos, intercambiamos o transferimos a terceros tu información personal. Esto no incluye a terceros que nos ayuden a operar correctamente este sitio web, a administrar nuestro negocio o a ofrecerte un servicio, siempre y cuando acepten mantener esta información confidencial.\nPuede que revelemos tu información cuando creamos que sea apropiado para cumplir con la ley, hacer cumplir con nuestras políticas, derechos, propiedades, o seguridad nuestros o de terceros. Sin embargo, la información no personal de los visitantes puede que sea entregada debidamente a terceros con propósitos de marketing, publicidad u otros usos. \n\n\n\n## [Enlaces de terceros](#third-party)\n\nOcasionalmente, es posible que incluyamos u ofrezcamos enlaces a productos o servicios de terceros en esta web. Estos sitios webs de terceros tienen otras políticas de privacidad, por lo que no nos hacemos responsables del contenido y actividades de estos sitios. Sin embargo, intentamos proteger la integridad de nuestra web y aceptamos opiniones sobre estos sitios de terceros.\n\n\n\n## [Cumplimiento del Acta de Protección de la Privacidad Online de los Niños de 1998](#coppa)\n\nNuestra web, sus productos y servicios están dirigidos a personas que tengan 13 o más años de edas. Si este servidor está en EEUU, y tienes menos de 13 años de edad, a causa del Acta de Protección de la Privacidad Online de los Niños de 1998 ([Children's Online Privacy Protection Act](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act)) de EEUU, no uses este sitio web.\n\n\n\n## [Política de privacidad online](#online)\n\nEsta política de privacidad sólo tiene validez para la información recolectada a través de nuestro sitio web, y no para aquella recolectada offline.\n\n\n\n## [Consentimiento](#consent)\n\nAl usar nuestra web, aceptas esta política.\n\n\n\n## [Cambios a nuestra política de privacidad](#changes)\n\nSi decidimos cambiar nuestra política de privacidad, publicaremos los cambios en esta misma página.\n\nEste documento tiene una licencia \"CC-BY-SA\". Última actualización: 31 de mayo del 2013.\n" admin_login: success: "Email enviado" error: "¡Error!" @@ -1864,3 +2023,8 @@ es: performance_report: initial_post_raw: Este tema contiene informes diarios sobre el rendimiento de tu sito. initial_topic_title: Informe sobre el rendimiento del sitio + time: + <<: *datetime_formats + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.fa_IR.yml b/config/locales/server.fa_IR.yml index 92229021a8b..22b0cf5acca 100644 --- a/config/locales/server.fa_IR.yml +++ b/config/locales/server.fa_IR.yml @@ -10,18 +10,21 @@ fa_IR: short_date_no_year: "D MMM" short_date: "D MMM, YYYY" long_date: "MMMM D, YYYY h:mma" + datetime_formats: &datetime_formats + formats: + short: "%m-%d-%Y" + short_no_year: "%B %-d" + date_only: "%B %-d, %Y" title: "گفتمان" topics: "موضوعات" posts: "نوشته ها" loading: "بارگذاری..." powered_by_html: 'قدرت گرفته ازدیسکورسفارسی سازی دیسکورس فارسی, برای نمایش بهتر جاوا اسکریپت را فعال کنید.' log_in: "ورود" - via: "%{username} از %{site_name}" - is_reserved: "محفوظ است" purge_reason: "بطور خودکار پاک شد بدلیل استفاده نشدن٬ حساب کاربری غیرفعال" disable_remote_images_download_reason: "عکس های ریموت دانلود شده غیرفعال شدند زیرا آنجا فضای کافی در دیسک وجود نداشت" anonymous: "ناشناس" - errors: + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "محدود به %{max} کاراکتر; شما وارد %{length} کردید " @@ -37,8 +40,10 @@ fa_IR: exclusion: محفوظ است greater_than: باید بیشتر از %{count} باشد greater_than_or_equal_to: باید بیشتر و یا مساوی %{count} باشد + has_already_been_used: "قبلا استفاده شده" inclusion: در لیست وجود ندارد invalid: صحیح نیست + is_invalid: "نامعتبر است, سعی کنید کمی بیشتر توضیح دهید" less_than: باید کمتر از %{count} باشد less_than_or_equal_to: باید کمتر و یا مساوی %{count} باشد not_a_number: یک عدد نمی باشد @@ -61,6 +66,13 @@ fa_IR: other: '%{count} خطاهای ممنوع این %{model} از ذخیره شد ' embed: load_from_remote: "خطایی در بارگذاری آن پست رخ داده است." + site_settings: + min_username_length_exists: "شما نمیتوانید حداقل طول نام کاربری را بیشتر از کوتاه ترین نام کاربری بگذارید." + min_username_length_range: "شما نمیتوانید حداقل را بیشتر از حداکثر بگذارید." + max_username_length_exists: "شما نمیتوانید حداکثر طول نام کاربری را کمتر از بلند ترین نام کاربری بگذارید." + max_username_length_range: "شما نمیتوانید حداکثر را کمتر از حداقل بگذارید." + default_categories_already_selected: "شما نمیتوانید یک دسته بندی که در یک فهرست دیگر استفاده شده را انتخاب کنید." + s3_upload_bucket_is_required: "شما نمیتوانید بارگذاری به S3 را فعال کنید مگر اینکه 's3_upload_bucket' ارائه بدهید." bulk_invite: file_should_be_csv: "قالب پروندهی بارگذاری شده باید csv و یا txt باشد." backup: @@ -84,26 +96,21 @@ fa_IR: in_reply_to: "▶ %{username}" replies: other: "%{count} پاسخ" + no_mentions_allowed: "متأسفیم، شما نمیتوانید به کاربران دیگر اشاره کنید." too_many_mentions: - zero: "متأسفیم، شما نمیتوانید به کاربران دیگر اشاره کنید." - one: "متأسفیم، شما در هر دیدگاه تنها میتوانید به یک کاربر اشاره کنید." - other: "متأسفیم، شما در هر دیدگاه تنها میتوانید به %{count} کاربر اشاره کنید." + other: "متأسفیم، شما در هر ارسال تنها میتوانید به %{count} کاربر اشاره کنید." + no_mentions_allowed_newuser: "متأسفیم، کاربران تازه نمیتوانند به کاربران دیگر اشاره کنند." too_many_mentions_newuser: - zero: "متأسفیم، کاربران تازه نمیتوانند به کاربران دیگر اشاره کنند." - one: "متأسفیم، کاربران تازه در هر دیدگاه تنها میتوانید به یک کاربر دیگر اشاره کنند." - other: "متأسفیم، کاربران تازه در هر دیدگاه تنها میتوانید به %{count} کاربر دیگر اشاره کنند." + other: "متأسفیم، کاربران تازه در هر ارسال تنها میتوانند به %{count} کاربر دیگر اشاره کنند." + no_images_allowed: "متأسفیم، کاربران تازه نمیتوانند در ارسال ها تصویر بگذارند." too_many_images: - zero: "متأسفیم، کاربران تازه نمیتوانند در دیدگاهها تصویر بگذارند." - one: "متأسفیم، کاربران تازه تنها میتوانند یک تصویر در هر دیدگاه بگذارند" - other: "متأسفیم، کاربران تازه تنها میتوانند %{count} تصویر در هر دیدگاه بگذارند" + other: "متأسفیم، کاربران تازه تنها میتوانند %{count} تصویر در هر ارسال بگذارند." + no_attachments_allowed: "متأسفیم، کاربران تازه امکان قرار دادن پیوست را در ارسال هایشان ندارند." too_many_attachments: - zero: "متأسفیم، کاربران تازه امکان اضافه کردن فایل به ارسال هایشان را ندارند." - one: "متأسفیم ، کاربران تازه فقط امکان اتصال تنها یک فایل به ارسال هایشان را دارند." - other: "متأسفیم ، کاربران تازه تنها اجازه اتصال %{count} فایل به ارسالی شان را دارند." + other: "متأسفیم ، کاربران تازه تنها میتوانند %{count} پیوست در هر ارسال قرار بدهند." + no_links_allowed: "متأسفیم، کاربران تازه نمیتوانند در ارسال ها پیوند بگذارند." too_many_links: - zero: "متأسفیم، کاربران تازه نمیتوانند در دیدگاهها پیوند بگذارند." - one: "متأسفیم، کاربران تازه تنها میتوانند در هر دیدگاه یک پیوند بگذارند." - other: "متأسفیم، کاربران تازه تنها میتوانند در هر دیدگاه %{count} پیوند بگذارند." + other: "متأسفیم، کاربران تازه تنها میتوانند در هر ارسال %{count} پیوند بگذارند." spamming_host: "متأسفانه شما نمیتوانید پیوندی با آن نشانی را بفرستید." user_is_suspended: "کاربر تعلیق شده نمیتواند نوشته ای بگذارد." topic_not_found: "یک مشکلی وجود دارد. شاید این جستار بسته شده یا پاک شده همزمان که داشتی نگاهش می کردی ؟" @@ -135,6 +142,7 @@ fa_IR: errors: can_not_modify_automatic: "شما امکان تغییر یک گروه خودکار را ندارید." member_already_exist: "%{username}' در حال حاضر عضو این گروه است." + invalid_domain: "'%{domain}' یک دامنه معتبر نیست." default_names: everyone: "همه" admins: "مدیران" @@ -194,9 +202,6 @@ fa_IR: user_profile: bio_raw: "درباره من" errors: - messages: - is_invalid: "نامعتبر است. تلاش کنید که کمی بیشتر توضیح بگذارید." - has_already_been_used: "موجود می باشد" models: topic: attributes: @@ -217,6 +222,7 @@ fa_IR: attributes: hex: invalid: "این یک رنگ معتبر نیست" + <<: *errors user_profile: no_info_me: "
" no_info_other: "
+
+
order:views | order:latest | order:likes | |||
status:open | status:closed | status:archived | status:noreplies | status:single_user | |
category:foo | user:foo | group:foo | badge:foo | ||
in:likes | in:posted | in:watching | in:tracking | in:private | |
in:bookmarks | in:first | in:pinned | in:unpinned | ||
posts_count:num | before:days or date | after:days or date |
+
rainbows category:parks status:open order:latest
etsii alueelta "parks" ketjuja, joissa esiintyy sana "rainbows" ja joita ei suljettu tai arkistoitu, ja esittää ylimmäisinä ne ketjut, joihin on viimeksi kirjoitettu.rainbows category:"parks and gardens" in:bookmarks
etsii alueelta "parks and gardens" kirjanmerkkeihin lisäämiäsi ketjuja, joissa esiintyy sana "rainbows".Ci siamo quasi! Abbiamo mandato una email di attivazione a %{email}. Per favore segui le istruzioni contenute nell'email per attivare il tuo account.
Se l'email non ti arriva, controlla la tua cartella spam o prova a collegarti ancora per inviare un'altra email di attivazione.
" not_activated: "Non puoi ancora collegarti. Ti abbiamo mandato un'email di attivazione. Per favore segui le istruzioni contenute nell'email per attivare il tuo account." @@ -999,6 +1003,7 @@ it: omniauth_error_unknown: "Qualcosa è andato storto durante il collegamento, per favore riprova." new_registrations_disabled: "Non sono permesse nuove registrazioni al momento." password_too_long: "Le password sono limitate a 200 caratteri." + reserved_username: "Questo utente non ha il permesso." missing_user_field: "Non hai inserito tutti i campi utente" close_window: "L'autenticazione è completa. Chiudi questa finestra per continuare." user: @@ -1012,6 +1017,10 @@ it: email: not_allowed: "non è permesso da quel fornitore di email. Per favore usa un altro indirizzo email." blocked: "non è permesso." + flags_reminder: + subject_template: + one: "1 segnalazione in attesa di essere revisionata" + other: "%{count} segnalazioni in attesa di essere revisionate" invite_mailer: subject_template: "%{invitee_name} ti ha invitato a '%{topic_title}' su %{site_domain_name}" text_body_template: "%{invitee_name} ti invita ad una discussione\n\n> **%{topic_title}**\n>\n> %{topic_excerpt}\n\nsu\n\n> %{site_title} -- %{site_description}\n\nSe sei interessato, clicca il collegamento qui sotto:\n\n%{invite_link}\n\nL'invito è da parte di un utente affidabile, perciò puoi rispondere alla discussione immediatamente. \n" @@ -1026,15 +1035,6 @@ it: subject_template: "[%{site_name}] Nuova versione di Discourse, aggiornamento disponibile" new_version_mailer_with_notes: subject_template: "[%{site_name}] aggiornamento disponibile" - flags_reminder: - flags_were_submitted: - one: "Queste segnalazioni sono state inviate oltre un'ora fa." - other: "Queste segnalazioni sono state inviate oltre %{count} ore fa." - please_review: "Per favore, revisionale." - post_number: "messaggio" - subject_template: - one: "1 segnalazione in attesa di essere revisionata" - other: "%{count} segnalazioni in attesa di essere revisionate" flag_reasons: off_topic: "Il tuo messaggio è stato segnalato come **fuori tema**: la comunità pensa non riguardi l'argomento, come attualmente definito dal titolo e dal contenuto del primo messaggio." inappropriate: "Il tuo messaggio è stato segnalato come **inappropriato**: la comunità lo ritiene offensivo, ingiurioso o una violazione delle [linee guida della comunità](/guidelines)." @@ -1049,8 +1049,10 @@ it: system_messages: post_hidden: subject_template: "Messaggio nascosto a causa di segnalazioni dalla comunità" + text_body_template: "Salve,\n\nquesto è un messaggio automatico da parte di %{site_name} per informarti che il tuo messaggio è stato nascosto.\n\n%{base_url}%{url}\n\n%{flag_reason}\n\nVari membri della comunità hanno segnalato il messaggio prima che venisse nascosto, quindi per favore pensa come modificarlo alla luce di queste osservazioni. **Puoi modificare il messaggio dopo %{edit_delay} minuti, e verrà automaticamente ripubblicato.** \n\nTuttavia, se il messaggio dovesse venire nascosto dalla comunità una seconda volta, rimarrà nascosto fino a che un membro dello staff se ne occuperà – e saranno possibili ulteriori sanzioni, compresa la sospensione del tuo account.\n\nPer ulteriori informazioni, puoi far riferimento alle nostre [community guidelines](%{base_url}/guidelines).\n" welcome_user: subject_template: "Benvenuto su %{site_name}!" + text_body_template: "Grazie per esserti unito a %{site_name}, e benvenuto!\n\n%{new_user_tips} \n\nNoi crediamo in un [comportamento comunitario civile](%{base_url}/guidelines), sempre. Buona permanenza!\n\n(Se desideri comunicare con [i membri dello staff](%{base_url}/about) come nuovo utente, rispondi semplicemente a questo messaggio.)\n" welcome_invite: subject_template: "Benvenuto su %{site_name}!" backup_succeeded: @@ -1087,45 +1089,33 @@ it: subject_template: "Esportazione dati completa" csv_export_failed: subject_template: "Esportazione dati fallita" - email_reject_trust_level: - text_body_template: | - Ci dispiace, ma il tuo messaggio email per %{destination} (con il titolo %{former_title}) non è stato processato. - - Il tuo utente non ha il livello di esperienza richiesto per inviare nuovi argomenti a questo indirizzo email. Se credi che ciò sia un errore, contatta un membro dello staff. + email_reject_no_account: + subject_template: "[%{site_name}] Problema relativo all'email -- Account Sconosciuto" + email_reject_empty: + subject_template: "[%{site_name}] Problema relativo all'email -- Nessun Contenuto" + email_reject_parsing: + subject_template: "[%{site_name}] Problema relativo all'email -- Contenuto non riconosciuto" + email_reject_invalid_access: + subject_template: "[%{site_name}] Problema relativo all'email -- Accesso non valido" + email_reject_reply_key: + subject_template: "[%{site_name}] Problema relativo all'email -- Chiave di risposta sconosciuta" email_reject_topic_not_found: subject_template: "[%{site_name}] Problema relativo all'email -- Argomento Non Trovato" + email_reject_topic_closed: + subject_template: "[%{site_name}] Problema relativo all'email -- Argomento Chiuso" + email_reject_auto_generated: + subject_template: "[%{site_name}] Problema relativo all'email -- Risposta Autogenerata" + email_error_notification: + subject_template: "[%{site_name}] Problema relativo all'email -- Errore di autenticazione POP" too_many_spam_flags: subject_template: "Nuovo account bloccato" text_body_template: "Ciao, \n\nil presente è un messaggio automatico da %{site_name} per informarti che i tuoi messaggi sono stati automaticamente nascosti perché segnalati dalla comunità. \n\nCome misura precauzionale, il tuo nuovo account non può creare altre risposte o argomenti finché il tuo account non verrà revisionato da un membro dello staff. \n\nPer ulteriori informazioni, ti rimandiamo alle [Linee guida della comunità](%{base_url}/guidelines).\n" blocked_by_staff: subject_template: "Account bloccato" - text_body_template: | - Ciao, - - questo è un messaggio automatico da %{site_name} per informarti che il tuo account è stato bloccato da un membro dello staff. - - Per maggiori dettagli, fai riferimento alle nostre [linee guida della community](%{base_url}/guidelines). user_automatically_blocked: subject_template: "Nuovo utente %{username} bloccato a causa delle segnalazioni" - text_body_template: | - Questo è un messaggio automatico. - - Il nuovo utente [%{username}](%{base_url}%{user_url}) è stato automaticamente bloccato perché più utenti hanno contrassegnato i messaggi di %{username}. - - Per favore [controlla le segnalazioni](%{base_url}/admin/flags). Se %{username} è stato bloccato per errore, clicca sul tasto di sblocco nella [pagina di amministrazione di questo utente](%{base_url}%{user_url}). - - La soglia può essere modificata tramite l'impostazione del sito `block_new_user`. spam_post_blocked: subject_template: "Il messaggi del nuovo utente %{username} sono stati bloccati a causa dell'invio di ripetuti collegamenti." - text_body_template: |+ - Questo è un messaggio automatico. - - Il nuovo utente [%{username}](%{base_url}%{user_url}) ha creato diversi messaggi con collegamenti a %{domains}, ma tali messaggi sono stati bloccati per evitare spam. L'utente è ancora abilitato alla creazione di messaggi ma senza collegamenti verso %{domains}. - - Per favore [controlla questo utente](%{base_url}%{user_url}). - - Questa soglia può essere modificata tramite l'impostazione `newuser_spam_host_threshold` e `white_listed_spam_host_domains` del sito. - unblocked: subject_template: "Account sbloccato" text_body_template: | @@ -1138,7 +1128,7 @@ it: subject_template: one: "1 utente in attesa di approvazione" other: "%{count} utenti in attesa di approvazione" - text_body_template: "Ci sono nuove iscrizioni che vanno approvate (o rifiutate) prima che possano accedere a questo forum. \n\n[Per favore valutale nella sezione di amministrazione](%{base_url}/admin/users/list/pending).\n" + text_body_template: "Ci sono nuove iscrizioni in attesa di essere approvate (o rifiutate) prima che possano accedere a questo forum. \n\n[Per favore valutale nella sezione di amministrazione](%{base_url}/admin/users/list/pending).\n" download_remote_images_disabled: subject_template: "Lo scaricamento delle immagini remote è disabilitato" text_body_template: "L'impostazione `download_remote_images_to_local` è stata disabilitata perché è stato raggiunto il limite di spazio su disco definito in `download_remote_images_threshold`." @@ -1149,56 +1139,47 @@ it: unsubscribe: title: "Annulla iscrizione" description: "Non vuoi ricevere queste email? Nessun problema! Clicca qui sotto per annullare l'iscrizione:" - reply_by_email: "Per intervenire, rispondi a questa email o visita %{base_url}%{url}." - visit_link_to_respond: "Per rispondere, visita %{base_url}%{url}" posted_by: "Pubblicato da %{username} il %{post_date}" user_invited_to_private_message_pm: subject_template: "[%{site_name}] %{username} ti invita al partecipare al messaggio '%{topic_title}'" - user_invited_to_topic: - subject_template: "[%{site_name}] %{username} ti invita a partecipare all'argomento '%{topic_title}'" user_replied: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} + text_body_template: "%{header_instructions} \n\n%{message}\n\n%{context}\n\n---\n%{respond_instructions}\n" + user_replied_pm: + subject_template: "[%{site_name}] [PM] %{topic_title}" + text_body_template: "%{header_instructions} \n\n%{message}\n\n%{context}\n\n---\n%{respond_instructions}\n" user_quoted: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} + text_body_template: "%{header_instructions} \n\n%{message}\n\n%{context}\n\n---\n%{respond_instructions}\n" + user_linked: + subject_template: "[%{site_name}] %{topic_title} " + text_body_template: "%{header_instructions}\n \n%{message}\n\n%{context}\n\n---\n%{respond_instructions}\n" user_mentioned: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} + text_body_template: "%{header_instructions}\n\n%{message}\n \n%{context}\n\n---\n%{respond_instructions}\n" + user_group_mentioned: + subject_template: "[%{site_name}] %{topic_title}" + text_body_template: "%{header_instructions}\n\n%{message}\n\n%{context}\n \n---\n%{respond_instructions}\n" user_posted: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} + text_body_template: "%{header_instructions}\n\n%{message}\n \n%{context}\n\n---\n%{respond_instructions}\n" user_posted_pm: subject_template: "[%{site_name}] [PM] %{topic_title}" text_body_template: | + %{header_instructions} + %{message} %{context} + --- + %{respond_instructions} + user_posted_pm_staged: + subject_template: "%{optional_re}%{topic_title}" + text_body_template: |2 + + %{message} + --- %{respond_instructions} digest: @@ -1234,16 +1215,11 @@ it: Fai clic sul seguente collegamento per scegliere una password per il tuo nuovo account: %{base_url}/users/password-reset/%{email_token} - authorize_email: - subject_template: "[%{site_name}] Conferma il tuo nuovo indirizzo email" - text_body_template: | - Conferma il tuo nuovo indirizzo email per %{site_name} cliccando sul seguente collegamento: - - %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "Sei stato ammesso su %{site_name}!" - text_body_template: "Benvenuto su %{site_name}! \n\nUn membro dello staff ha approvato il tuo account su %{site_name}. \n\nClicca sul seguente collegamento per confermare e attivare il tuo nuovo account:\n%{base_url}/users/activate-account/%{email_token} \n\nSe il collegamento qui sopra non è cliccabile, prova a copiarlo e incollarlo nella barra degli indirizzi del tuo browser. \n\n%{new_user_tips}\n\nNoi crediamo fermamente in un [comportamento comunitario civile](%{base_url}/guidelines) sempre.\n\nBuona permanenza!\n\n(Se hai bisogno di comunicare privatamente con i [membri dello staff](%{base_url}/about) come nuovo utente, rispondi semplicemente a questo messaggio privato.)\n" + text_body_template: "Benvenuto su %{site_name}! \n\nUn membro dello staff ha approvato il tuo account su %{site_name}. \n\nClicca sul seguente collegamento per confermare e attivare il tuo nuovo account:\n%{base_url}/users/activate-account/%{email_token} \n\nSe il collegamento qui sopra non è cliccabile, prova a copiarlo e incollarlo nella barra degli indirizzi del tuo browser. \n\n%{new_user_tips}\n\nNoi crediamo in un [comportamento comunitario civile](%{base_url}/guidelines), sempre.\n\nBuona permanenza!\n\nps: se vuoi comunicare privatamente con i [membri dello staff](%{base_url}/about) come nuovo utente, rispondi semplicemente a questo messaggio.\n" signup: + subject_template: "[%{site_name}] Conferma il tuo nuovo account" text_body_template: | Benvenuto su %{site_name}! @@ -1271,6 +1247,7 @@ it: unauthorized: "Spiacenti, il file che stai cercando di caricare non è autorizzato (estensioni autorizzate: %{authorized_extensions})." pasted_image_filename: "Immagine incollata" store_failure: "Caricamento n°%{upload_id} fallito per l'utente n°%{user_id}." + file_missing: "Spiacenti, devi fornire un file da caricare." attachments: too_large: "Spiacenti, ma il file che stai cercando di caricare è troppo grande (la dimensione massima è %{max_size_kb}KB)." images: @@ -1316,3 +1293,8 @@ it: error: "Errore!" email_input: "Email Amministratore" submit_button: "Invia Email" + time: + <<: *datetime_formats + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.ja.yml b/config/locales/server.ja.yml index d786fa759ce..81ce45a79be 100644 --- a/config/locales/server.ja.yml +++ b/config/locales/server.ja.yml @@ -10,18 +10,21 @@ ja: short_date_no_year: "MMM D" short_date: "MMM D, YYYY" long_date: "MMMM D, YYYY h:mma" + date: + month_names: [null, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] title: "Discourse" topics: "トピック" posts: "投稿" loading: "読み込み中" powered_by_html: 'Powered by Discourse, best viewed with JavaScript enabled' log_in: "ログイン" - via: "%{username} via %{site_name}" - is_reserved: "は予約されています" purge_reason: "アクティブでないアカウントは放棄されたとして削除されました" disable_remote_images_download_reason: "ディスク容量が不足しているため、リモートでの画像ダウンロードは無効になっています。" anonymous: "匿名" - errors: + emails: + incoming: + default_subject: "%{email}からメール" + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "は、最大文字数(%{max}文字)を超えています。(入力したのは%{length}文字 ) " @@ -37,8 +40,10 @@ ja: exclusion: は予約されています greater_than: は%{count}より大きい値にしてください greater_than_or_equal_to: は%{count}以上の値にしてください + has_already_been_used: "は既に使用されています" inclusion: は一覧にありません invalid: は不正な値です + is_invalid: "は不正です。もう少し説明を追加してください" less_than: は%{count}より小さい値にしてください less_than_or_equal_to: は%{count}以下の値にしてください not_a_number: は数値で入力してください @@ -84,26 +89,6 @@ ja: in_reply_to: "▶ %{username}" replies: other: "%{count} 通の返信" - too_many_mentions: - zero: "申し訳ありませんが、この投稿において他のユーザをタグ付けできません。" - one: "申し訳ありませんが、この投稿においてあと1人しかタグ付けできません。" - other: "申し訳ありませんが、このポストにおいてあと%{count}人しかタグ付けできません。" - too_many_mentions_newuser: - zero: "申し訳ありませんが、新規ユーザはこのポストにおいて他のユーザをタグ付けできません。" - one: "申し訳ありませんが、新規ユーザはこのポストにおいてあと1人しかタグ付けできません。" - other: "申し訳ありませんが、新規ユーザはこのポストにおいてあと%{count}人しかタグ付けできません。" - too_many_images: - zero: "申し訳ありませんが、新規ユーザはこのポストに画像をアップロードできません。" - one: "申し訳ありませんが、新規ユーザはこのポストに画像を1つしかアップロードできません。" - other: "申し訳ありませんが、新規ユーザはこのポストに画像を%{count}個しかアップロードできません。" - too_many_attachments: - zero: "申し訳ありませんが、新規ユーザはこのポストにファイルを添付できません。" - one: "申し訳ありませんが、新規ユーザはこのポストにファイルを1つしか添付できません。" - other: "申し訳ありませんが、新規ユーザはこのポストにファイルを%{count}個しか添付できません。" - too_many_links: - zero: "申し訳ありませんが、新規ユーザはこのポストにリンクを貼れません。" - one: "申し訳ありませんが、新規ユーザはこのポストにリンクを1つしか貼れません。" - other: "申し訳ありませんが、新規ユーザはこのポストにリンクを%{count}個しか貼れません。" spamming_host: "申し訳ありませんが、このホストへのリンクを貼ることはできません。" user_is_suspended: "サスペンド中のユーザーは投稿ができません。" topic_not_found: "何かがおかしいです。トピックが終了したか、閲覧してる間に削除された可能性があります" @@ -190,11 +175,8 @@ ja: post: raw: "本文" user_profile: - bio_raw: "About Me" + bio_raw: "自己紹介" errors: - messages: - is_invalid: "は不正です。もう少し説明を追加してください" - has_already_been_used: "は既に使用中です" models: topic: attributes: @@ -215,6 +197,7 @@ ja: attributes: hex: invalid: "は有効なカラーではありません" + <<: *errors user_profile: no_info_me: "Prawie gotowe! Wysłaliśmy email aktywacyjny na adres %{email}. Postępuj zgodnie z instrukcją z tego emaila, żeby dokończyć ten proces.
Jeśli email nie dotrze do Ciebie, sprawdź folder ze spamem, lub zaloguj sie jeszcze raz, żeby wysłać go ponownie.
" not_activated: "Nie możesz się jeszcze zalogować. Wysłaliśmy do Ciebie email aktywacyjny. Wykonaj instrukcje w nim zawarte by aktywować Twoje konto." + not_allowed_from_ip_address: "Nie możesz się zalogować jako %{username} z tego adresu IP." + admin_not_allowed_from_ip_address: "Nie możesz zalogować się jako administrator z tego adresu IP." + suspended: "Nie możesz się zalogować aż do %{date}." + suspended_with_reason: "Konto zawieszone do %{date}: %{reason}" errors: "%{errors}" not_available: "Niedostępny. Może spróbuj %{suggestion}?" something_already_taken: "Coś poszło źle. Możliwe, że ta nazwa użytkownika lub email są już zarejestrowane. Spróbuj użyć procedury przypominania hasła." + omniauth_error: "Przepraszamy, pojawił się błąd autoryzacji twojego konta. Sprawdź, czy zatwierdziłeś autoryzację." omniauth_error_unknown: "Wystąpił błąd podczas logowania, spróbuj ponownie." + new_registrations_disabled: "Aktualnie nie jest możliwe zarejestrowanie nowego konta." password_too_long: "Hasła są ograniczone do 200 znaków." + email_too_long: "Podałeś zbyt długi adres email. Nazwa skrzynki pocztowej nie może być dłuższa niż 254 znaki, a nazwa domeny nie może zawierać więcej niż 253 znaki." + reserved_username: "Niedozwolona nazwa użytkownika." missing_user_field: "Nie wypełniłeś wszystkich pól użytkownika" close_window: "Uwierzytelnianie zakończone. Aby kontynuować, zamknij to okno." user: @@ -885,10 +931,22 @@ pl_PL: characters: "może zawierać tylko litery, cyfry i podkreślenia" unique: "musi być unikalna" blank: "musi zostać podana" + must_not_contain_two_special_chars_in_seq: "nie może zawierać sekwencji 2 lub więcej znaków specjalnych (.-_)" email: not_allowed: "nie jest dopuszczany od tego dostawcy poczty. Użyj innego adresu email." blocked: "is not allowed." + ip_address: + blocked: "Z twojego adresu IP nowe rejestracje nie są możliwe." + max_new_accounts_per_registration_ip: "Z twojego adresu IP nowe rejestracje nie są możliwe (wyczerpany limit). Skonaktuj się z personelem." + flags_reminder: + subject_template: + one: "1 flaga oczekuje na reakcję" + few: "%{count} flagi oczekują na reakcję" + other: "%{count} flagi oczekują na reakcję" + invite_mailer: + subject_template: "%{invitee_name} zaprosił cię do '%{topic_title}' na %{site_domain_name}" invite_forum_mailer: + subject_template: "%{invitee_name} zaprosił cię do dołączenia do %{site_domain_name}" text_body_template: | %{invitee_name} wysłał Tobie zaproszenie @@ -903,25 +961,32 @@ pl_PL: To zaproszenie zostało wysłane przez zaufanego użytkownika, nie musisz się logować. invite_password_instructions: subject_template: "Ustaw hasło dla swojego konta na %{site_name}" + text_body_template: |+ + Dziękujemy za zaakceptowanie zaproszenia do %{site_name} -- witamy! + + + + Kliknij ten link, by wybrać hasło: + + %{base_url}/users/password-reset/%{email_token} + + + + (Jeśli powyższy link wygasł, wybierz "Zapomniałem hasła", logując się za pomocą adresu email.) + test_mailer: subject_template: "[%{site_name}] Test dostarczania poczty" new_version_mailer: subject_template: "[%{site_name}] Aktualizacja do nowej wersji Discourse jest dostępna." new_version_mailer_with_notes: subject_template: "[%{site_name}] dostępna aktualizacja" - flags_reminder: - flags_were_submitted: - one: "Flagi dodane godzinę temu." - few: "Flagi dodane ponad %{count} godziny temu." - other: "Flagi dodane ponad %{count} godzin temu." - post_number: "wpis" - subject_template: - one: "1 flaga oczekuje na reakcję" - few: "%{count} flagi oczekują na reakcję" - other: "%{count} flagi oczekują na reakcję" flag_reasons: inappropriate: "Twój wpis został oznaczony jako **nieodpowiedni**: społeczność uznała, że zbyt agresywny lub niezgodny z [jej wytycznymi](/guidelines)." + spam: "Twój post został oznaczony jako **spam**: społeczność czuje, że jest to reklama, czyli coś nadmiernie promującego, a nie użytecznego czy odnoszącego się do tematu." + notify_moderators: "Twój post został oznaczony jako **do uwagi moderatora**: społeczność czuje, że post wymaga ręcznej interwencji członka personelu." flags_dispositions: + agreed: "Dziękujemy za zwrócenie uwagi. Zgadzamy się, że jest to problem i przyjrzymy się temu. " + agreed_and_deleted: "Dziękujemy za zwrócenie uwagi. Zgadzamy się, że jest to problem i post został usunięty. " disagreed: "Dziękujemy za zwrócenie uwagi. Zajmiemy się tym wkrótce." deferred: "Dziękujemy za zwrócenie uwagi. Zajmiemy się tym wkrótce." deferred_and_deleted: "Dziękujemy za zwrócenie uwagi. Wpis został usunięty." @@ -929,6 +994,20 @@ pl_PL: system_messages: post_hidden: subject_template: "Wpis został ukryty z powodu oflagowania przez społeczność" + text_body_template: | + Witamy, + + To automatyczna wiadomość od %{site_name}, by poinformować Cię, że Twój post został ukryty. + + %{base_url}%{url} + + %{flag_reason} + + Wielu członków społeczności oznaczyło ten post przed jego ukryciem, zatem prosimy Cię, byś zastanowił się, jak możesz zrewidować swoje stanowisko, uwzględniając ich opinię. **Możesz edytować post po %{edit_delay} minutach, po czym będzie on znów widoczny. + + Jednakże jeśli post został ukryty przez społeczność po raz drugi, pozostanie taki, dopóki nie zajmie się nim personel - za tym mogą iść dalsze działania, jak możliwe zawieszenie Twojego konta. + + Aby uzyskać informacje na temat dalszego postępowania, przeczytaj [wytyczne dla społeczności] (%{base_url}/guidelines). welcome_user: subject_template: "Witaj na %{site_name}!" welcome_invite: @@ -1011,54 +1090,17 @@ pl_PL: unsubscribe: title: "Wypisz" description: "Nie chcesz otrzymywać tych emaili? Nie ma problemu! Kliknij poniżej by wypisać się natychmiast:" - reply_by_email: "Aby odpowiedzieć odpisz na ten email lub otwórz %{base_url}%{url} w swojej przeglądarce." - visit_link_to_respond: "To respond, visit %{base_url}%{url} in your browser." posted_by: "Dodany przez %{username} w dniu %{post_date}" user_replied: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_quoted: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_mentioned: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_posted: subject_template: "[%{site_name}] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} user_posted_pm: subject_template: "[%{site_name}] [PW] %{topic_title}" - text_body_template: | - %{message} - - %{context} - - --- - %{respond_instructions} digest: subject_template: "[%{site_name}] Podsumowanie" new_activity: "Nowa aktywność w twoich tematach i wpisach:" @@ -1092,15 +1134,28 @@ pl_PL: Kliknij na linku poniżej, aby ustawić swoje hasło: %{base_url}/users/password-reset/%{email_token} - authorize_email: - subject_template: "[%{site_name}] Potwierdź nowy adres email" - text_body_template: | - Potwierdź Twój nowy adres email na forum %{site_name} przez kliknięcie na poniższy link: - - %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "Zostałeś zaakceptowany na forum %{site_name}!" + text_body_template: |+ + Witamy na %{site_name}! + + Nasz personel zatwierdził twoje konto na %{site_name}. + + Kliknij na podany link, aby potwierdzić i aktywować swoje nowe konto: + %{base_url}/users/activate-account/%{email_token} + + Jeśli podany link nie działa, spróbuj skopiować go i przykleić w pasku adresów swojej wyszukiwarki. + + %{new_user_tips} + + Wierzymy, że [cywilizowana dyskusja](%{base_url}/guidelines) jest zawsze możliwa. + + Baw się dobrze! + + (Jeśli potrzebujesz skontaktować się z [członkiem zespołu](%{base_url}/about) jako nowy użytkownik, odpowiedz na tę wiadomość.) + signup: + subject_template: "[%{site_name}] Potwierdź swoje nowe konto" text_body_template: | Witaj na %{site_name}! @@ -1109,13 +1164,13 @@ pl_PL: Jeśli powyższy link nie jest klikalny, spróbuj skopiować i wkleić go do pasku adresu Twojej przeglądarki. page_not_found: - title: "Strona, którą chciałeś odwiedzić, nie istnieje lub jest prywatna." popular_topics: "Popularne" recent_topics: "Ostatnie" see_more: "Więcej" search_title: "Szukaj w serwisie" search_google: "Google" terms_of_service: + title: "Warunki użytkowania" signup_form_message: 'Przeczytałem i zgadzam się z Regulaminem Serwisu.' deleted: 'usunięte' upload: @@ -1130,6 +1185,7 @@ pl_PL: no_user: "Nie można znaleźć użytkownika z ID %{user_id}" post_deleted: "Wpis został usunięty przez autora" user_suspended: "użytkownik został zawieszony" + already_read: "użytkownik przeczytał ten post" color_schemes: base_theme_name: "Podstawa" guidelines: "Przewodnik" @@ -1156,3 +1212,8 @@ pl_PL: performance_report: initial_post_raw: 'Ten temat zawiera codzienne raporty wydajności dla twojej witryny. ' initial_topic_title: 'Testy wydajności witryny. ' + time: + <<: *datetime_formats + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.pt.yml b/config/locales/server.pt.yml index 19ff795b9f7..9eac10487fb 100644 --- a/config/locales/server.pt.yml +++ b/config/locales/server.pt.yml @@ -10,18 +10,41 @@ pt: short_date_no_year: "DD MMM" short_date: "DD MMM, YYYY" long_date: "DD de MMMM de YYYY hh:mm" + datetime_formats: &datetime_formats + formats: + short: "%m-%d-%Y" + short_no_year: "%B %-d" + date_only: "%B %-d, %Y" + date: + month_names: [null, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] + <<: *datetime_formats title: "Discourse" topics: "Tópicos" posts: "mensagens" loading: "A carregar" powered_by_html: 'Desenvolvido por Discourse, e melhor visualizado com o JavaScript ativo' log_in: "Iniciar Sessão" - via: "%{username} através de %{site_name}" - is_reserved: "está reservado" purge_reason: "Automaticamente eliminado devido a abandono, conta inativada" disable_remote_images_download_reason: "O download remoto de imagens foi desativado por não haver espaço disponível no disco." anonymous: "Anónimo" - errors: + emails: + incoming: + default_subject: "Email recebido de %{email}" + show_trimmed_content: "Mostrar conteúdo aparado" + errors: + empty_email_error: "Acontece quando, a informação não processada, do email recebido veio em branco." + no_message_id_error: "Acontece quando o email recebido não tem 'Message-Id' no cabeçalho da mensagem." + auto_generated_email_error: "Acontece quando o cabeçalho 'precedence' é definida como: 'list', 'junk' ou 'auto_reply', ou quando algum cabeçalho contém: 'auto-submitted', 'auto-replied' ou 'auto-generated'." + no_body_detected_error: "Acontece quando não conseguimos extrair o corpo da mensagem e não existem anexos." + inactive_user_error: "Acontece quando o remetente não está activo." + blocked_user_error: "Acontece quando o remetente está bloqueado." + bad_destination_address: "Acontece quando nenhum dos endereços de email nos campos para/cc/bcc coincide com um endereço de email configurado." + strangers_not_allowed_error: "Acontece quando um utilizador tenta criar um tópico numa categoria em que não é membro." + insufficient_trust_level_error: "Acontece quando um utilizador tentar criar um tópico numa categoria para a qual não tem o nível de confiança necessário." + reply_user_not_matching_error: "Acontece quando uma resposta veio de um endereço de email diferente do destinatário da notificação." + topic_not_found_error: "Acontece quando a resposta veio de um tópico relacionado mas o tópico relacionado foi apagado." + topic_closed_error: "Acontece quando uma resposta chegou mas o tópico relacionado foi fechado." + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "está limitado a %{max} caracteres; inseriu %{length}." @@ -37,8 +60,10 @@ pt: exclusion: está reservado greater_than: tem que ser maior que %{count} greater_than_or_equal_to: tem que ser maior ou igual a %{count} + has_already_been_used: "já foi usado" inclusion: não está incluído na lista invalid: é inválido + is_invalid: "é inválido; tente ser um pouco mais descritivo" less_than: tem que ser menos que %{count} less_than_or_equal_to: tem que ser menos ou igual a %{count} not_a_number: não é um número @@ -82,6 +107,8 @@ pt: not_found: "O URL ou recurso pedido não foi encontrado." invalid_access: "Não tem permissões para visualizar o recurso pedido." read_only_mode_enabled: "Este sítio encontra-se no modo só de leitura. As interações estão desativadas." + reading_time: "Tempo de leitura" + likes: "Gostos" too_many_replies: one: "Pedimos desculpa mas novos utilizadores estão temporariamente limitados a 1 resposta no mesmo tópico." other: "Pedimos desculpa mas novos utilizadores estão temporariamente limitados a %{count} respostas no mesmo tópico." @@ -98,26 +125,26 @@ pt: replies: one: "1 resposta" other: "%{count} respostas" + no_mentions_allowed: "Pedimos desculpa, não pode mencionar outros utilizadores." too_many_mentions: - zero: "Pedimos desculpa, não pode mencionar outros utilizadores." - one: "Pedimos desculpa, pode mencionar apenas um outro utilizador numa mensagem." - other: "Pedimos desculpa, pode mencionar apenas %{count} utilizadores numa mensagem." + one: "Pedimos desculpa, pode mencionar apenas 1 outro utilizador numa mensagem." + other: "Pedimos desculpa, pode mencionar apenas %{count} outros utilizadores numa mensagem." + no_mentions_allowed_newuser: "Pedimos desculpa, novos utilizadores não podem mencionar outros utilizadores." too_many_mentions_newuser: - zero: "Pedimos desculpa, utilizadores novos não podem mencionar outros utilizadores." - one: "Pedimos desculpa, utilizadores novos podem mencionar apenas um outro utilizador numa mensagem." - other: "Pedimos desculpa, utilizadores novos podem mencionar apenas %{count} utilizadores numa mensagem." + one: "Pedimos desculpa, novos utilizadores podem mencionar apenas 1 outro utilizador numa mensagem." + other: "Pedimos desculpa, novos utilizadores podem mencionar apenas %{count} utilizadores numa mensagem." + no_images_allowed: "Pedimos desculpa, novos utilizadores não podem colocar imagens nas mensagens." too_many_images: - zero: "Pedimos desculpa, utilizadores novos não podem colocar imagens nas mensagens." - one: "Pedimos desculpa, utilizadores novos podem colocar apenas uma imagem nas mensagens." - other: "Pedimos desculpa, utilizadores novos podem colocar apenas %{count} imagens numa mensagem." + one: "Pedimos desculpa, novos utilizadores podem colocar apenas 1 imagem numa mensagem." + other: "Pedimos desculpa, novos utilizadores podem colocar apenas %{count} imagens numa mensagem." + no_attachments_allowed: "Pedimos desculpa, novos utilizadores não podem colocar anexos nas mensagens." too_many_attachments: - zero: "Pedimos desculpa, novos utilizadores não podem colocar anexos nas mensagens." - one: "Pedimos desculpa, novos utilizadores podem colocar apenas um anexo nas suas mensagens." - other: "Pedimos desculpa, novos utilizadores podem colocar apenas %{count} anexos nas suas mensagens." + one: "Pedimos desculpa, novos utilizadores podem colocar apenas 1 anexo numa mensagem." + other: "Pedimos desculpa, novos utilizadores podem colocar apenas %{count} anexos numa mensagem." + no_links_allowed: "Pedimos desculpa, novos utilizadores não podem colocar hiperligações nas mensagens." too_many_links: - zero: "Pedimos desculpa, utilizadores novos não podem colocar hiperligações nas mensagens." - one: "Pedimos desculpa, utilizadores novos podem colocar apenas uma hiperligação nas mensagens." - other: "Pedimos desculpa, utilizadores novos podem colocar apenas %{count} hiperligações nas mensagens." + one: "Pedimos desculpa, novos utilizadores podem colocar apenas 1 hiperligação numa mensagem." + other: "Pedimos desculpa, novos utilizadores podem colocar apenas %{count} hiperligações numa mensagem." spamming_host: "Pedimos desculpa, não pode colocar uma hiperligação para esse servidor." user_is_suspended: "Utilizadores suspensos não têm permissão para publicar." topic_not_found: "Algo de errado ocorreu. Talvez este tópico tenha sido fechado ou eliminado enquanto olhava para ele?" @@ -140,8 +167,13 @@ pt: rss_description: latest: "Tópicos recentes" hot: "Tópicos quentes" + top: "Melhores tópicos" posts: "Últimas mensagens" + private_posts: "Últimas mensagens privadas" + group_posts: "Últimas mensagens em %{group_name}" + group_mentions: "Últimas menções em %{group_name}" too_late_to_edit: "Essa mensagem foi criada há muito tempo. Já não pode ser editada ou apagada." + revert_version_same: "A versão atual é o mesma versão para a qual você está tentando reverter." excerpt_image: "imagem" queue: delete_reason: "Eliminado através da fila de moderação de mensagens" @@ -149,6 +181,10 @@ pt: errors: can_not_modify_automatic: "Não pode modificar um grupo automático" member_already_exist: "'%{username}' já é membro deste grupo." + invalid_domain: "'%{domain}' não é um domínio válido." + invalid_incoming_email: "'%{email}' não é um endereço de email válido." + email_already_used_in_group: "'%{email}' já é utilizado pelo grupo '%{group_name}'." + email_already_used_in_category: "'%{email}' já é utilizado pela categoria '%{category_name}'." default_names: everyone: "todos" admins: "administradores" @@ -228,9 +264,6 @@ pt: user_profile: bio_raw: "Sobre Mim" errors: - messages: - is_invalid: "é inválido; tente ser um pouco mais descritivo" - has_already_been_used: "já está sendo usado" models: topic: attributes: @@ -251,6 +284,7 @@ pt: attributes: hex: invalid: "não é uma cor válida" + <<: *errors user_profile: no_info_me: "
-
order:views | order:latest | order:likes | status:open | status:closed | status:archived | status:noreplies | status:single_user |
-
category:foo | user:foo | group:foo | badge:foo | ||
in:likes | in:posted | in:watching | in:tracking | in:private | |
in:bookmarks | in:first | ||||
posts_count:num | min_age:days | max_age:days |
order:views | order:latest | order:likes | |||
status:open | status:closed | status:archived | status:noreplies | status:single_user | |
category:foo | user:foo | group:foo | badge:foo | ||
in:likes | in:posted | in:watching | in:tracking | in:private | |
in:bookmarks | in:first | in:pinned | in:unpinned | ||
posts_count:num | before:days or date | after:days or date |
- rainbows category:parks status:open order:latest
irá retornar uma pesquisa por tópicos que contêm a palavra "rainbows" na categoria "parks" que não estão fechados ou arquivados, ordenados pela data da última mensagem.
+
rainbows category:parks status:open order:latest
irá retornar uma pesquisa por tópicos que contêm a palavra "rainbows" na categoria "parks" que não estão fechados ou arquivados, ordenados pela data da última mensagem.rainbows category:"parks and gardens" in:bookmarks
irá retornar uma pesquisa de tópicos que contêm a palavra “rainbows” na categoria “parks and gardens” e que estão marcados por si.Váš príspevok bol označený komunitou. Prosim pozrite si Vaše správy.
' + user_must_edit: 'Tento príspevok bol označený komunitou a je dočasne skrytý
' + archetypes: + regular: + title: "Bežná téma" + banner: + title: "Banerová téma" + message: + make: "Téma je odteraz baner. Bude sa zobrazovať navrchu každej stránky, pokiaľ ju používateľ nezavrie." + remove: "Téma odteraz nie je baner. Už sa nebude viac zobrazovat navrchu každej stránky." + unsubscribed: + title: 'Odhlásiť' + description: "Boli ste odhlásený. Už vás znovu nebudeme kontaktovať." + oops: "V prípade že ste to tak nemysleli, kliknite nižšie" + error: "Chyba pri odhlasovaní" + preferences_link: "Zo súhrnných emailov sa môžete odhlásiť na stránke nastavení" + different_user_description: "Aktuálne ste prihlásený ako iný používateľ než ten, komu bol zaslaný súhrnný email. Prosíme odhláste sa a skúste znovu." + not_found_description: "Prepáčte, nedokázali sme Vás odhlásiť. Je možné, že platnosť odkazu vo Vašom emaile vypršala." + resubscribe: + action: "Znovu-prihlásiť" + title: "Znovu-prihlásený!" + description: "Boli ste znovu prihlásený." + reports: + visits: + title: "Používateľské návštevy" + xaxis: "Deň" + yaxis: "Počet návštev" + signups: + title: "Noví používatelia" + xaxis: "Deň" + yaxis: "Počet nových používateľov" + profile_views: + title: "Prezreté používateľské profily" + xaxis: "Deň" + yaxis: "Počet prezretých používateľských profilov" + topics: + title: "Témy" + xaxis: "Deň" + yaxis: "Počet nových tém" + posts: + title: "Príspevky" + xaxis: "Deň" + yaxis: "Počet nových príspevkov" + likes: + title: "Páči sa mi" + xaxis: "Deň" + yaxis: "Počet nových páči sa mi" + flags: + title: "Označenia" + xaxis: "Deň" + yaxis: "Počet označení" + bookmarks: + title: "Záložky" + xaxis: "Deň" + yaxis: "Počet nových záložiek" + starred: + title: "Obľúbené" + xaxis: "Deň" + yaxis: "Počet nových ohviezdičkovaných tém" + users_by_trust_level: + title: "Užívatelia podľa stupňa dôvery" + xaxis: "Stupeň dôvery" + yaxis: "Počet použivateľov" + emails: + title: "Emaily odoslané" + xaxis: "Deň" + yaxis: "Počet emailov" + user_to_user_private_messages: + title: "Užívateľ užívateľovi" + xaxis: "Deň" + yaxis: "Počet správ" + system_private_messages: + title: "Systém" + xaxis: "Deň" + yaxis: "Počet správ" + moderator_warning_private_messages: + title: "Upozornenie od moderátora" + xaxis: "Deň" + yaxis: "Počet správ" + notify_moderators_private_messages: + title: "Upozorniť moderátora" + xaxis: "Deň" + yaxis: "Počet správ" + notify_user_private_messages: + title: "Upozorniť užívateľa" + xaxis: "Deň" + yaxis: "Počet správ" + top_referrers: + title: "Najlepší referenti" + xaxis: "Používateľ" + num_clicks: "Klinutia" + num_topics: "Témy" + top_traffic_sources: + title: "Najlepšie zdroje" + xaxis: "Doména" + num_clicks: "Klinutia" + num_topics: "Témy" + num_users: "Používatelia" + top_referred_topics: + title: "Najlepšie témy" + xaxis: "Témy" + num_clicks: "Klinutia" + page_view_anon_reqs: + title: "Anonymný" + xaxis: "Deň" + yaxis: "Anonymné požiadavky API" + page_view_logged_in_reqs: + title: "Prihlásený" + xaxis: "Deň" + yaxis: "Zaznamenané API požiadavky" + page_view_crawler_reqs: + title: "Webové prehľadávače" + xaxis: "Deň" + yaxis: "API dotazy web robota" + page_view_total_reqs: + title: "Celkovo" + xaxis: "Deň" + yaxis: "Všetky API požiadavky" + page_view_logged_in_mobile_reqs: + title: "Zaznamenané API požiadavky" + xaxis: "Deň" + yaxis: "Zaznamenané API požiadavky cez mobil" + page_view_anon_mobile_reqs: + title: "Anonymné požiadavky API" + xaxis: "Deň" + yaxis: "Zaznamenané API požiadavky cez mobil" + http_background_reqs: + title: "Pozadie" + xaxis: "Deň" + yaxis: "Požiadavky použité na aktívne aktualizácie a sledovanie" + http_2xx_reqs: + title: "Status 2xx (OK)" + xaxis: "Deň" + yaxis: "Úspešné požiadavky (Status 2xx)" + http_3xx_reqs: + title: "HTTP 3xx (Presmerovanie)" + xaxis: "Deň" + yaxis: "Presmerované požiadavky (Status 3xx)" + http_4xx_reqs: + title: "HTTP 4xx (Chyba na strane klienta)" + xaxis: "Deň" + yaxis: "Chyby na strane klienta (Status 4xx)" + http_5xx_reqs: + title: "HTTP 5xx (Chyba na strane servera)" + xaxis: "Deň" + yaxis: "Chyby na strane servera (Status 5xx)" + http_total_reqs: + title: "Celkovo" + xaxis: "Deň" + yaxis: "celkový počet žiadostí" + time_to_first_response: + title: "Čas do prvej odpovede" + xaxis: "Deň" + yaxis: "Priemerný čas (hodiny)" + topics_with_no_response: + title: "Témy bez odozvy" + xaxis: "Deň" + yaxis: "Celkovo" + mobile_visits: + title: "Používateľské návštevy" + xaxis: "Deň" + yaxis: "Počet návštev" + dashboard: + rails_env_warning: "Váš server beží v %{env} móde" + ruby_version_warning: "Používate Ruby 2.0.0, ktorá má známe problémy. Aktualizujte prosím na záplatu 247, alebo novšiu." + host_names_warning: "Váš súbor config/database.yml používa lokálne meno hostiteľa. Aktualizujte ho menom Vašej stránky." + gc_warning: 'Váš server používa východzie nastavenia ruby garbage collectora, ktorý neposktytuje najlepší výkon. Prečítajte si tento príspevok ohľadom ladenia výkonu Ladenie Ruby and Rails pre Discourse.' + sidekiq_warning: 'Sidekiq neni spustený. Množstvo úloh, ako napríklad posielanie emailov, je vykonávaných asynchrónne prostrednictvom sidekiq. Prosim zabezpečte aby bol spustený aspoň jeden proces sidekiq Viac o Sidekiq.' + queue_size_warning: 'Počet úloh v zásobníku je %{queue_size}, čo je dosť veľa. To môže byť príznakom problému s procesom (procesmi) Sidekiq, alebo by ste mali spustiť viac Sidekiq procesov.' + memory_warning: 'Váš server beží s menej než 1 GB pamäte. Odporúča sa minimálne 1GB. ' + google_oauth2_config_warning: 'Server má nakonfigurovanú podporu registrácie a prihlásenia pomocou Google OAuth2 (enable_google_oauth2_logins), ale identifikačné údaje klienta a jeho tajné hodnoty nie sú nastavené. Navštívte Nastavenia stránky a aktualizujte nastavenia. Chcete vedieť viac? Pozrite si tento návod.' + facebook_config_warning: 'Server má nakonfigurovanú podporu registrácie a prihlásenia pomocou Facebooku (enable_facebook_logins), ale údaje "app Id" a tajné hodnoty nie sú nastavené. Navštívte Nastavenia stránky a aktualizujte nastavenia. Chcete vedieť viac? Pozrite si tento návod.' + twitter_config_warning: 'Server má nakonfigurovanú podporu registrácie a prihlásenia pomocou Twitteru (enable_twitter_logins), ale kľúč a tajné hodnoty nie sú nastavené. Navštívte Nastavenia stránky a aktualizujte nastavenia. Chcete vedieť viac? Pozrite si tento návod.' + github_config_warning: 'Server má nakonfigurovanú podporu registrácie a prihlásenia pomocou GitHub (enable_github_logins), ale identifikačné údaje klienta a jeho tajné hodnoty nie sú nastavené.. Navštívte Nastavenia stránky a aktualizujte nastavenia.Chcete vedieť viac? Pozrite si tento návod.' + s3_config_warning: 'Server má nakonfigurované nahrávanie súborov na S3, ale minimálne jedna z nasledujúcich hodnôt nie je nastavená: s3_access_key_id, s3_secret_access_key, alebo s3_upload_bucket. Navštívte Nastavenia stránky a aktualizujte nastavenia. Chcete vedieť viac? Pozrite si návod ako nastaviť nahrávanie súborov na S3.' + s3_backup_config_warning: 'Server má nakonfigurované nahrávanie záloh na S3, ale minimálne jedna z nasledujúcich hodnôt nie je nastavená: s3_access_key_id, s3_secret_access_key, alebo s3_backup_bucket. Navštívte Nastavenia stránky a aktualizujte nastavenia. Chcete vedieť viac? Pozrite si návod ako nastaviť nahrávanie súborov na S3.' + image_magick_warning: 'Server je nakonfigurovaný na vytváranie náhľadov z veľkých obrázkov, ale ImageMagick nie je nainštalovaný. Nainštalujte ImageMagick pomocou Vášho správcu balíčkov, alebo Stiahnite najnovšiu verziu.' + failing_emails_warning: 'Existuje %{num_failed_jobs} neuspešných emailých pokusov. Skontrolujte Váš app.yml a uistite sa, že nastavenia email serveru máte správne. Pozrieť neúspešné pokusy v Sidekiq.' + default_logo_warning: "Nastavte grafické logo Vašej stránky. Aktualizujte logo_url, logo_small_url, a favicon_url na Ňastaveniach stránky." + contact_email_missing: "Vložte kontaktnú email adresu aby ste mohli byť kontaktovaný v urgentných prípadov týkajúcich sa stránok. Vložte na Stránke nastavení." + contact_email_invalid: "Kontaktný email na stránke je neplatný. Aktualizujte ho v Nastavenia stránky." + title_nag: "Zadajte meno stránky. Aktualizujte ho v Nastavenia stránky." + site_description_missing: "Vložte jednovetný popis Vašej stránky, ktorý sa zobrazí vo výsledkoch vyhľadávania. Aktualizujte ho v Nastavenia stránky." + consumer_email_warning: "Vaše stránky sú nastavené tak aby na posielanie emailov používali Gmail (alebo iné služby pre spotrebiteľov). Gmail obmedzuje počet odoslaných emailov. Na zaistenie doručiteľonosti emailov zvážte použitie emailového poskytovateľa ako napríklad mandrill.com." + site_contact_username_warning: "Vložte názov účtu kolegu z personálu pre zasielanie dôležitých automatických správ. Aktualizujte kontakt v Nastavenia stránky." + notification_email_warning: "Notifikačné emaily sú posielané z neplatnej emailovej adresy vo Vašej doméne. Doručovanie emailov môže byť chybné a nespoľahlivé. Prosím nastavte platnú lokálnu emailovú adresu \"notification_email\" v Nastavenia stránky." + subfolder_ends_in_slash: "Vaše nastavenie podadresára je chybné, DISCOURSE_RELATIVE_URL_ROOT je ukončené lomítkom." + site_settings: + censored_words: "Slová, ktoré budu automatický nahradené znakmi ■■■■" + delete_old_hidden_posts: "Automatické zmazanie príspevkov, ktoré ostali skryté viac ako 30 dní" + default_locale: "Predvolený jazyk tejto inštancie Discourse je (ISO 639-1 Code)" + allow_user_locale: "Povoliť užívateľom zvoliť si vlastný jazyk" + min_post_length: "Minimálny povolený počet znakov v príspevkoch" + min_first_post_length: "Minimálny povolený počet znakov pre prvý príspevok (obsah témy)" + min_private_message_post_length: "Minimálny povolený počet znakov v správe" + max_post_length: "Maximálny povolený počet znakov v príspevkoch" + min_topic_title_length: "Minimálny povolený počet znakov v názve témy" + max_topic_title_length: "Maximálny povolený počet znakov v názve témy" + min_private_message_title_length: "Minimálny povolený počet znakov v správe" + min_search_term_length: "Minimálny povolený počet znakov vo vyhľadávaní" + search_tokenize_chinese_japanese_korean: "Prinúť vyhľádávanie rozložiť Čínštinu/Japončinu/Kórejčinu dokonca i pre nie CJK stránky" + allow_uncategorized_topics: "Pvoliť vytváranie tém bez kategórií. UPOZORNENIE: Pokiaľ existujú nekategorizované témy, musíte ich zaradiť do kategórii skôr než túto možnosť vypnete." + allow_duplicate_topic_titles: "Povoliť témy s rovnakými, duplikovanými názvami" + unique_posts_mins: "Koľko minút musí byť medzi dvomi rovnakými príspevkami od jedného užívateľa." + educate_until_posts: "Ked užívateľ začne písať svojich prvých (n) príspevkov, zobraz sprievodcu vzdelávania pre nového užívateľa. " + title: "Meno stránok, tak ako je použité v značke title." + site_description: "Popíšte stránky v jednej vete, tak ako sa popisujú v tagu meta." + contact_email: "Emailová adresa kľúčovej kontaktnej osoby zodpovednej za túto stránku. Používa sa pri kritických situáciach, ako napríklad neošetrené návestia a tiež pri kontaktnom formulári pre dôležité prípady." + contact_url: "Kontaktná URL adresa pre túto stránku. Použitá tiež pri kontaktnom formulári pre dôležité prípady." + queue_jobs: "IBA VÝVOJÁRI VAROVANIE! Štandardne, požiadavky fronty v sidekiq. Ak je vypnuté, vaše stránky budú rozbité." + crawl_images: "Načítať obrázky z URL pre vloženie správnej výšky a šírky." + download_remote_images_to_local: "Stiahnuť obrázky zo vzdialených zdrojov na lokálne. Zabráni poškodeniu obrázkov. " + download_remote_images_threshold: "Minimálne miesto na lokálnom disku potrebné na stiahnutie obrázkov zo vzdialených zdrojov (v percentách)" + disabled_image_download_domains: "Nikdy nesťahovať obrázky z týchto domén. Zoznam oddeleny pipou \"|\"." + editing_grace_period: "Nevytvárať nové verzie editovaných príspevkov do (n) sekúnd po odoslaní príspevku." + post_edit_time_limit: "Autor môže upravovať alebo mazať svoje príspevky do (n) minút po ich odoslaní. Nastavte 0 pre nekonečno" + edit_history_visible_to_public: "Povoliť všetkým zobrazenie predchádzajúcich verzií upraveného príspevku. Pokiaľ je to vypnuté, verzie vidí iba obslužný personál" + delete_removed_posts_after: "Príspevky zmazané autorom budú automaticky zmazané po (n) hodinách. Pokiaľ je nastavená 0, príspevky budú zmazané okamžite." + max_image_width: "Maximálna šírka náhľadu obrázkov v príspevku" + max_image_height: "Maximálna výška náhľadu obrázkov v príspevku" + category_featured_topics: "Počet zobrazených tém na jednu kategóriu na stránke /katgórie. Zmena hodnoty sa na stránkach prejaví do 15 minút." + show_subcategory_list: "Zobraz zoznam podkategórií namiesto zoznamu tém po vstupe do menu kategórií" + fixed_category_positions: "Ak je to označené, budete môcť zoraďovať kategórie v pevnom poradí. Ak je neoznačené, kategórie budu zoradené podlľa aktivity." + fixed_category_positions_on_create: "Ak je označené, triedenie kategórií bude spravované v dialógu na vytváranie témy (vyžaduje fixed_category_positions)." + add_rel_nofollow_to_user_content: "Pridať rel nofollow ku všetkému zaslanému používateľskému kontextu s výnimkou interných odkazov (zahrňuje rodičovskú doménu). Ak to zmeníte, musíte vykonať prípaz rebake na všetky príspevky pomocou: \"rake posts:rebake\"" + exclude_rel_nofollow_domains: "Zoznam domén, na ktorých odkazy nebude pridávaný nofollow . tld.com automaticky umožní sub.tld.com. Aby ste umožnili internetovým vyhľadávačom nájsť kompletný obsah mali by ste pridať minimálne doménu najvyššej úrovne týchto stránok. Ak je nejaká časť stránok na iných doménach, pridajte ich tiež." + post_excerpt_maxlength: "Maximálna dĺžka príspevku okrem zhrnutia." + post_onebox_maxlength: "Maximálna dĺžka vloženého Discourse príspevku v znakoch." + onebox_domains_whitelist: "Zoznam domén, pre ktoré je umožnené vkladanie. Tieto domény by mali podporovať OpenGraph alebo oEmbed. Overte ich pomocou http://iframely.com/debug" + logo_url: "Obrázok loga na ľavej hornej časti stránky, mal by byť tvaru širokého obdĺžnika. Ak nebude uvedený, zobrazí sa nadpis stránok." + digest_logo_url: "Obrázok loga na začiatku sumarizačného emailu stránok. Mal by byť tvaru širokého obdĺžnika. Ak nebude uvedený, použije sa logo_url." + logo_small_url: "Malý obrázok loga na ľavej hornej strane stránok, mal by mať tvar štvorca a bude zobrazený pri skrolovaní nadol. Ak nebude uvedený, zobrazí sa piktogram domu." + favicon_url: "Favicon pre Vaše stránky, pozrite http://en.wikipedia.org/wiki/Favicon. Aby fungoval správne s CDN, musí byť vo formáte png" + mobile_logo_url: "Obrázok loga zobrazený na fixnej pozícií v ľavom hornom rohu mobilnej verzie. Mal byť mať tvar štvorca. Ak nie je uvedené, použije sa `logo_url`. Napríklad: http://example.com/uploads/default/logo.png" + apple_touch_icon_url: "Ikona použitá na zariadeniach Apple touch. Doporučovaná veľkosť je 144px na 144px." + notification_email: "Odosieľateľ: email adresa použitá na zasielanie všetkých systémových emailov. Uvedená doména musí mať správne nastavené záznamy SPF, DKIM a opačný PTR aby email dorazil." + email_custom_headers: "Zoznam voliteľných emailových hlavičiek oddelených |" + email_subject: "Voliteľný formát predmetu emailu pre štandardné emaily. Pozrite https://meta.discourse.org/t/customize-subject-format-for-standard-emails/20801" + use_https: "Má byť url stránok (Discourse.base_url) http alebo https? NEZAPÍNAJTE MOŽNOSŤ AK HTTPS NIE JE NASTAVENÉ A FUNKČNÉ!" + summary_score_threshold: "Minimálne požadované skóre príspevku na to aby bol zahrnutý do 'Sumarizuj túto tému'" + summary_posts_required: "Minimálny počet príspevkou predtým ako je zapnuté 'Sumarizuj túto tému'" + summary_likes_required: "Minimálny počet páči sa mi predtým ako je zapnuté 'Sumarizuj túto tému'" + summary_percent_filter: "Ak používateľ klikne na 'Sumarizuj túto tému', zobraz najlepších % príspevkov" + summary_max_results: "Maximálny počet príspevkov vrátených pomocou 'Sumarizuj túto tému'" + enable_private_messages: "Umožni používateľom s úrovňou dôvery 1 (nastaviteľné pomocou min úroveň dôvery na posielanie správ) vytvárať správy a odpovedať na ne" + enable_long_polling: "Zbernica správ pre upozornenia môže používať techniku long-polling" + long_polling_base_url: "Base URL used for long polling (when a CDN is serving dynamic content, be sure to set this to origin pull) eg: http://origin.site.com" + long_polling_interval: "Ako dlho má server čakať pred odpovedaním klientom ak nie sú na zaslanie žiadne dáta (iba pre prihlásených používateľov)" + polling_interval: "Ak sa nepoužíva technika long-polling, ako často majú byť klienti dotazovaný v milisekundách" + anon_polling_interval: "Ako často majú byť dotazovaný anonymný klienti v milisekundách" + background_polling_interval: "Ako často majú byť dotazovaný klienti v milisekundách (ak je okno v pozadí)" + flags_required_to_hide_post: "Počet značiek ktoré automaticky príspevok skryjú a používateľovi bude zaslaná správa (0 pre nikdy)" + cooldown_minutes_after_hiding_posts: "Počet minút koľko musí používateľ počkať pred tým než môže upraviť príspevok skytý pomocou komunitných značiek" + max_topics_in_first_day: "Maximálny počet tém, ktoré používateľ môže vytvoriť v jeho prvý deň ." + max_replies_in_first_day: "Maximálny povolený počet odpovedí, ktoré môže používateľa vytvoriť v jeho prvý deň." + tl2_additional_likes_per_day_multiplier: "Zvýšiť počet páči sa mi na deň pre úroveň dôvery 2 (člen) vynásobením týmto číslom" + tl3_additional_likes_per_day_multiplier: "Zvýšiť počet páči sa mi na deň pre úroveň dôvery 3 (bežný) vynásobením týmto číslom" + tl4_additional_likes_per_day_multiplier: "Zvýšiť počet páči sa mi na deň pre úroveň dôvery 4 (vedúci) vynásobením týmto číslom" + num_flags_to_block_new_user: "Ak príspevky nového používateľa dostanú takéto množstvo spamových vlajok od num_users_to_block_new_user rôznych používateľov, skry všetky jeho príspevky a zabráň vytváraniu príspevkov v budúcnosti. 0 na vypnutie." + num_users_to_block_new_user: "Ak príspevky nového používateľa dostanú num_flags_to_block_new_user spamových vlajok od takéhoto množstva rôznych používateľov, skry všetky jeho príspevky a zabráň vytváraniu príspevkov v budúcnosti. 0 na vypnutie." + notify_mods_when_user_blocked: "Ak je používateľ automaticky zablokovaný, pošli správu všetkým moderátorom." + flag_sockpuppets: "Ak nový používateľ odpovedá na tému z rovnakej IP adresy, ako nový používateľ, ktorý danú tému vytvoril, označ oba ich príspevky ako potencionálny spam." + traditional_markdown_linebreaks: "V Markdown použiť tradičné oddeľovače riadkov, čo vyžaduje dve koncové medzery ako oddeľovač riadku." + allow_html_tables: "V Markdown umožniť použitie tabuliek pomocou HTML značiek. TABLE, THEAD, TD, TR, TH budú umožnené (vyžaduje \"full rebake\" na všetkých starých príspevkoch ktoré obsahujú tabuľky)" + post_undo_action_window_mins: "Počet minút počas ktorých môžu užívatelia zrušiť poslednú akciu na príspevku (\"Páči sa\", označenie, atď..)." + must_approve_users: "Obsluha musí povoliť účty všetkým novým užívateľom skôr než im bude povolený prístup na stránku. UPOZORNENIE: zapnutie na živej stránke spôsobí zrušenie prístupu pre existujúcich používateľov, okrem obsluhy!" + pending_users_reminder_delay: "Upozorni moderátora ak nový užívateľ čaká na schválenie dlhšie ako tento počet hodín. Nastavte -1 pre vypnutie upozornenia." + ga_tracking_code: "Google analytics (ga.js) sledovaní kód, napr: UA-12345678-9; pozri http://google.com/analytics" + ga_domain_name: "Google analytics (ga.js) názov domény, napr: mysite.com; pozri http://google.com/analytics" + ga_universal_tracking_code: "Google Universal Analytics (analytics.js) sledovaní kód, napr: UA-12345678-9; pozri http://google.com/analytics" + ga_universal_domain_name: "Google Universal Analytics (analytics.js) názov domény, napr: mysite.com; pozri http://google.com/analytics" + enable_escaped_fragments: "Ak nie je zistený vyhľadávač, použi Google's Ajax-Crawling API. Viac na https://support.google.com/webmasters/answer/174992?hl=en" + enable_noscript_support: "Zapnúť štandardnú podporu prehľadávačov pomocou značky noscript" + allow_moderators_to_create_categories: "Povoliť moderátorom vytváranie nových kategórií" + cors_origins: "Povoľ prameňom/origins použitie cross-origin dotazov (CORS). Každý prameň/origin musí obsahovať http:// alebo https://. Aby ste umožnili CORS, systémové premenná DISCOURSE_ENABLE_CORS musí byť nastavená na true." + use_admin_ip_whitelist: "Správcovia sa môťu prihlásiť iba pokiaľ pristupujú z adresy uvedenej v zozname kontrolovaných IP adries (Admin > Logs > Screened Ips)" + top_menu: "Určuje, ktoré položky sa zobrazia na navigácií na domovskej stránke a v akom poradí. Napríklad posledné|neprečítané|kategórie|naj|prečítané|záložky" + post_menu: "Určuje, ktoré položky sa objavia v menu príspevku a v akom poradí. Napríklad páči sa mi|upraviť|označiť|vymazať|zdieľať|záložka|odpovedať" + post_menu_hidden_items: "Položky vo východzích nastaveniach menu schované pri príspevkovom menu, dokiaľ neni kliknuté na rozbaľovaciu elipsu." + share_links: "Uveďte, ktoré položky sa maju zobraziť v zdieľacom dialógu a v akom poradí." + track_external_right_clicks: "Sledovať externé odkazy na ktore sa klkne pravým tlačidlom (npar. otvorenie v novej záložke) Vypnuté vo východzích nastaveniach, pretože to prepisuje URL adresy" + site_contact_username: "Platné uťívateľské meno obsluhy, ktorá bude posielať automatizované správy. Pokiaľ je vynechané, použije sa východzí systémový účet. " + send_welcome_message: "Poslač všetkým novým užívateľom uvítaciu správu s príručkou ako začať. " + suppress_reply_directly_below: "Nezobrazovať rozbaľovacie tlačidlo s počtom odpovedí ak je k príspevku len jedna odpoveď priamo pod ním." + suppress_reply_directly_above: "Nezobrazovať rozbaľovacie tlačidlo v-odpovedi-na ak je len jedna odpoveď priamo nad príspevkom." + suppress_reply_when_quoting: "Nezobrazovať rozbaľovacie tlačidlo v-odpovedi-na ak príspevok cituje odpoveď." + max_reply_history: "Maximálny počet odpovedí ktoré sa zobrazia po rozbalení v-odpovedi-na" + topics_per_period_in_top_summary: "Zobrazovaný počet najlepších tém vo východzom zozname najlepších tém." + topics_per_period_in_top_page: "Zobrazovaný počet najlepších tém vzozname po rozbalení 'Ukáž viac' najlepších tém." + redirect_users_to_top_page: "Automaticky presmeruj nových a dlho neprihlásených užívateľov na hlavnú stránku. " + top_page_default_timeframe: "Východzí interval pre presmerovanie na hlavnú stránku." + show_email_on_profile: "Zobraziť užívateľov email na ich profile (viditeľné len nimi samotnými a obsluhou)" + email_token_valid_hours: "Platnosť tokenov pre Zabudnuté heslo a aktiváciu účtu v (n) hodinách." + email_token_grace_period_hours: "Platnosť tokenov pre Zabudnuté heslo a aktiváciu účtu v (n) hodinách po ich uplatnení." + enable_badges: "Povoliť systém odznakov" + enable_whispers: "Povoliť súkromnú konverzáciu pre redakciu vrámci témy. (experimantálne)" + allow_index_in_robots_txt: "V súbore robots.txt nastaviť, že tieto stránky je povolené indexovať vyhľadávačmi." + email_domains_blacklist: "Rúrou oddelený zoznam emailových domén, ktorých použitie nie je povolené pri registrácií. Napríklad: mailinator.com|trashmail.net" + email_domains_whitelist: "Rúrou oddelený zoznam emailových domén, s použitím ktorých sa používateľ MUSÍ zaregistrovať. VAROVANIE: registrácia použivatelia s neuvedenými doménami nebude povolená!" + forgot_password_strict: "Neinformovať užívateľov o existencii účtu ked použíjú dialóg pre zabudnuté heslo." + log_out_strict: "Pri odhlasovaní odhlásiť VŠETKY sessiony používateľa, na všetkých zariadeniach." + version_checks: "Zisťovať aktualizácie na Discourse Hub a zobrazovať správy o novej verzii na stránke admina" + new_version_emails: "Poslať email na kontaktnú emailovú adresu ak je zistená nová verzia Discourse." + port: "POZOR! LEN PRE VÝVOJÁROV! Použiť tento HTTP port namiesto predvoleného portu 80. Nechajte prázdne pre port 80." + force_hostname: "POZOR! LEN PRE VÝVOJÁROV! V URL zadajte hostname. Ak chcete použiť predvolené, nechajte políčko prázdne." + invite_expiry_days: "Ako dlho je platná pozvánka pre používateľa, v dňoch" + invite_passthrough_hours: "Ako dlho môže užívateľ používať získaný pozývací kľúč na prihlasovanie, v hodinách" + invite_only: "Verejná registrácia je vypnutá, všetci noví užívatelia musia byť explicitne pozvaní ostatnými členmi alebo obsluhou." + login_required: "Požadovať prihlásenie pre čítanie obshau tejto stránky, zakáž anonymný prístup. " + min_username_length: "Minimálna dĺžka používateľského mena v znakoch." + max_username_length: "Maximálna dĺžka používateľského mena v znakoch." + reserved_usernames: "Používateľské mená, ktorých registrácia nie je povolená." + min_password_length: "Minimálna dĺžka hesla." + min_admin_password_length: "Minimálna dĺžka hesla pre Administrátora." + block_common_passwords: "Nepovoliť heslá, ktoré sú v zozname 10 000 najbežnejších hesiel." + enable_sso: "Povolit prihlasovanie pomocou externej stránky (VAROVANIE: POUŽÍVATEĽSKÉ EAMILOVÉ ADRESY *MUSIA* BYŤ OVERENÉ EXTERNOU STRÁNKOU)" + enable_sso_provider: "Implementácia protokolu Discourse SSO poskytovateľa na koncovom bode /session/sso_provider, vyžaduje nastavenie sso_secret" + sso_url: "URL pre single sign on." + sso_secret: "Tajný text, použitý na kryptografické overenie SSO informácie, uistite sa, že má 10 alebo viac znakov" + sso_overrides_email: "Nahrádzať lokálne emaily pomocou emailov z externej stránky pomocou dát z SSO dotazu pri každom logine a zamedziť lokálnym zmenám. (VAROVANIE: z dôvodu normálizácie lokálnych emailov sa môžu objaviť nezrovnalosti)" + sso_overrides_username: "Nahrádzať lokálne použivateľské mená pomocou použivateľských mien z externej stránky pomocou dát z SSO dotazu pri každom logine a zamedziť lokálnym zmenám. (VAROVANIE: z dôvodu rozdielov v požiadavkách na používateľské meno a jeho dĺžku sa môžu objaviť nezrovnalosti)" + sso_overrides_name: "Nahrádzať lokálne plné mená pomocou plných mien z externej stránky pomocou dát z SSO dotazu pri každom logine a zamedziť lokálnym zmenám." + sso_overrides_avatar: "Nahrádzať používateľský avatar pomocou avatara z externej stránky pomocou dát z SSO dotazu. V prípade zapnutia veľmi doporučujeme vypnúť allow_uploaded_avatars" + sso_not_approved_url: "Presmeruj nepovolené SSO účty na URL" + enable_local_logins: "Povoliť pouťívanie lokálnych účtov a hesiel. (Poznámka: musí to byť zapnuté pre fungovanie pozvánok)" + allow_new_registrations: "Povoliť registráciu nových užívateľov. Odznačte to ak chcete zabrániť vytváraniu nových účtov. " + enable_signup_cta: "Zobraz oznámenie pre navrátilých anonymných užívateľov s výzvou na registráciu účtu. " + enable_yahoo_logins: "Povoliť autentifikáciu pomocou Yahoo." + enable_google_oauth2_logins: "Povoliť Google Oauth2 autentifikáciu. Táto métoda je podporovaná Googlom. Vyžaduje kľúč a šifru." + google_oauth2_client_id: "Client ID Vašej Google aplikácie." + google_oauth2_client_secret: "Client secret Vašej Google aplikácie." + enable_twitter_logins: "Povoliť autentifikáciu cez Twitter, vyžaduje twitter_consmer_key a twiiter_consumer_secret" + twitter_consumer_key: "Consumer key pre Twitter autentifikáciu, registrovaný na http://dev.twitter.com" + twitter_consumer_secret: "Consumer secret pre Twitter autentifikáciu, registrované na http://dev.twitter.com" + enable_facebook_logins: "Povoliť autentifikáciu pomocou Facebook, vyžaduje facebook_app_id a facebook_app_secret." + facebook_app_id: "App id pre Facebook autentifikáciu, registrované na https://developers.facebook.com/apps" + facebook_app_secret: "App secret pre Facebook autentifikáciu, registrované na https://developers.facebook.com/apps" + enable_github_logins: "Povoliť autentifikáciu cez Github, vyžaduje github_client_id a github_client_secret" + github_client_id: "Client id pre Github autentifikáciu, registrované na https://github.com/settings/applications" + github_client_secret: "Client secret pre Github autentifikáciu, registrované na https://github.com/settings/applications" + allow_restore: "Umožniť obnovu, ktorá nahradí VŠETKY data na stránkach! Ponechajte prázdne okrem prípadu ak chcete obnoviť zo zálohy." + maximum_backups: "Maximálny počet záloh udržiavaných na disku. Staršie zálohy budu automaticky vymazané" + automatic_backups_enabled: "Spustiť automatické zálohy podľa nastavenia intervalu záloh" + backup_frequency: "Ako často máme vytvárať zálohu stránok, v dňoch." + enable_s3_backups: "Po dokončení nahrať zálohy na S3. DÔLEŽITÉ: požaduje správne nastavenie prístupových údajov na S3 v menu Súbory." + s3_backup_bucket: "Vzdialený S3 bucket na uloženie záloh. VAROVANIE: Uistite sa, že ide o súkromný S3 bucket." + backup_time_of_day: "Čas v UTC, kedy sa má spustiť záloha." + backup_with_uploads: "Do pravidelných záloh ulož i nahrané súbory. Pri vypnutej voľbe sa uloží iba záloha databázy." + active_user_rate_limit_secs: "Ako často máme aktualizovať pole 'naposledy videný o', v sekundách" + verbose_localization: "Zobraziť rozšírené lokalizačné tipy v rozhraní" + previous_visit_timeout_hours: "Ako dlho trvá návšteva predtým, ako ju pokladáme za 'predchádzajúcu' návštevu, v hodinách" + top_topics_formula_log_views_multiplier: "hodnota násobku (n) pre počet zobrazení v najznámejších témach: `log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`" + top_topics_formula_first_post_likes_multiplier: "hodnota násobku (n) pre počet páči sa mi na prvom príspevku v najznámejších témach: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`" + top_topics_formula_least_likes_per_post_multiplier: "hodnota násobku (n) pre najmenej páči sa mi pre prísprvok v najznámejších témach: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`" + rate_limit_create_topic: "Po vytvorení témy musí používateľ počkať (n) sekúnd pred vytvorením ďalšej témy." + rate_limit_create_post: "Po odoslaní prísprevku používateľ počkať (n) sekúnd pred vytvorením ďalšieho príspevku." + rate_limit_new_user_create_topic: "Po vytvorení témy musí používateľ počkať (n) sekúnd pred vytvorením ďalšej témy." + rate_limit_new_user_create_post: "Po odoslaní príspevku používateľ počkať (n) sekúnd pred vytvorením ďalšieho príspevku." + max_likes_per_day: "Maximálny počet páči sa mi používateľa denne." + max_flags_per_day: "Maximálny počet príznakov používateľa denne." + max_bookmarks_per_day: "Maximálny počet záložiek na jedného používateľa denne." + max_edits_per_day: "Maximálny počet úprav používateľa denne." + max_topics_per_day: "Maximálny počet tém používateľa denne." + max_private_messages_per_day: "Maximálny počet správ ktoré môže používateľ denne vytvoriť." + max_invites_per_day: "Maximálny počet pozvánok ktoré môže používateľ denne zaslať." + max_topic_invitations_per_day: "Maximálny počet pozvánok do tém ktoré môže používateľ denne zaslať." + suggested_topics: "Zobrazovaný počet navrhovaných tém na konci témy." + limit_suggested_to_category: "V navrhovaných témach zobraziť iba témy z aktuálnej kategórie." + clean_up_uploads: "Na zamedzenie nezákonného uloženia odstrániť opustené nahrané súbory na ktoré nevedie žiadny odkaz. VAROVANIE: pred zapnutím tohoto nastavenie možno chcete zálohovať Váš adresár s nahranými súbormi." + clean_orphan_uploads_grace_period_hours: "Doba (v hodinách) pred odstránením opustených nahraných súborov." + purge_deleted_uploads_grace_period_days: "Doba (v dňoch) pred úplným vymazaním odstráneného nahraného súboru." + purge_unactivated_users_grace_period_days: "Doba (v dňoch) pred tým, než je užívateľ, ktorý si neaktivoval svoj účet vymazaný." + enable_s3_uploads: "Ukladať nahrávané súbory na úložište S3. DÔLEŽITÉ: vyžaduje platné prístupové údaje S3 (id prístupového kľúča (access key id) a tajný prístupový kľúč (secret access key))." + s3_use_iam_profile: 'Použiť rolu AWS EC2 IAM na načítanie kľúčov. POZNÁMKA: zapnutie prepíše nastavený "s3 prístupový kľúč id (s3 access key id)" a "s3 tajný prístupový kľúč (s3 secret access key)".' + s3_upload_bucket: "Amazon S3 bucket name, do ktorého budú nahraté súbory. POZOR: musí byť malými písmenami, žiadne bodky a žiadne podtržítka." + s3_access_key_id: "Amazon S3 access key id, ktoré bude použité pre nahrávanie obrázkov." + s3_secret_access_key: "Amazon S3 secret access key, ktorý bude použitý pre nahrávanie obrázkov." + s3_region: "Amazon S3 region name, ktorý bude použitý pre nahrávanie súborov." + s3_cdn_url: "CDN URL ktoré sa použije na všetky dáta v s3 (napríklad https://cdn.niekde.com). VAROVANIE: po zmene tohoto nastavenia musíte použiť príkaz rebake na všetky staré príspevky." + avatar_sizes: "Zoznam automaticky generovaných veľkostí avatarov." + external_system_avatars_enabled: "Použiť externú avatar službu." + external_system_avatars_url: "URL externej avatar služby. Dostupné náhrady sú {username} {first_letter} {color} {size}" + default_opengraph_image_url: "URL štandardného opengraph obrázku." + enable_flash_video_onebox: "Povolenia vkladania odkazov na swf a flv (Adobe Flash) v onebox. VAROVANIE: môže vniesť bezpečnostné riziká." + default_invitee_trust_level: "Predvolená úroveň dôvery (0-4) pre pozvaných používateľov." + default_trust_level: "Východzí stupeň dôvery (0-4) pre všekých nových užívateľov. UPOZORNENIE: Zmena nastavenia Vás môže vystaviť riziku spamovania. " + tl1_requires_topics_entered: "Koľko tém musí nový užívateľ zadať pred povýšením na stupeň dôvery 1." + tl1_requires_read_posts: "Koľko príspevkov musí nový užívateľ prečítať pred povýšením na stupeň dôvery 1." + tl1_requires_time_spent_mins: "Koľko minút musí nový užívateľ čítať príspevky pred povýšením na stupeň dôvery 1." + tl2_requires_topics_entered: "Koľko tém musí nový užívateľ zadať pred povýšením na stupeň dôvery 2." + tl2_requires_read_posts: "Koľko príspevkov musí nový užívateľ prečítať pred povýšením na stupeň dôvery 2." + tl2_requires_time_spent_mins: "Koľko minút musí nový užívateľ čítať príspevky pred povýšením na stupeň dôvery 2." + tl2_requires_days_visited: "Koľko dní musí nový užívateľ navštevovať stránku pred povýšením na stupeň dôvery 2." + tl2_requires_likes_received: "Koľko \"Páči sa\" musí nový užívateľ dostať pred povýšením na stupeň dôvery 2." + tl2_requires_likes_given: "Koľko \"Páči sa\" musí nový užívateľ rozdať pred povýšením na stupeň dôvery 2." + tl2_requires_topic_reply_count: "Na koľko tém musí nový užívateľ odpovedať pred povýšením na stupeň dôvery 2." + tl3_requires_topics_viewed_all_time: "Minimálny počet všetkých tém, ktoré musí mať užívateľ pozreté pre kvalifikáciu na dosiahnute 3 levelu dôvery. " + tl3_requires_posts_read_all_time: "Minimálny počet všetkých príspevkov, ktoré musí mať užívateľ prečítané pre kvalifikáciu na 3 level dôvery. " + tl3_promotion_min_duration: "MInimálny počet dní po pridelení 3 levelu dôvery než môže byť užívateľ degradovaný späť na 3 level dôvery." + tl3_links_no_follow: "Neodstraňujte rel = nofollow z odkazov pridaných užívateľmi s úrovňou dôveryhodnosti 3 ." + min_trust_to_create_topic: "MInimálna úroveň dôvery na vytvorenie novej témy." + min_trust_to_edit_wiki_post: "MInimálna úroveň dôvery na úpravu wiki príspevku." + min_trust_to_allow_self_wiki: "MInimálna úroveň dôvery k tomu aby mohol používateľ svoje témy meniť na wiki." + min_trust_to_send_messages: "MInimálna úroveň dôvery na vytvorenie novej osobnej správy." + newuser_max_links: "Koľko odkazov môže nový používateľ pridať do príspevku." + newuser_max_images: "Koľko obrázkov môže nový používateľ pridať do príspevku." + newuser_max_attachments: "Koľko príloh môže nový používateľ pridať do príspevku." + newuser_max_mentions_per_post: "Maximálny počet notifikácií typu @meno môže nový užívateľ použiť v príspevku." + newuser_max_replies_per_topic: "Maximálny počet odpovedí ktoré môže nový používateľ pridať do jednej témy pokiaľ na ne niekto neodpovie." + max_mentions_per_post: "Maximálný počet notifikácií typu @meno, ktoré môže ktokoľvek použiť v rámci jedného príspevku." + max_users_notified_per_group_mention: "Maximálny počet používateľov, ktorý môžu dostať notifikácie, v prípade notifikovania celej skupiny (ak sa dosiahne maximum, žiadne ďalšie notifikácie nebudú zaslané)" + create_thumbnails: "Vytvor náhľad a okraje pre obrázoky, ktoré sú príliš veľké aby sa zmestili do príspevku." + email_time_window_mins: "Počkať (n) minút pred poslaním akýchkoľvek notifikačných emailov, aby mali používatelia čas úpraviť a dokončiť svoje príspevky." + email_posts_context: "Koľko posledných odpovedí zahrnúť do obsahu v notifikačných emailoch." + flush_timings_secs: "Ako často posielať časové dáta na server, v sekundách." + title_max_word_length: "Maximálna povolená dĺžka slov v názve témy, v znakoch." + title_min_entropy: "Minimálna entropia (unikátne znaky, znaky s diakritikou sa počítajú za dva) vyžadovaná na nadpis témy." + body_min_entropy: "Minimálna entropia (unikátne znaky, znaky s diakritikou sa počítajú za dva) vyžadovaná pre telo príspevku." + allow_uppercase_posts: "Povoliť kapitálky v názve témy, alebo tele príspevku." + title_fancy_entities: "Zameniť v nadpisoch tém bežné ASCII znaky za zábavné HTML znaky, ala SmartyPants http://daringfireball.net/projects/smartypants/" + min_title_similar_length: "Minimálna dĺžka nadpisu na spustenie kontroly na podobné témy." + min_body_similar_length: "Minimálna dĺžka tela príspevku na spustenie kontoly na podobné témy." + category_colors: "Zoznam hexadecimálnych hodnôt farieb povolených pre kategórie." + category_style: "Vizuálny štýl pre odznaky za kategórie." + max_image_size_kb: "Mmaximálna veľkosť vloženého obrázku v kB. Rovnako musí byť nastavená v nginx (client_max_body_size) / apache alebo na proxy." + max_attachment_size_kb: "Mmaximálna veľkosť vloženej prílohy v kB. Rovnako musí byť nastavená v nginx (client_max_body_size) / apache alebo na proxy." + authorized_extensions: "Zoznam povolených príloh súborov ktoré je umožnené vkladať (použite '*' na vkladanie súborov všetkých typov)" + max_similar_results: "Koľko podobných tém sa má zobraziť nad editorom ak vytvára novú tému. Porovnanie je založené na nadpise a tele správy." + title_prettify: "Predchádzať bežným malým preklepom a chybám, zapnutým kapitálkam, malému prvému znaku, duplikácií ! a ?, extra . na konci a podobne." + topic_views_heat_low: "Počet zobrazení aby bolo pole zobrazení jemne zvýraznené." + topic_views_heat_medium: "Počet zobrazení aby bolo pole zobrazení stredne zvýraznené." + topic_views_heat_high: "Počet zobrazení aby bolo pole zobrazení výrazne zvýraznené." + cold_age_days_low: "Po koľkých dňoch je dátum poslednej aktivity danej konverzácie jemne tlmený." + cold_age_days_medium: "Po koľkých dňoch je dátum poslednej aktivity danej konverzácie stredne tlmený." + cold_age_days_high: "Po koľkých dňoch je dátum poslednej aktivity danej konverzácie silne tlmený." + history_hours_low: "Po koľkých hodinách od poslednej úpravy je ikona úprav príspevku jemne zvýraznená." + history_hours_medium: "Po koľkých hodinách od poslednej úpravy je ikona úprav príspevku stredne zvýraznená." + history_hours_high: "Po koľkých hodinách od poslednej úpravy je ikona úprav príspevku veľmi zvýraznená." + topic_post_like_heat_low: "Po prekročení akého pomeru likes:post je pole počtu na príspevku jemne zvýraznené." + topic_post_like_heat_medium: "Po prekročení akého pomeru likes:post je pole počtu na príspevku stredne zvýraznené." + topic_post_like_heat_high: "Po prekročení akého pomeru likes:post je pole počtu na príspevku veľmi zvýraznené." + faq_url: "Ak máte FAQ stránku uloženú na iných stránkach, napište sem plný odkaz na ňu." + tos_url: "Ak máte stránku s Podmienkami uloženú na iných stránkach, napište sem plný odkaz na ne." + privacy_policy_url: "Ak máte stránku s Podmienkami súkromia uloženú na iných stránkach, napište sem plný odkaz na ne." + newuser_spam_host_threshold: "Koľkokrát môže nový používateľ pridať odkaz na rovnaký server v jeho `newuser_spam_host_posts` príspevkoch predtým, než to bude považované za spam." + white_listed_spam_host_domains: "Zoznam domén vylúčených z testovania spamových zdrojov. Novým používateľom nebude nikdy zabránené vytvárať príspevky s odkazmi na tieto domény." + staff_like_weight: "Koľkonásobne viac sa má dať zamestnaneckým páči sa mi." + topic_view_duration_hours: "Započítaj nové pozretie témy raz za IP/používateľa každých N hodín." + user_profile_view_duration_hours: "Započítaj nové pozretie používateľského profilu raz za IP/používateľa každých N hodín." + levenshtein_distance_spammer_emails: "Počet rozdielnych znakov, ktoré stále umožnia fuzzy zhodu, keď sa hľadájú emaily od spammerov." + max_new_accounts_per_registration_ip: "Neakceptovať ďalšie prihlásenia z IP adresy v prípade, ak už existuje (n) účtov s úrovňou dôvery 0 z danej IP adresy (a žiadny nie je zamestnancec alebo s úrovňou dôvery 2 a vyššou)." + min_ban_entries_for_roll_up: "Ak existuje minimálne (N) položiek a kliknete na Zrolovať, vytvorí sa nový obmedzujúci záznam podsiete." + max_age_unmatched_emails: "Zmazať nevyskytujúce sa kontrolované emailové adresy po (N) dňoch." + max_age_unmatched_ips: "Zmazať nevyskytujúce sa kontrolované IP adresy po (N) dňoch." + num_flaggers_to_close_topic: "Minimálny počet rôznych oznamovateľov potrebný na automatické pozastavenie témy pre intervenciu." + num_flags_to_close_topic: "Minimálny počet aktívnych príznakov potrebný na automatické pozastavenie témy pre intervenciu." + auto_respond_to_flag_actions: "Zapnúť automatickú odpoveď pri odstránení označenia." + min_first_post_typing_time: "Minimalny čas písania prvého príspevku v milisekundách, ak je čas kratší ako je limit, príspevok bude automaticky zaradený do fronty na schválenie. Nastav 0 pre vypnutie (Neoporúča sa)" + auto_block_fast_typers_on_first_post: "Automaticky blokovať užívateľov, ktorí nesplnili podmienku minimálneho času pre prvý príspevok min_first_post_typing_time" + auto_block_fast_typers_max_trust_level: "Maximálny level dôvery pre automatické blokovanie rýchlo-písačov" + auto_block_first_post_regex: "Regulárny výraz bez rozlíšenia veľkých a malých písmen, ktorého splnenie zablokuje prvý príspevok užívateľa a pošle ho do fronty na schválenie. Napriklad: raging|a[bc]a , zablokuje príspevky obsahujúce raging alebo aba alebo aca. Aplikuje sa len na prvý príspevok. " + reply_by_email_enabled: "Povoliť odpoveď na tému prostredníctvom emailu." + reply_by_email_address: "Šablóna pre príchodziu emailovú adresu emailových odpovedí. Napríklad : %{reply_key}@reply.example.com or replies+%{reply_key}@example.com" + disable_emails: "Zabrániť Discoursu v odosielaní akýchkoľvek e-mailov" + strip_images_from_short_emails: "Odobrať obrázky z e-mailov s veľkosťou menšou ako 2800 bajtov" + short_email_length: "Dĺžka krátkeho emailu v bytoch." + display_name_on_email_from: "V emailovom poli Od zobraziť plné mená" + unsubscribe_via_email: "Umožniť používateľom odhlásiť sa z emailov pomocou zaslania emailu s textom 'unsubscribe' v predmete alebo v tele emailu" + unsubscribe_via_email_footer: "Do päty stránky posielaných emailov pridať odkaz na odhlásenie sa" + delete_email_logs_after_days: "Zmazať logy o emailoch po (N) dňoch. 0 pre neobmedzene. " + pop3_polling_enabled: "Získavať emailové odpovede pomocou POP3" + pop3_polling_ssl: "Na spojenie s POP3 serverom použiť SSL. (Doporučované)" + pop3_polling_period_mins: "Doba v minutách medzi POP3 kontrolami emailov. POZNÁMKA: vyžaduje reštart." + pop3_polling_port: "Port na ktorom kontrolovať POP3 účet." + pop3_polling_host: "Adresa na ktorej kontrolovať POP3 účet." + pop3_polling_username: "Používateľské meno na kontrolu emailového POP3 účtu." + pop3_polling_password: "Heslo na kontrolu emailového POP3 účtu." + log_mail_processing_failures: "Zaznamenávať všetky chyby pri spracovaní emailov do http://yoursitename.com/logs" + email_in: "Umožniť používateľom posielať nové príspevky pomocou emailu (vyžaduje POP3 kontrolu). Adresy nastavte v záložke \"Nastavenia\" pre každú kategóriu." + email_in_min_trust: "MInimálna úroveň dôveru použivateľa, ktorý môže posielať nové príspevky pomocou emailu." + email_prefix: "[Menovka], ktorá má byť použitá ako predmet emailov. Ak nie je nastavená bude nahradená 'nadpisom'." + email_site_title: "Názov stránok, použitý ako odosieľateľ emailov zo stránok. Ak nie ne nastavený bude použitý 'nadpis'. Použite toto nastavenie, ak Váš nadpis obsahuje nepovolené znaky pre emailový reťazec odosieľateľ." + minimum_topics_similar: "Koľko tém musí existovať predtým, ako sa začnú zobraznovať podobné témy pri zakladaní novej témy." + relative_date_duration: "Počet dní, po uplynutí ktorých sa doba príspevkov začne zobrazovať relatívne (7d) miesto ablolútnej (20 Feb)." + delete_user_max_post_age: "Neumožniť vymazanie použivateľov, ktorých prvý príspevok je starší ako (x) dní." + delete_all_posts_max: "Maximálny počet príspevkov, ktoré môžu byť vymazané naraz pomocou tlačítka Vymaž všetky príspevky. Ak má používateľ viac ako uvedený počet, príspevky nemôžu byť vymazané naraz a používateľ nemôže byť vymazaný." + username_change_period: "Počet dní od registrácie po ktorých môžu účty zmeniť používateľské meno (Na vypnutie zmeny používateľského mena nastavte 0)." + email_editable: "Povoliť užívateľom zmenu ich emailovej adresy po registrácii." + logout_redirect: "Adresa na presmerovanie prehliadača po odhlásení napr. (http://somesite.com/logout)" + allow_uploaded_avatars: "Povoliť používateľom nahranie profilovej fotky." + allow_animated_avatars: "Umožniť používateľom, použiť ako profilový obrázok animovaný gif. VAROVANE: na zmenu tohoto nastavenia spustite rake task avatars:refresh." + allow_animated_thumbnails: "Generovať animované náhľady anomovaných gifov." + default_avatars: "URL na avatara, ktorý bude štandardne použitý pre nových používateľov pokiaľ si ho nezmenia." + automatically_download_gravatars: "Po vytvorení účtu alebo zmene heslo stiahnuť používateľov Gravatar." + digest_topics: "Maximálny počet tém, ktoré sa zobrazia v súhrnnom emaile." + digest_min_excerpt_length: "Minimálny výťah príspevku v sumarizačnom emaile, v znakoch." + delete_digest_email_after_days: "Zakázat súhrnný email používateľom, ktorí neboli na stránkach viac ako (n) dní." + disable_digest_emails: "Vypnúť sumárny email pre všetkých používateľov." + detect_custom_avatars: "Má alebo nemá sa kontrolovať nahratie vlastného profilového obrázka používateľa?" + max_daily_gravatar_crawls: "Koľkokrát denne má Discourse kontrolovať Gravatar na zistenie vlastného avatara." + public_user_custom_fields: "Schválený zoznam vlastných polí používateľa, ktoré budú verejne zobrazené." + staff_user_custom_fields: "Schválený zoznam vlastných polí používateľa, ktoré budú zobrazené zamestnancom." + enable_user_directory: "Povoliť prezeranie zoznamu používateľov." + allow_anonymous_posting: "Povoliť používateľom prepnutie do anonymného režimu." + anonymous_posting_min_trust_level: "Minimálna úroveň dôvery na zapnutie anonymného prispievania." + anonymous_account_duration_minutes: "Každých N minút vytvor nový anonymný účet na ochranu používateľskej anonymity. Príklad: Ak je nastavené na 600, akonáhle uplynie 600 minút od posledného príspevku A používateľ prepne do anonymného režimu, vytvorí sa nový anonymný účet." + hide_user_profiles_from_public: "Vypnúť používateľské karty, profily a adresár pre anonymných používateľov." + allow_profile_backgrounds: "Povoliť používateľov nahranie pozadia do profilu." + sequential_replies_threshold: "Po koľkých po sebe idúcich príspevkov v rade za sebou sa má používateľovi zobraziť varovanie o nadmernom množstve odpovedí?" + enable_mobile_theme: "Mobilné zariadenia používajú tému pre mobilné zariadenia s možnosťou prepnutia na plnú verziu stránok. Vypnite, ak chcete použiť vlastný štýl, ktorý podporuje mobilné zariadenia." + dominating_topic_minimum_percent: "Koľko percent príspevkou musí pouťívateľ pridať do témy než sa mu zobrazí pripomienka o dominovaní témy." + disable_avatar_education_message: "Vypnúť informatívnu hlášku na zmenu avatara." + daily_performance_report: "Denne analyzuj NGINX logy a z detailov vytváraj témy iba pre zamestnancov." + suppress_uncategorized_badge: "V zozname tém nezobrazuj odznak za nekategorizované príspevky." + global_notice: "Pre všetkých návštevníkov zobraz URGENTNÉ, KRÍZOVÉ globálné záhlavie, zmeň na čierne a schovaj (HTML povolené)." + disable_edit_notifications: "Ak je premenná 'download_remote_images_to_local' aktívna, vypnúť notifikácie o úpravách systémového používateľa." + automatically_unpin_topics: "Automaticky odopnúť témy ak používateľ dostanie posledný príspevok." + read_time_word_count: "Počet slov za minútu určený na výpočet odkazovaného času čítania." + full_name_required: "Na používateľskom profile je vyžadované plné meno." + enable_names: "Na profile zobraziť plné používateľské meno, karty a emaily používateľa. Vypnite na schovanie plného mena všade." + display_name_on_posts: "Na príspevkoch zobraziť okrem @loginpoužívateľa i plné meno používateľa." + show_time_gap_days: "Koľko dní musí uplynúť medzi dvoma príspevkami v téme, aby sa medzi nimi zobrazila časová medzera." + invites_per_page: "Na stránke používateľa sú zobrazené štandardné pozvánky." + short_progress_text_threshold: "Ak počet príspevkov v téme presiahne toto číslo, ukazateľ priebehu zobrazí iba aktuálne číslo príspevku. Túto hodnotu možno budete potrebovať zmeniť, ak zmeníte šírku ukazateľa priebehu." + default_code_lang: "Vysvietenie syntaxe pre štandardné programovacie jazyky, aplikované na GitHub bloky kódu (lang-auto, ruby, python etc.)" + warn_reviving_old_topic_age: "Zobrazenie varovania, ak niekto začne odpovedať na tému, kde je posledná odpoveď staršia ako uvedený počet dní. Na vypnutie varozania zadajte 0." + autohighlight_all_code: "Zapnúť vysvietenie syntaxe kódu na všetky formátované bloky kódu, i keď nie je explicitne zadaný jazyk." + highlighted_languages: "Vložte pravidlá pre vysvietenie syntaxe. (Varovanie: zahrnutie príliš veľa pravidiel môže mať doapd na výkon) pozrite si demo na https://highlightjs.org/static/demo/." + feed_polling_enabled: "IBA VKLADANIE: Či sa má vkladať RSS/ATOM kanál ako príspevok." + feed_polling_url: "IBA VKLADANIE: URL RSS/ATOM kanálu na vloženie" + embed_by_username: "Discourse používateľské meno pre používateľa, ktorý vkladá vložené príspevky." + embed_username_key_from_feed: "Kľúč na načítanie discourse používateľského mena z RSS/ATOM kanálu." + embed_truncate: "Orezať vkladané príspevky." + embed_post_limit: "Maximálny počet príspevkov na vloženie." + embed_username_required: "Na vytvorenie téme je vyžadované používateľské meno." + embed_whitelist_selector: "CSS prepínač na elementy, ktoré sú povolené pri vkladaní." + embed_blacklist_selector: "CSS prepínač na elementy, ktoré sú vymazané pri vkladaní." + notify_about_flags_after: "Ak existujú príznaky ktoré neboli vyriešené po uvedenom počte hodín, pošli email na contact_email. Pre vypnutie nastavte 0." + enable_cdn_js_debugging: "Pomocou pridania \"crossorigin\" práv pre všetky vložené js umožniť /logs riadne zobrazenie chýb." + show_create_topics_notice: "Zobraz výzvu žiadajúcu administrátorov o vytvorenie nejakých tém, ak majú stránky menej ako 5 verejných tém." + delete_drafts_older_than_n_days: Vymazať návrhy staršie ako (n) dní. + vacuum_db_days: "Spustiť VACUUM ANALYZE na získanie DB miesto po migráciách (pre vypnutie nastavte na 0)" + prevent_anons_from_downloading_files: "Zabrániť anonymným používateľom sťahovať prílohy. VAROVANIE: toto nastavenie zneprístupní akékoľvek neobrázkové súbory na stánkach uložené ako prílohy." + slug_generation_method: "Vybrať metódu generovania koncovej časti adresy. 'encoded' vygeneruje percentami zakódovaní reťazec. 'none' vypne koncovú časť adresy úplne." + enable_emoji: "Zapnúť emoji" + emoji_set: "Aké emoji chcete mať?" + enforce_square_emoji: "Vynútiť švorcový pomer strán na všetkých emoji." + approve_unless_trust_level: "Príspevky používateľov pod touto úrovňou důvery musia byť schválené" + notify_about_queued_posts_after: "Ak existujú príspevky, ktoré čakali na schválenie viac ako uvedený počet hodín, na kontaktný email bude zaslaná správa. Na vypnutie emailov nastavte 0." + default_email_digest_frequency: "Ako často štandardne používatelia dostávajú sumárny email." + default_email_private_messages: "Štandardne poslať email použivateľovi, ktorému niekto poslal správu." + default_email_direct: "Štandardne poslať email ak niekto cituje/odpovedá/uvednie alebo pozve používateľa." + default_email_mailing_list_mode: "Štandardne poslať email pre každý nový príspevok." + default_email_always: "Štandardne poslať emailovú správu dokonca i vtedy, ak je používateľ aktívny." + default_other_new_topic_duration_minutes: "Globálna šandardná podmienka kedy sa téma považuje za novú." + default_other_auto_track_topics_after_msecs: "Globálny šandardný čas pred tým ako je téma automaticky sledovaná." + default_other_external_links_in_new_tab: "Štandardne otvárať externé odkazy v novej záložke." + default_other_enable_quoting: "Štandardne na vybraný text zapnúť citované odpovede." + default_other_dynamic_favicon: "Štandardne zobraziť počet nových/aktualizovaných tém v ikone prehliadača." + default_other_disable_jump_reply: "Štandardne po odpovedi neskákať na používateľov príspevok." + default_other_edit_history_public: "Štandardne zobraziť revízie príspevku verejne." + default_topics_automatic_unpin: "Štandardne automaticky odopnúť témy ak používateľ dosiahne posledný príspevok." + default_categories_watching: "Štandardný zoznam kategórií, ktoré sú sledované." + default_categories_tracking: "Štandardný zoznam kategórií, ktoré sú sledované." + default_categories_muted: "Štandardný zoznam kategórií, ktoré sú vypnuté." + errors: + invalid_email: "Nesprávna emailová adresa." + invalid_username: "S daným používateľským menom neexistuje žiadny používateľ." + invalid_integer_min_max: "Hodnota musí byť medzi %{min} a %{max}." + invalid_integer_min: "Hodnota musí byť %{min} alebo viac." + invalid_integer_max: "Hodnota nemôže byť viac ako %{max}." + invalid_integer: "Hodnota musí byť celé číslo." + regex_mismatch: "Hodnota nevyhovuje požadovanému formátu." + must_include_latest: "Horné menu musí obsahovať záložku 'posledné'." + invalid_string: "Nesprávna hodnota." + invalid_string_min_max: "Musí byť medzi %{min} a %{max} znakmi." + invalid_string_min: "Musí byť minimálne %{min} znakov." + invalid_string_max: "Nesmie byť viac ako %{max} znakov." + invalid_reply_by_email_address: "Hodnota musí obsahovať '%{reply_key}' a byť odlišná od notifikačného emailu." + pop3_polling_host_is_empty: "Pred nastavením POP3 sťahovania musíte nastaviť 'pop3 adresu'." + pop3_polling_username_is_empty: "Pred nastavením POP3 sťahovania musíte nastaviť 'pop3 používateľské meno'." + pop3_polling_password_is_empty: "Pred nastavením POP3 sťahovania musíte nastaviť 'pop3 heslo'." + pop3_polling_authentication_failed: "POP3 autentikácia zlyhala. Prosíme overte zadané pop3 nastavenia." + notification_types: + group_mentioned: "%{group_name} bola spomenutá v %{link}" + mentioned: "%{display_username} sa o Vás zmienil v %{link}" + liked: "%{display_username} sa páčil Váš príspevok v %{link}" + replied: "%{display_username} odpovedal na Váš príspevok v %{link}" + quoted: "%{display_username} citoval Váš príspevok v %{link}" + edited: "%{display_username} upravil Váš príspevok v %{link}" + posted: "%{display_username} prispel do %{link}" + moved_post: "%{display_username} presunul Váš príspevok do %{link}" + private_message: "%{display_username} vám poslal správu: %{link}" + invited_to_private_message: "%{display_username} Vás pozval k správe: %{link}" + invitee_accepted: "%{display_username} prijal vaše pozvanie" + linked: "%{display_username} odkazuje na Vás v %{link}" + granted_badge: "Získali ste %{link}" + search: + within_post: "#%{post_number} od %{username}" + types: + category: 'Kategórie' + topic: 'Výsledky' + user: 'Používatelia' + original_poster: "Pôvodný autor" + most_posts: "Najviac príspevkov" + most_recent_poster: "Najaktuálnejší prispievateľ" + frequent_poster: "Častý prispievateľ" + redirected_to_top_reasons: + new_user: "Vitajte v našej komunite! Toto sú najpopulárnejšie z posledných tém." + not_seen_in_a_month: "Vitajte späť! Nevideli sme Vás už nejaký čas. Toto sú najpopulárnejšie témy odkedy ste boli preč." + move_posts: + new_topic_moderator_post: + one: "Príspevok bol oddelený do novej témy: %{topic_link}" + few: "%{count} príspevky boli oddelené do novej témy: %{topic_link}" + other: "%{count} príspevkov bolo oddelených do novej témy: %{topic_link}" + existing_topic_moderator_post: + one: "Príspevok bol pripojený k existujúcej téme: %{topic_link}" + few: "%{count} príspevky boli pripojené k existujúcej téme: %{topic_link}" + other: "%{count} príspevkov bolo pripojených k existujúcej téme: %{topic_link}" + change_owner: + post_revision_text: "Vlástníctvo bolo prenesené z %{old_user} na %{new_user}" + deleted_user: "vymazaný užívateľ" + emoji: + errors: + name_already_exists: "Prepáčte, meno '%{name}'je už použité iným emoji." + error_while_storing_emoji: "Prepáčte, pri ukladaní emoji nastala chyba." + topic_statuses: + archived_enabled: "Táto téma je archivovaná. Je zmrazená a už sa nedá nijako meniť. " + archived_disabled: "Táto téma je vyňatá z archivu. Už nie je zmrazená a môže sa opäť meniť. " + closed_enabled: "Táto téma je už uzavretá. Nové odpovede už nie sú povolené." + closed_disabled: "Táto téma je teraz otvorená. Nové odpovede sú povolené." + autoclosed_enabled_days: + one: "Táto téma bola automaticky uzavretá po 1 dni . Nové odpovede už nie sú povolené." + few: "Táto téma bola automaticky uzavretá po %{count} dňoch . Nové odpovede už nie sú povolené." + other: "Táto téma bola automaticky uzavretá po %{count} dňoch . Nové odpovede už nie sú povolené." + autoclosed_enabled_hours: + one: "Táto téma bola automaticky uzavretá po hodine. Nové odpovede už nie sú povolené." + few: "Táto téma bola automaticky uzavretá po %{count} hodinách. Nové odpovede už nie sú povolené." + other: "Táto téma bola automaticky uzavretá po %{count} hodinách. Nové odpovede už nie sú povolené." + autoclosed_enabled_minutes: + one: "Táto téma bola automaticky uzavretá po minúte. Nové odpovede už nie sú povolené." + few: "Táto téma bola automaticky uzavretá po %{count} minútach. Nové odpovede už nie sú povolené." + other: "Táto téma bola automaticky uzavretá po %{count} minútach. Nové odpovede už nie sú povolené." + autoclosed_enabled_lastpost_days: + one: "Táto téma bola automaticky uzavretá po 1 dni od poslednej odpovede. Nové odpovede už nie sú povolené." + few: "Táto téma bola automaticky uzavretá po %{count} dňoch od poslednej odpovede. Nové odpovede už nie sú povolené." + other: "Táto téma bola automaticky uzavretá po %{count} dňoch od poslednej odpovede. Nové odpovede už nie sú povolené." + autoclosed_enabled_lastpost_hours: + one: "Táto téma bola automaticky uzavretá po1 hodine od poslednej odpovede. Nové odpovede už nie sú povolené." + few: "Táto téma bola automaticky uzavretá po %{count} hodinách od poslednej odpovede. Nové odpovede už nie sú povolené." + other: "Táto téma bola automaticky uzavretá po %{count} hodinách od poslednej odpovede. Nové odpovede už nie sú povolené." + autoclosed_enabled_lastpost_minutes: + one: "Táto téma bola automaticky uzavretá po 1 minúte od poslednej odpovede. Nové odpovede už nie sú povolené." + few: "Táto téma bola automaticky uzavretá po %{count} minútach od poslednej odpovede. Nové odpovede už nie sú povolené." + other: "Táto téma bola automaticky uzavretá po %{count} minútach od poslednej odpovede. Nové odpovede už nie sú povolené." + autoclosed_disabled: "Táto téma je teraz otvorená. Nové odpovede sú povolené." + autoclosed_disabled_lastpost: "Táto téma je teraz otvorená. Nové odpovede sú povolené." + pinned_enabled: "Táto téma je teraz pripnutá. Bude zobrazená na vrchu danej kategórie pokiaľ ju neodopnú zamestnanci pre všetkých alebo samostatne každý používateľ." + pinned_disabled: "Táto téma je teraz odopnutá. Ďalej sa nebude zobrazovať na vrchu danej kategórie." + pinned_globally_enabled: "Táto téma je teraz pripnutá globálne. Zobrazí sa na vrchu danej kategórie a vrchu všetkých tém pokiaľ ju neodopnú zamestnanci pre všetkých alebo samostatne každý používateľ." + pinned_globally_disabled: "Táto téma je teraz odopnutá. Ďalej sa nebude zobrazovať na vrchu danej kategórie." + visible_enabled: "Táto téma je teraz uvedená v zozname. Bude zobrazená v zozname tém." + visible_disabled: "Táto téma odteraz nie je uvedená v zozname. Odteraz sa nebude zobrazovať v žiadnom zozname tém. Jediný spôsob ako pristúpiť na danú tému je priamym odkazom." + login: + not_approved: "Váš účet zatiaľ nebol schválený. Ak bude pripravený na prihlásenie, dostanete upozorňujúci email." + incorrect_username_email_or_password: "Nesprávne meno, email, alebo heslo" + wait_approval: "Ďakujeme za registráciu. O schválení účtu Vás budeme informovať." + active: "Váš účet je aktivovaný a pripravený na používanie." + activate_email: "Skoro hotovo! Poslali sme Vám aktivačný email na %{email}. Pre aktiváciu účtu prosíme splňte inštrukcie v emaile.
Ak nedorazí, skontrolujte si zložku s nevyžiadanou poštou, alebo sa prihláste znovu, aby ste si zaslali ďalší aktivačný email.
" + not_activated: "Systém vás nemôže prihlásiť. Poslali sme vám aktivačný email. Prosím, postupujte podľa inštrukcií na aktiváciu účtu, ktoré sú uvedené v tomto emaile." + not_allowed_from_ip_address: "Nie je možné prihlásenie ako %{username} z tejto IP adresy." + admin_not_allowed_from_ip_address: "Nie je možné prihlásenie ako admin z tejto IP adresy." + suspended: "Nemôžte sa prihlásiť do %{date}." + suspended_with_reason: "Tento účet je suspendovaný do %{date}: %{reason}" + errors: "%{errors}" + not_available: "Nie je k dispozícii. Skúste %{suggestion}?" + something_already_taken: "Niečo sa pokazilo, možno je tento užívateľ, alebo e-mail už registrovaný, vyskúšajte odkaz pre zabudnuté heslo" + omniauth_error: "Ľutujeme, nastala chyba pri autorizácii Vášho účtu. Povolili ste autorizáciu?" + omniauth_error_unknown: "Niečo sa pokazilo počas prihlasovania, prosím skúste sa prihlásiť znova." + new_registrations_disabled: "Registrácia nových účtov momentálne nie je povolená." + password_too_long: "Dĺžka hesla je obmedzená na 200 znakov. " + email_too_long: "Emailová adresa je príliš dlhá. Meno priečinka musí byť kratšie ako 254 znakov a meno domény musí byť kratšie ako 253 znakov." + reserved_username: "Toto užívateľské meno nie je povolené." + missing_user_field: "Nevyplnili ste všetky užívateľké polia." + close_window: "Autentifikácia je dokončená. Pre pokračovanie zavrite toto okno. " + user: + no_accounts_associated: "Žiadne pripojené účty " + username: + short: "musí mať minimálne %{min} znakov" + long: "nesmie byť dlhší než %{max} znakov" + characters: "musí obsahovať len čísla, písmená a podržníky" + unique: "musí byť jedinečné" + blank: "musí existovať" + must_not_contain_two_special_chars_in_seq: "nesmie obsahovať reťazec 2 alebo viac špeciálnych znakov po sebe (.-_)" + must_not_end_with_confusing_suffix: "nesmie byť ukončené mätúcou príponou ako napríklad .json alebo .png a podobne." + email: + not_allowed: "nie je povolená od tohto poskytovateľa emailu. Prosím použite inú emailovú adresu. " + blocked: "nie je povolená." + ip_address: + blocked: "Nové registrácie nie sú povolené z Vašej IP adresy." + max_new_accounts_per_registration_ip: "Nové registrácie nie sú povolené z Vašej IP adresy (dosiahnutý limit). Kontaktujte člena obsluhy. " + flags_reminder: + subject_template: + one: "1 značká čaká na zpracovanie" + few: "%{count} značky čakajú na zpracovanie" + other: "%{count} značiek čaká na zpracovanie" + unsubscribe_mailer: + subject_template: "Potvrďte, že už ďalej nechcete dostávať aktualizácie z %{site_title}" + text_body_template: | + Niekto (pravdepodobne vy?) požiadal aby ďalej na túto adresu neboli zasielané emailové aktualizácie z %{site_domain_name}. + Ak si prajete potvrdiť, prosíme kliknite na odkaz: + + %{confirm_unsubscribe_link} + + + Ak chcete pokračovať v prijímaní emailových aktualizácií, môžete tento email ignorovať. + invite_mailer: + subject_template: "%{invitee_name} Vás pozval '%{topic_title}' na %{site_domain_name}" + text_body_template: | + %{invitee_name} Vás pozval do diskusie + + > **%{topic_title}** + > + > %{topic_excerpt} + + na + + > %{site_title} -- %{site_description} + + Ak Vás to zaujalo, kliknite na odkaz nižšie: + + %{invite_link} + + Táto pozvánka je od dôveryhodného užívateľa, takže môžete okamžite odpovedať na diskusiu . + invite_forum_mailer: + subject_template: "%{invitee_name} Vás pozval na %{site_domain_name}" + text_body_template: | + %{invitee_name} Vás pozval, aly ste sa pripojili na + + > **%{site_title}** + > + > %{site_description} + + Ak Vás to zaujíma, kliknite na nižšie uvedený odkaz: + + %{invite_link} + + Toto pozvanie je od dôveryhodného používateľa, takze sa nebudete musieť prihlasovať. + invite_password_instructions: + subject_template: "Nastavte heslo pre účet na %{site_name}" + text_body_template: | + Ďakujeme za akceptovanie Vašej pozvánky na %{site_name} -- vitajte! + + Kliknite na odkaz aby ste si vybrali heslo: + %{base_url}/users/password-reset/%{email_token} + + (Ak vyššie uvedený odkaz vyexpiroval, vyberte "Zabudol som heslo" keď sa prihlasujete pomocou svojej emailovej adresy.) + test_mailer: + subject_template: "[%{site_name}] Overenie doručiteľnosti emailu" + new_version_mailer: + subject_template: "[%{site_name}] Nové verzia Discourse, dostupná aktualizácia" + new_version_mailer_with_notes: + subject_template: "[%{site_name}] aktualizácia dostupná" + queued_posts_reminder: + subject_template: + one: "%{site_name}] 1 príspevok čaká na revíziu" + few: "[%{site_name}] %{count} príspevky čakajú na revíziu" + other: "[%{site_name}] %{count} príspevkov čaká na revíziu" + text_body_template: | + Ahoj, + + Existujú príspevky nových používateľov, ktoré čakajú na revíziu. [Schválené alebo zamietnuté môžu byť tu](%{base_url}/queued-posts). + flag_reasons: + off_topic: "Váš príspevok bol označený ako \"mimo-témy\": komunita cíti, že nie je vhodný do témy tak, ako je definovaná nadpisom a prvým príspevkom" + inappropriate: "Váš príspevok bol označený ako **nevhodný**: komunita cíti, že je úrážlivý, nemiestny alebo porušuje [naše pravidlá komunity](/guidelines)." + spam: "Váš príspevok bol označený ako **spam**: komunita cíti, že je to reklama, niečo čo je vo spojej podstate príliš propagačné, miesto toho, aby bolo užitočné alebo relevantné k danej téme, tak ako je očakávané." + notify_moderators: "Váš príspevok bol označený **na kontrolu pre moderátora**: komunita cíti, že nečo v príspevku vyžaduje manuálny zásah niektorým zo zamestnancov." + flags_dispositions: + agreed: "Ďakujeme za upozornenie. Súhlasíme s tým, že je tam problém a pracujeme na ňom." + agreed_and_deleted: "Ďakujeme za upozornenie. Súhlasíme s tým, že je tam problém a príspevok sme odstránili." + disagreed: "Ďakujeme za upozornenie. Práve to riešime." + deferred: "Ďakujeme za upozornenie. Práve to riešime." + deferred_and_deleted: "Ďakujeme za upozornenie. Daný príspevok sme odstránili." + temporarily_closed_due_to_flags: "Tento príspevok je dočasne uzamknutý z dôvodu veľkého množstva vlajok od komunity." + system_messages: + post_hidden: + subject_template: "Príspevok skrytý z dôvodu konumitného označenia vlajkou" + text_body_template: | + Dobrý deň, + + toto je automaticky generovaná správa od %{site_name}, aby ste boli informovaní, že váš príspevok bol skrytý. + + %{base_url}%{url} + + %{flag_reason} + + Viacero členov komunity označilo tento príspevok predtým, ako bol skrytý, takže skúste, prosím, zvážiť, ako by ste mohli príspevok upraviť, aby odrážal ich spätnú väzbu. **Váš príspevok môžete upraviť po %{edit_delay} minútach a bude automaticky opäť zobrazený.** + + Avšak pokiaľ bude príspevok skrytý komunitou druhýkrát, ostane skrytý dovtedy, pokiaľ sa o to nepostarajú moderátori – a tam môže dôjsť k ďalším akciám, ako napr. možné pozastavenie vášho účtu. + + Ohľadom ďalšieho poradenstva si, prosím, pozrite naše [community guidelines](%{base_url}/pokyny). + usage_tips: + text_body_template: | + Tu je niekoľko rád, ako začať: + + ## Čítanie + + Ak chcete pokračovať v čítaní, **jednoducho pokračujte v skrolovaní!** + + V prípade, že dorazia nové odpovede alebo témy, automaticky sa zobrazia - žiadna nutnosť obnovovať stránku. + + ## Navigácia + + - Použite **ikonu s tlačítkom vpravo hore** pr vyhľadávanie, Vašu používateľskú stránku a ☰ menu. + + - Ak vyberiete nádpis témy, vždy sa zobrazí **prvá neprečítaná odpoveď** danej témy. Vyberte počet odpovedí alebo dátum poslednej odpovede na zobrazenie začiatku alebo konca. + +Bài viết của bạn đã được gắn cờ bở cộng đồng. Vui lòngxem tin nhắn của bạn.
' + user_must_edit: 'Bài viết này đã bị đánh dấu bởi cộng đồng và đang được ẩn tạm thời.
' + archetypes: + regular: + title: "Chủ đề thường" + banner: + title: "Banner chủ đề" + message: + make: "Chủ đề này trở thành một banner. Nó sẽ hiện ở đầu mọi trang tới khi nó được tắt bởi thành viên." + remove: "Chủ đề này không còn là một banner. Nó sẽ không hiện ở đầu mọi trang nữa." + unsubscribed: + title: 'Hủy bỏ đăng ký' + description: "Bạn đã ngừng đăng. Chúng tôi sẽ không liên lạc bạn nữa!" + oops: "Trong trường hợp bạn không có ý thực hiện thao tác này, bấm vào bên dưới." + error: "Lỗi hủy đăng kí" + preferences_link: "Bạn có thể hủy theo dõi bản tin tóm tắt tại trang thiết lập" + different_user_description: "Bạn đang đăng nhập như một người dùng khác, không phải là người dùng đã được gửi đến qua mail. Hãy thoát ra và thử lại." + not_found_description: "Xin lỗi, chúng tôi không thể ngừng đăng ký bạn. Có thể là do link trong email của bạn đã hết hạn." + resubscribe: + action: "Đăng ký lại" + title: "Đã đăng ký lại!" + description: "Bạn đã được đăng ký lại." + reports: + visits: + title: "Các thành viên truy cập" + xaxis: "Ngày" + yaxis: "Số lần truy cập" + signups: + title: "Thành viên mới" + xaxis: "Ngày" + yaxis: "Số lượng thành viên mới" + profile_views: + title: "Xem hồ sơ người dùng" + xaxis: "Ngày" + yaxis: "Số người đã xem hồ sơ người dùng" + topics: + title: "Các chủ đề" + xaxis: "Ngày" + yaxis: "Số lượng chủ đề mới" + posts: + title: "Bài viết" + xaxis: "Ngày" + yaxis: "Số lượng bài viết mới" + likes: + title: "Lượt thích" + xaxis: "Ngày" + yaxis: "Số lượt thích mới" + flags: + title: "Dấu cờ - Flags" + xaxis: "Ngày" + yaxis: "Số dấu cờ - flag" + bookmarks: + title: "Các đánh dấu" + xaxis: "Ngày" + yaxis: "Số đánh dấu mới" + starred: + title: "Bắt đầu" + xaxis: "Ngày" + yaxis: "Số chủ đề được tạo." + users_by_trust_level: + title: "Thành viên ở mõi bậc tin tưởng" + xaxis: "Bậc tin tưởng" + yaxis: "Số thành viên" + emails: + title: "Email đã gửi" + xaxis: "Ngày" + yaxis: "Số lượng emails" + user_to_user_private_messages: + title: "Người dùng tới người dùng" + xaxis: "Ngày" + yaxis: "Số lượng tin nhắn" + system_private_messages: + title: "Hệ thống" + xaxis: "Ngày" + yaxis: "Số lượng tin nhắn" + moderator_warning_private_messages: + title: "Cảnh báo của điều hành viên" + xaxis: "Ngày" + yaxis: "Số lượng tin nhắn" + notify_moderators_private_messages: + title: "Thông báo ban quản trị" + xaxis: "Ngày" + yaxis: "Số lượng tin nhắn" + notify_user_private_messages: + title: "Thông báo người dùng" + xaxis: "Ngày" + yaxis: "Số lượng tin nhắn" + top_referrers: + title: "Giới thiệu hàng đầu" + xaxis: "Người dùng" + num_clicks: "Clicks" + num_topics: "Chủ đề" + top_traffic_sources: + title: "Nguồn truy cập" + xaxis: "Tên miền" + num_clicks: "Clicks" + num_topics: "Chủ đề" + num_users: "Người dùng" + top_referred_topics: + title: "Top chủ đề giới thiệu" + xaxis: "Chủ đề" + num_clicks: "Clicks" + page_view_anon_reqs: + title: "Ẩn danh" + xaxis: "Ngày" + yaxis: "Truy cập API ẩn danh" + page_view_logged_in_reqs: + title: "Đã đăng nhập" + xaxis: "Ngày" + yaxis: "Đã đăng nhập truy cập API" + page_view_crawler_reqs: + title: "Thu thập thông tin web" + xaxis: "Ngày" + yaxis: "Truy cập API thu thập thông tin web" + page_view_total_reqs: + title: "Tổng số" + xaxis: "Ngày" + yaxis: "Tổng số truy cập API" + page_view_logged_in_mobile_reqs: + title: "Trong yêu cầu đăng nhập API" + xaxis: "Ngày" + yaxis: "Mobile yêu cầu Đăng nhập API" + page_view_anon_mobile_reqs: + title: "Anon API Requests" + xaxis: "Ngày" + yaxis: "Mobile Anon API Requests" + http_background_reqs: + title: "Hình nền" + xaxis: "Ngày" + yaxis: "Yêu cầu đã sử dụng cho cập nhật thời gian thực và thống kê" + http_2xx_reqs: + title: "Trạng thái 2xx (OK)" + xaxis: "Ngày" + yaxis: "Yêu cầu thành công (Trạng thái 2xx)" + http_3xx_reqs: + title: "HTTP 3xx (Chuyển hướng)" + xaxis: "Ngày" + yaxis: "Chuyển hướng yêu cầu (Trạng thái 3xx)" + http_4xx_reqs: + title: "HTTP 4xx (Trình khách lỗi)" + xaxis: "Ngày" + yaxis: "Trình khách lỗi (Trạng thái 4xx)" + http_5xx_reqs: + title: "HTTP 5xx (Máy chủ lỗi)" + xaxis: "Ngày" + yaxis: "Máy chủ lỗi (Trạng thái 5xx)" + http_total_reqs: + title: "Tổng số" + xaxis: "Ngày" + yaxis: "Tổng số yêu cầu" + time_to_first_response: + title: "Thời gian để phản hồi lần đầu" + xaxis: "Ngày" + yaxis: "Thời gian trung bình (giờ)" + topics_with_no_response: + title: "Chủ đề không có phản hồi" + xaxis: "Ngày" + yaxis: "Tổng số" + mobile_visits: + title: "Các thành viên truy cập" + xaxis: "Ngày" + yaxis: "Số lần truy cập" + dashboard: + rails_env_warning: "Máy chủ của bạn đang chạy trong chế độ %{env}." + ruby_version_warning: "Bạn đang dùng một phiên bản Ruby 2.0.0 được biết là có nhiều vấn đề. Hãy nâng cấp bản vá 247 hoặc mới hơn." + host_names_warning: "Cài đặt của bạn config/database.yml đang sử dụng hostname mặc định. Cập nhật lại để sử dụng hostname của bạn" + gc_warning: 'Máy chủ của bạn hiện tại sử dụng cơ chế dọn rác mặc định của ruby, điều này khiến cho hiệu năng của máy chủ không tốt lắm. Đọc chủ đề sau cho việc tối ưu hiệu năng Tối ưu Ruby and Rails cho Discourse.' + sidekiq_warning: ' Sidekiq đang không hoạt động. Rất nhiều tác vụ, như gửi email, là được thực thi không đồng bộ bởi sidekiq. Hãy chắc chắn rằng ít nhất một tiến trình sidekiq phải đang hoạt động. Đọc thêm về Sidekiq tại đây.' + queue_size_warning: 'Có %{queue_size} công việc đang chờ xử lý trong hàng đợi. Điều này chứng tỏ có vấn đề đã xảy ra với tiến trình Sidekiq, hoặc bạn cần tăng số lượng Sidekiq workers ().' + memory_warning: 'Máy chủ của bạn có bộ nhớ ít hơn 1 GB. Khuyến cáo sử dụng bộ nhớ tối thiểu 1 GB .' + google_oauth2_config_warning: 'Máy chủ được cấu hình cho phép đăng ký và đăng nhập với Google OAuth2 (enable_google_oauth2_logins), tuy nhiên giá trị của client id và client secret thì không được thiết lập. Truy cập Cấu hình Site và bổ sung các thiết lập đó. Xem hướng dẫn này để biết thêm chi tiết.' + facebook_config_warning: 'Máy chủ được cấu hình cho phép đăng ký và đăng nhập với Facebook (enable_facebook_logins), tuy nhiên giá trị của client id và client secret thì không được thiết lập. Truy cập Cấu hình Site và bổ sung các thiết lập đó. Xem hướng dẫn này để biết thêm chi tiết.' + twitter_config_warning: 'Máy chủ được cấu hình cho phép đăng ký và đăng nhập với Twitter (enable_twitter_logins), tuy nhiên giá trị của client id và client secret thì không được thiết lập. Truy cập Cấu hình Site và bổ sung các thiết lập đó. Xem hướng dẫn này để biết thêm chi tiết.' + github_config_warning: 'Máy chủ được cấu hình cho phép đăng ký và đăng nhập với GitHub (enable_github_logins), tuy nhiên giá trị của client id và client secret thì không được thiết lập. Truy cập Cấu hình Site và bổ sung các thiết lập đó. Xem hướng dẫn này để biết thêm chi tiết.' + s3_config_warning: 'Máy chủ được cấu hình để upload file lên s3, tuy nhiên ít nhất một trong các tùy chỉnh sau đây không được thiết lập: s3_access_key_id, s3_secret_access_key hoặc s3_upload_bucket. Truy cập Thiết lập Site và bổ sung các thiết lập đó. Xem bài viết "How to set up image uploads to S3?" để biết thêm chi tiết.' + s3_backup_config_warning: 'Máy chủ được cấu hình để upload các bản sao lưu dữ liệu lên s3, tuy nhiên ít nhất một trong các tùy chỉnh sau đây không được thiết lập: s3_access_key_id, s3_secret_access_key hoặc s3_backup_bucket. Truy cập Thiết lập Site và bổ sung các thiết lập đó. Xem bài viết "How to set up image uploads to S3?" để biết thêm chi tiết.' + image_magick_warning: 'Máy chủ đã cấu hình để tạo hình đại diện nhỏ từ những hình lới, nhưng ImageMagick chưa được cài đặt. Cài ImageMagick sử dụng trình quản lý package yêu thích của bạn hoặc tải về phiên bản mới nhất.' + failing_emails_warning: 'Có %{num_failed_jobs} email jobs thấ bại. Kiểm tra app.yml và chắc chắn rằng cấu hình máy chủ email đúng. Xem jobs thất bại ở Sidekiq.' + default_logo_warning: "Cập nhập logo của trang. Cập nhập logo_url, logo_small_url, và favicon_url trong Thiết lập trang." + contact_email_missing: "Điền địa chỉ email liên hệ để có thể nhận được các vấn đề cấp bách liên quan đến website của bạn, cập nhật trong Thiết lập website." + contact_email_invalid: "Email liên lạc của trang không hợp lệ. Cập nhật trong Thiết lập trang/a>." + title_nag: "Nhập tên trang của bạn. Cập nhập tiêu đề trong Thiết lập trang." + site_description_missing: "Điền một câu mô tả về website để hiển thị trên trang kết quả tìm kiếm, cập nhật site_description trong Thiết lập website." + consumer_email_warning: "Trang web của bạn được cài đặt sử dụng Gmail (hoặc một dịch vụ email khác) để gửi email. Gmail có giới hạn số lượng email bạn có thể gửi. Hãy xem xét sử dụng một dịch vụ email khác như mandrill.com để đảm bảo khả năng vận chuyển tất cả các email." + site_contact_username_warning: "Điền tên tài khoản điều hành viên để gửi tin nhắn tự động, cập nhật site_contact_username trong Thiết lập website." + notification_email_warning: "Email thông báo không thể gửi từ một địa chỉ email với tên miền của bạn, gửi email sẽ thất thường và không đáng tin cậy. Hãy thiết lập notification_email tới một địa chỉ tin cậy trong Thiết lập website." + subfolder_ends_in_slash: "Thư mục con của bạn được thiết lập không đúng, DISCOURSE_RELATIVE_URL_ROOT phải được kết thúc bằng dấu gạch chéo." + site_settings: + censored_words: "Từ sẽ tự động thay thế bằng ■■■■" + delete_old_hidden_posts: "Tự động ẩn bất kỳ bài viết ở ẩn hơn 30 ngày." + default_locale: "Ngôn ngữ mặc định của Discourse (Mã ISO 639-1)" + allow_user_locale: "Cho phép thành viên chọn ngôn ngữ của riêng trong thiết lập giao diện." + min_post_length: "Số kí tự tối thiểu trong bài đăng." + min_first_post_length: "Chiều dài tối thiểu cho bài viết đầu tiên (nội dung chủ đề) tính theo ký tự." + min_private_message_post_length: "Số kí tự tối thiểu trong tin nhắn." + max_post_length: "Số kí tự tối đa trong bài đăng." + min_topic_title_length: "Số kí tự tối thiểu trong tiêu đề chủ đề." + max_topic_title_length: "Số kí tự tối đa trong tiêu đề chủ đề." + min_private_message_title_length: "Chiều dài tối thiểu cho phép theo số kí tự của một thông điệp" + min_search_term_length: "Số kí tự tối thiểu trong từ khóa tìm kiếm." + search_tokenize_chinese_japanese_korean: "Bắt buộc tìm kiếm tách từ Chinese/Japanese/Korean ngay cả trên các site không phải là CJK" + allow_uncategorized_topics: "Cho phép các chủ đề được tạo ra mà không gán chuyên mục. LƯU Ý: Nếu có bất kỳ chủ đề nào chưa gán chuyên mục, bạn phải phân loại chúng trước khi thay đổi." + allow_duplicate_topic_titles: "Cho phép các chủ đề trùng tiêu đề." + unique_posts_mins: "Trong bao nhiêu phút người sử dụng có thể viết bài khác với nội dung giống nhau" + educate_until_posts: "Khi người dùng bắt đầu đăng (n) bài viết đầu tiên, hiện pop-up để hướng dẫn họ khi soạn thảo." + title: "Tên của trang này, sử dụng trong thẻ tiêu đề" + site_description: "Mô tả trang này trong một câu, nó sẽ được sử dụng trong thẻ meta description" + contact_email: "Địa chỉ email liên hệ của người chịu trách nhiệm trang này. Sử dụng cho những thông báo quan trọng giống như cờ không được quản lý, cũng giống form liện hệ /about cho những vấn đề cấp bách." + contact_url: "URL liên hệ trong trang này. Sử dụng trong form liên hệ /about cho những vấn đề cấp bách." + queue_jobs: "DEVELOPER ONLY! WARNING! By default, queue jobs in sidekiq. If disabled, your site will be broken." + crawl_images: "Lấy hình ảnh tử URL bên ngoài để thêm vào đúng chiều dài và chiều cao." + download_remote_images_to_local: "Tải ảnh về lưu trữ để tránh ảnh bị hư." + download_remote_images_threshold: "Dung lượng tối thiểu cần để tải ảnh từ xa về lưu trữ (tính bằng phần trăm)" + disabled_image_download_domains: "Tải ảnh từ xa sẽ không áp dụng với các tên miền sau. Phân cách bằng dấu |" + editing_grace_period: "Trong khoảng (n) giây sau khi gửi bài, chỉnh sửa sẽ không tạo ra một phiên bản mới trong bài lịch sử bài viết." + post_edit_time_limit: "Tác giả có thể sửa hoặc xóa bài viết của họ trong (n) phút sau khi đăng. 0 là mãi mãi." + edit_history_visible_to_public: "Cho phép mọi người nhìn thấy phiên bản trước khi chỉnh sửa bài viết. Khi không cho phép, chỉ nhân viên có thể xem." + delete_removed_posts_after: "Bài viết đã được xóa bởi tác giả sẽ được tự động xóa sau (n) giờ. Nếu cài là 0, bài viết sẽ được xóa ngay lập tức." + max_image_width: "Chiều rộng tối đa của ảnh thu nhỏ trong bài viết." + max_image_height: "Chiều cao tối đa của ảnh thu nhỏ trong bài viết." + category_featured_topics: "Số chủ đề hiện thị mỗi danh mục trong trang /categories. Sau khi thay đổi giá trị này, nó sẽ mất khoảng 15 phút để trang danh mục cập nhật." + show_subcategory_list: "Hiện danh sách chuyên mục con thay vì danh sách chủ đề khi truy cập vào chuyên mục." + fixed_category_positions: "Nếu được bật, bạn sẽ có thể sắp xếp chuyên mục theo một thứ tự cố định. Nếu không bật, chuyên mục sẽ được sắp xếp theo thứ tử hoạt động." + fixed_category_positions_on_create: "Nếu chọn, sắp xếp danh mục sẽ được thực hiện trong cửa sổ tạo chủ đề (yêu cầu fixed_category_positions)." + add_rel_nofollow_to_user_content: "Thêm rel='nofollow' cho tất cả các nội dung mà người dùng gửi, ngoại trừ các liên kết nội bộ (của tên miền chính). Nếu thay đổi, bạn phải thực hiện lại cho tất cả các bài viết với: \"rake posts:rebake\"" + exclude_rel_nofollow_domains: "Một danh sách tên miền mà rel='nofollow' không được thêm vào các liên kết, các tên miền con sẽ được tự động áp dụng như với tên miền chính. Tối thiểu, bạn nên thêm tên miền cấp cao nhất của website này để giúp search engine tìm kiếm tất cả các nội dung. Nếu các phần khác của website thuộc tên miền khác, cũng nên thêm vào." + post_excerpt_maxlength: "Chiều dài tối đa của đoạn trích / tóm tắt chủ đề." + post_onebox_maxlength: "Số ký tự tối đa của một bài onebox Discourse." + onebox_domains_whitelist: "Danh sách các tên miền cho phép onebox, các tên miền này phải hỗ trợ OpenGraph hoặc oEmbed. Kiểm tra tại http://iframely.com/debug" + logo_url: "Logo ở vị trí trên cùng của website nên là hình chữ nhật, nếu để trống thì tên website sẽ hiển thị." + digest_logo_url: "Logo thay thế đặt ở trên cùng của tập san email nên là hình chữ nhật, nếu để trống thì 'logo_url' sẽ được sử dụng." + logo_small_url: "Logo nhỏ ở vị trí trên cùng của website hiển thị khi cuộn xuống nên là hình vuông, nếu để trống thì icon trang chủ sẽ hiển thị." + favicon_url: "Favicon cho trang của bạn, xem tại http://en.wikipedia.org/wiki/Favicon, để chạy được với CDN ảnh phải là png" + mobile_logo_url: "Cố định vị trí hình logo sử dụng tại phía trên bên trái trang mobile của bạn. Nên là hình vuông. Nếu để trống, sẽ sử dụng `logo_url`. Ví dụ: http://example.com/uploads/default/logo.png" + apple_touch_icon_url: "Biểu tượng sử dụng trong các thiết bị cảm ứng của Apple. Kích thước gợi ý 144px x 144px" + notification_email: "Địa chỉ email 'Từ:' được dùng để gửi các email thiết yếu của hệ thống. Các tên miền quy định ở đây phải có SPF, DKIM và bản ghi PTR phải được thiết lập chính xác cho email đến." + email_custom_headers: "Danh sách xác định email header tùy chỉnh" + email_subject: "Tùy biến định dạng chủ đề cho chuẩn email. Xem tại https://meta.discourse.org/t/customize-subject-format-for-standard-emails/20801" + use_https: "URL đầy đủ đến trang (Discourse.base_url) là http hoặc https? KHÔNG BẬT NÓ CHO TỚI KHI HTTPS ĐÃ CÀI ĐẶT SẴN SẰNG VÀ ĐÃ CHẠY!" + summary_score_threshold: "Số điểm tối thiểu yêu cầu cho một bài viết bao gồm 'Tóm tắt chủ đề này'" + summary_posts_required: "Số bài viết tối thiểu trong một chủ đề trước khi 'Tóm tắt chủ đề này' được kích hoạt" + summary_likes_required: "Số lượt thích trong một chủ đề trước khi 'Tóm tắt chủ đề này' được kích hoạt" + summary_percent_filter: "Khi người dùng nhấn 'Tóm tắt chủ đề này', hiển thị phí trên % của bài viết" + summary_max_results: "Số bài viết tối đa trả ra bởi 'Tóm tắt chủ đề này'" + enable_private_messages: "Cho phép thành viên có cấp độ tin cậy mức 1 (cấu hình thông qua cấp độ tin cậy tối thiểu khi gửi tin nhắn) tạo và trả lời tin nhắn" + enable_long_polling: "Message Bus sử dụng để thông báo có thể sử dụng vòng gọi dài" + long_polling_base_url: "URL chính sử dụng cho vòng gọi dài (khi một CDN phục vụ nội dung động, hãy chắc chắn để thiết lập này là vòng gọi gốc), vd: http://origin.site.com" + long_polling_interval: "Thời gian server phải đợi trước khi gửi trả lời khi không có dữ liệu để gửi (chỉ với tài khoản đăng nhập)" + polling_interval: "When not long polling, how often should logged on clients poll in milliseconds" + anon_polling_interval: "How often should anonymous clients poll in milliseconds" + background_polling_interval: "How often should the clients poll in milliseconds (when the window is in the background)" + flags_required_to_hide_post: "Số lần đánh dấu để bài viết tự động ẩn và gửi tin nhắn đến người dùng (điền 0 để tắt)" + cooldown_minutes_after_hiding_posts: "Số phút một người dùng phải chờ trước khi họ có thể sửa một bài viết ẩn bởi gắn cờ cộng đồng" + max_topics_in_first_day: "Số chủ đề tối đa một thành viên được tạo trong ngày đầu tiên." + max_replies_in_first_day: "Số trả lời tối đa một thành viên được tạo trong ngày đầu tiên" + tl2_additional_likes_per_day_multiplier: "Tăng giới hạn thích mỗi ngày cho mức độ tin tưởng 2 (thành viên) bằng cách nhân với số này" + tl3_additional_likes_per_day_multiplier: "Tăng giới hạn thích mỗi ngày cho mức độ tin tưởng 3 (bình thường) bằng cách nhân với số này" + tl4_additional_likes_per_day_multiplier: "Tăng giới hạn thích mỗi ngày cho mức độ tin tưởng 4 (dẫn đầu) bằng cách nhân với số này" + num_flags_to_block_new_user: "Nếu bài viết của thành viên mới nhận được nhiều đánh dấu spam từ num_users_to_block_new_user thành viên khác, ẩn tất cả các bài viết của họ và ngăn chặn gửi bài trong tương lai, điền 0 để tắt." + num_users_to_block_new_user: "Nếu bài viết của thành viên mới nhận được num_flags_to_block_new_user đánh dấu spam từ các thành viên khác, ẩn tất cả các bài viết của họ và ngăn chặn gửi bài trong tương lai, điền 0 để tắt." + notify_mods_when_user_blocked: "Nếu một thành viên được khóa tự động, gửi tin nhắn đến tất cả các điều hành viên." + flag_sockpuppets: "Nếu thành viên mới trả lời chủ đề có cùng địa chỉ IP với thành viên mới tạo chủ đề, đánh dấu các bài viết của họ là spam tiềm năng." + traditional_markdown_linebreaks: "Sử dụng ngắt dòng truyền thống trong Markdown, đòi hỏi hai khoảng trống kế tiếp cho một ngắt dòng." + allow_html_tables: "Cho phép nhập bảng trong Markdown sử dụng các thẻ HTML. TABLE, THEAD, TD, TR, TH sẽ được sử dụng (đòi hỏi thực hiện lại cho các bài viết cũ có chứa bảng)" + post_undo_action_window_mins: "Số phút thành viên được phép làm lại các hành động gần đây với bài viết (like, đánh dấu...)." + must_approve_users: "Quản trị viên phải duyệt tất cả các tài khoản thành viên mới trước khi họ có quyền truy cập website. LƯU Ý: bật tính năng này trên site đang hoạt động sẽ hủy bỏ quyền truy cập đối với các tài khoản thành viên hiện tại!" + pending_users_reminder_delay: "Thông báo cho quản trị viên nếu thành viên mới đã chờ duyệt lâu hơn số giờ được thiết lập ở đây, đặt là -1 để tắt thông báo." + ga_tracking_code: "Mã theo dõi Google analytics (ga.js), ví dụu: UA-12345678-9; chi tiết http://google.com/analytics" + ga_domain_name: "Tên miền Google analytics (ga.js), ví dụ: mysite.com; chi tiết http://google.com/analytics" + ga_universal_tracking_code: "Mã theo dõi Google Universal Analytics (analytics.js) , Ví dụ: UA-12345678-9; chi tiết http://google.com/analytics" + ga_universal_domain_name: "Tên miền Google Universal Analytics (analytics.js), ví dụ: mysite.com; chi tiết http://google.com/analytics" + enable_escaped_fragments: "Trả lại tới Google's Ajax-Crawling API nếu không xác định được webcrawler. Xem chi tiết https://support.google.com/webmasters/answer/174992?hl=en" + enable_noscript_support: "Cho phép webcrawler search engine chuẩn hỗ trợ bằng thẻ noscript" + allow_moderators_to_create_categories: "Cho phép điều hành viên tạo danh mục mới" + cors_origins: "Cho phép CORS (Cross-Origin Requests). Mỗi nguyên gốc phải kèm theo http:// hoặc https://. Biến env DISCOURSE_ENABLE_CORS phải được đặt là 'true' để bật CORS." + use_admin_ip_whitelist: "Admin chỉ có thể đăng nhập nếu có địa chỉ IP được định nghĩa trước trong danh sách Screened IPs (Admin > Logs > Screened Ips)." + top_menu: "Xác định các mục nào hiển thị trong thanh điều hướng trang chủ, và theo thứ tự nào. Ví dụ latest|new|unread|categories|top|read|posted|bookmarks" + post_menu: "Xác định các mục nào hiển thị trên menu bài viết, và theo thứ tự nào. Ví dụ like|edit|flag|delete|share|bookmark|reply" + post_menu_hidden_items: "Các mục được để ẩn theo mặc định trong menu bài viết trừ khi click vào dấu '...' để mở rộng." + share_links: "Xác định các mục nào hiển thị trên hộp thoại chia sẻ, và theo thứ tự nào." + track_external_right_clicks: "Theo dõi các liên kết ngoài được click đúng (vd: mở trong tab mới) bị vô hiệu hóa theo mặc định do Rewrite URL." + site_contact_username: "Tên tài khoản quản trị viên hợp lệ để gửi tất cả các thông báo tự động. Nếu để trống, tài khoản mặc định của hệ thống sẽ được sử dụng." + send_welcome_message: "Gửi tất cả các thành viên mới một thông điệp chào mừng kèm theo hướng dẫn nhanh." + suppress_reply_directly_below: "Không hiện bộ đếm trả lời mở rộng cho bài viết chỉ có duy nhất một trả lời trực tiếp bên dưới bài viết này." + suppress_reply_directly_above: "Không hiện trả lời mở rộng cho bài viết chỉ có duy nhất một trả lời trực tiếp bên trên bài viết này." + suppress_reply_when_quoting: "Không hiện trả lời mở rộng cho bài viết chỉ trích dẫn trả lời." + max_reply_history: "Số tối đa trả lời được mở rộng khi trả lời mở rộng" + topics_per_period_in_top_summary: "Số lượng chủ đề top hiển thị trong tóm tắt các chủ đề top theo mặc định." + topics_per_period_in_top_page: "Số lượng chủ đề top hiển thị khi click 'Xem thêm'." + redirect_users_to_top_page: "Tự động chuyển thành viên mới và vắng mặt lâu ngày lên trên cùng trang." + top_page_default_timeframe: "Khung thời gian mặc định cho trang xem trên cùng." + show_email_on_profile: "Hiển thị email thành viên trên trang hồ hơ (chỉ cho họ và quản trị viên)" + email_token_valid_hours: "Token quyên mật khẩu / kích hoạt tài khoản có giá trị trong (n) giờ." + email_token_grace_period_hours: "Token quyên mật khẩu / kích hoạt tài khoản vẫn còn giá trị (n) giờ sau khi được gia hạn" + enable_badges: "Kích hoạt hệ thống huy hiệu" + enable_whispers: "Cho phép quản trị viên giao tiếp riêng trong chủ đề. (thực nghiệm)" + allow_index_in_robots_txt: "Chỉ rõ trong robots.txt trang web này cho phép tạo chỉ mục bởi web search engines." + email_domains_blacklist: "Một danh sách đuôi email mà người dùng không được phép dùng để đăng ký tài khoản. Ví dụ: maillinator.com|trashmail.net. Lưu ý mỗi tên miền cách nhau bởi dấu \"|\"." + email_domains_whitelist: "Danh sách tên miền người dùng ĐƯỢC PHÉP đăng ký tài khoản. CẢNH BÁO: người dùng với tên miền email khác trong danh sách sẽ không được phép đăng ký!" + forgot_password_strict: "Không thông báo cho người dùng tài không tồn tại khi họ dùng chức năng quyên mật khẩu." + log_out_strict: "Khi đăng xuất, đăng xuất TẤT CẢ session cho tất cả thiế bị" + version_checks: "Ping Discourse Hub để cập nhật phiên bản và hiện thông báo phiên bản mới trong bảng điều khiển quản trị" + new_version_emails: "Gửi email đến địa chỉ contact_email khi có phiên bản Discourse mới." + port: "DEVELOPER ONLY! WARNING! Sử dụng HTTP port thay vì mặc định port 80. Để trống mặc định port 80." + force_hostname: "DEVELOPER ONLY! LƯU Ý! Chỉ rõ hostname trong URL. Để trống là mặc định." + invite_expiry_days: "Key mời người dùng có giới hạn bao lâu? tính theo ngày" + invite_passthrough_hours: "Bao lâu người dùng có thể sử dụng mã lời mời trước đó để đăng nhập, theo giờ" + invite_only: "Đăng ký tự do đã khóa, tất cả người dùng phải được mời bởi những thành viên khác hoặc nhân viên." + login_required: "Yêu cầu chứng thực để đọc nội dung trên trang web, không cho phép người dùng nặc danh truy cập." + min_username_length: "Chiều dài username tối thiểu." + max_username_length: "Chiều dài username tối đa." + reserved_usernames: "Những username không được phép đăng ký." + min_password_length: "Chiều dài mật khẩu tối thiểu." + block_common_passwords: "Không cho phép mật khẩu trong danh sách 10.000 mật khẩu phổ biến." + enable_sso: "Cho phép dùng single sign on bằng trang ngoài (CẢNH BÁO: ĐỊA CHỈ EMAIL CỦA NGƯỜI DÙNG PHẢI ĐƯỢC CHỨNG THỰC BỞI TRANG NGOÀI!)" + enable_sso_provider: "Thực hiện giao thức cung cấp Discourse SSO tại điểm cuối /session/sso_provider, yêu cầu phải thiết lập sso_secret" + sso_url: "URL của single sign on enpoint" + sso_secret: "Chuỗi bảo mật đã được sử dụng để chứng thực thông tin SSO, chắc chắn nó có ít nhất 10 ký tự." + sso_overrides_email: "Ghi đè email cục bộ với email trang ngoài từ SSO cho tất cả các lần đăng nhập, và ngăn chặn những thay đổi cục bộ. (LƯU Ý: sự khác biệt có thể xảy ra do sự bình thường hóa các email cục bộ)" + sso_overrides_username: "Ghi đè tên tài khoản cục bộ với tài khoản trang ngoài từ SSO cho tất cả các lần đăng nhập, và ngăn chặn những thay đổi cục bộ. (LƯU Ý: sự khác biệt có thể xảy ra do yêu cầu độ dài tên tài khoản khác nhau)" + sso_overrides_name: "Ghi đè tên thành viên cục bộ với tên thành viên trang ngoài từ SSO cho tất cả các lần đăng nhập, và ngăn chặn những thay đổi cục bộ." + sso_overrides_avatar: "Ghi đè avatar thành viên cục bộ với avatar thành viên trang ngoài từ SSO. Nếu bật, bạn nên vô hiệu hóa allow_uploaded_avatars" + sso_not_approved_url: "Chuyển những tài khoản SSO chưa duyệt tới URL này" + enable_local_logins: "Bật tên tài khoản và mật khẩu đăng nhập cục bộ dựa trên tài khoản. (Chú ý: bật thiết lập này để kích hoạt chức năng gửi lời mời)" + allow_new_registrations: "Cho phép đăng ký người dùng mới. Bỏ chọn để bất cứ ai cũng có thể tạo tài khoản mới." + enable_signup_cta: "Hiện thông báo với thành viên ẩn danh khi họ quay lại để yêu cầu họ đăng ký tài khoản." + enable_yahoo_logins: "Cho phé chứng thực qua Yahoo" + enable_google_oauth2_logins: "Cho phép chứng thực qua Google Oauth2. Nó là cách chứng thực mà Google hỗ trợ. Yêu cầu key và secret." + google_oauth2_client_id: "Client ID ứng dụng Google của bạn." + google_oauth2_client_secret: "Client secret ứng dụng Google của bạn." + enable_twitter_logins: "Cho phép chứng thực qua Twitter, yêu cầu twitter_consumer_key và twitter_consumser_secret" + twitter_consumer_key: "Consumer key cho chứng thực Twitter, đăng ký tại http://dev.twitter.com" + twitter_consumer_secret: "Consumer secret cho chứng thực Twitter, đăng ký tại http://dev.twitter.com" + enable_facebook_logins: "Cho phép chứng thực Facebook, yêu cầu facebook_app_id và facebook_app_secret" + facebook_app_id: "App id cho chứng thực Facebook, đăng ký tại https://developers.facebook.com/apps" + facebook_app_secret: "App secret cho chứng thực Facebook, đăng ký tại https://developers.facebook.com/apps" + enable_github_logins: "Cho phép chứng thực Github, yêu cầu gitbug_client_id và githup_client_secret" + github_client_id: "Client id cho chứng thực Github, đăng ký tại https://github.com/settings/applications" + github_client_secret: "Client secret cho chứng thực Github, đăng ký tại https://github.com/settings/applications" + allow_restore: "Cho phép phục hồi, nó có thể thay thế TẤT CẢ dữ liệu trang web! Bỏ chọn, trừ khi bạn có kế hoạch phục hồi một bản sao lưu" + maximum_backups: "Số bản sao lưu tối đa lưu trong đĩa cứng. Những bản sao lưu cũ sẽ được xóa tự động" + automatic_backups_enabled: "Chạy sao lưu tự động như cấu hình trong tần số sao lưu" + backup_frequency: "Tần số sao lưu trang web, trong ngày." + enable_s3_backups: "Tải bản sao lưu lên S3 khi hoàn tất. QUAN TRỌNG: yêu cầu chứng thực S3 đã được nhập trong cấu hình File." + s3_backup_bucket: "Địa chỉ tách biệt lưu trữ backup. LƯU Ý: đây phải là địa chỉ được giành riêng." + backup_time_of_day: "Thời gian theo ngày UTC khi backup." + backup_with_uploads: "Kèm theo cả thư mục uploads theo lịch trình backup. Tắt tính năng này sẽ chỉ backup csdl." + active_user_rate_limit_secs: "Tần số cập nhật trường 'last_seen_at, tính theo giây" + verbose_localization: "Hiển thị các mẹo trong giao diện người dùng" + previous_visit_timeout_hours: "Bao lâu lần ghé thăm cuối cùng được coi như lần ghé thăm 'trước', theo giờ" + top_topics_formula_log_views_multiplier: "giá trị nhật ký lượt xem nhân với (n) trong công thức chủ đề top: `log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`" + top_topics_formula_first_post_likes_multiplier: "giá trị của lượt like bài viết đầu tiên nhân với (n) trong công thức chủ đề top: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`" + top_topics_formula_least_likes_per_post_multiplier: "giá trị số lượt like tối thiểu của mỗi bài viết nhân với (n) trong công thức chủ đề top: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`" + rate_limit_create_topic: "Sau khi tạo một chủ đề, người dùng phải chờ (n) giây trước khi tạo một chủ đề khác." + rate_limit_create_post: "Sau khi đăn bài, người dùng phải chờ (n) giây trước khi đăng bài khác." + rate_limit_new_user_create_topic: "Sau khi tạo một chủ đề, người dùng mới phải chờ (n) giây trước khi tạo chủ đề khác." + rate_limit_new_user_create_post: "Sau khi đăng bài, người dùng mới phải chờ (n) giây trước khi đăng bài khác." + max_likes_per_day: "Số tối đa người dùng có thể like mỗi ngày." + max_flags_per_day: "Số tối đa mà người dùng có thể gắn cờ mỗi ngày." + max_bookmarks_per_day: "Số tối đa người dùng có thể đánh dấu mỗi ngày." + max_edits_per_day: "Số tối đa người dùng có thể chỉnh sửa mỗi ngày." + max_topics_per_day: "Số chủ đề tối đa người dùng có thể tạo mỗi ngày." + max_private_messages_per_day: "Số tin nhắn tối đa người dùng có thể tạo mỗi ngày." + max_invites_per_day: "Số tối đa người dùng có thể gửi lời mời mỗi ngày." + max_topic_invitations_per_day: "Số tối đa lời mời chủ đề thành viên có thể gửi mỗi ngày." + suggested_topics: "Số chủ đề gợi ý hiện ở cuối một chủ đề" + limit_suggested_to_category: "Chỉ hiện thị những chủ đề từ danh mục hiện tại trong chủ đề gợi ý." + clean_up_uploads: "Loại bỏ không triệt các dòng mồ côi khi upload để ngăn chặn hosting bất hợp pháp. LƯU Ý: bạn cần phải backup thư mục /uploads trước khi bật thiết lập này." + clean_orphan_uploads_grace_period_hours: "Thời gian gia hạn (theo giờ) trước khi dòng mồ côi upload được loại bỏ." + purge_deleted_uploads_grace_period_days: "Thời gian gia hạn (theo ngày) trước khi upload cần xóa được xóa." + purge_unactivated_users_grace_period_days: "Thời gian gia hạn (theo ngày) trước khi người dùng chưa kích hoạt tài khoản sẽ được xóa." + enable_s3_uploads: "Đặt thư mục upload trên Amazon S3. QUAN TRỌNG: yêu cầu chứng thực S3 (cả ID khóa truy cập & khóa bảo mật)." + s3_use_iam_profile: 'Sử dụng AWS EC2 IAM để lấy khóa. LƯU Ý: bật thiết lập này sẽ ghi đè thiết lập "s3 access key id" và "s3 secret access key".' + s3_upload_bucket: "Tên Amazon S3 để lưu trữ các file sẽ được upload. CHÚ Ý: phải là chữ thường, không cách và không gạch dưới." + s3_access_key_id: "Amazon S3 access key id này sẽ được sử dụng để tải lên ảnh." + s3_secret_access_key: "Amazon S3 secret access key này sẽ được sử dụng để tải lên ảnh." + s3_region: "Amazon S3 region name sẽ được sử dụng để tải lên ảnh." + s3_cdn_url: "CDN URL được sử dụng cho tất cả các tài nguyên S3 (vd: https://cdn.somewhere.com). CHÚ Ý: sau khi thay đổi thiết lập này bạn phải tạo lại các bài viết cũ." + avatar_sizes: "Danh sách những kích thước hình đại diện tự động khởi tạo." + external_system_avatars_enabled: "Sử dụng dịch vụ ảnh đại diện bên ngoài." + external_system_avatars_url: "URL của dịch vụ avatar ngoài, cho phép thay thế {username} {first_letter} {color} {size}" + default_opengraph_image_url: "URL của ảnh opengraph mặc định." + enable_flash_video_onebox: "Cho phép nhúng liên kết swf và flv (Adobe Flash). CHÚ Ý: có thể chứa đựng các rủi ro bảo mật." + default_invitee_trust_level: "Bậc tin tưởng mặc định (0-4) cho thành viên được mời." + default_trust_level: "Cấp độ tin cậy mặc định (0-4) cho tất cả các thành viên mới. CHÚ Ý! Thay đổi thiết lập này sẽ đặt bạn vào nguy cơ spam cao." + tl1_requires_topics_entered: "Số chủ đề một thành viên mới phải truy cập trước khi được lên bậc tin tưởng 1" + tl1_requires_read_posts: "Số chủ đề một thành viên mới phải đọc trước khi được lên bậc tin tưởng 1" + tl1_requires_time_spent_mins: "Số phút một thành viên mới phải đọc trước khi được lên bậc tin tưởng 1" + tl2_requires_topics_entered: "Số chủ đề một thành viên mới phải truy cập trước khi được lên bậc tin tưởng 2" + tl2_requires_read_posts: "Số chủ đề một thành viên mới phải đọc trước khi được lên bậc tin tưởng 2" + tl2_requires_time_spent_mins: "Số phút một thành viên mới phải đọc trước khi được lên bậc tin tưởng 2" + tl2_requires_days_visited: "Số ngày một thành viên phải ghé thăm site trước khi được thăng lên bậc tin cậy cấp 2." + tl2_requires_likes_received: "Số like một thành viên phải nhận được trước khi được thăng lên bậc tin cậy cấp 2." + tl2_requires_likes_given: "Số like một thành viên phải thực hiện trước khi được thăng lên bậc tin cậy cấp 2." + tl2_requires_topic_reply_count: "Số chủ đề thành viên phải trả lời trước khi được thăng lên bậc tin cậy cấp 2." + tl3_requires_topics_viewed_all_time: "Số lượng chủ đề tối thiểu mà thành viên phải xem trước khi được thăng lên độ tin cậy cấp 3." + tl3_requires_posts_read_all_time: "Tổng số bài viết tối thiểu mà thành viên phải đọc trước khi được thăng lên độ tin cậy cấp 3." + tl3_promotion_min_duration: "Số ngày tối thiểu chương trình thăng hạng cấp 3 kéo dài trước khi thành viên có thể bị giáng cấp xuống độ tin cậy cấp 2." + tl3_links_no_follow: "Không loại bỏ rel=nofollow khỏi các liên kết trong bài viết của thành viên có độ tin cậy cấp 3." + min_trust_to_create_topic: "Bậc tin tưởng tối thiểu để tạo một chủ đề mới." + min_trust_to_edit_wiki_post: "Bậc tin cậy tối thiểu cần thiết để có thể sửa bài viết được đánh dấu là wiki." + min_trust_to_allow_self_wiki: "Bậc tin cậy tối thiểu cần thiết để người dùng có thể đánh dấu bài viết của họ là wiki." + min_trust_to_send_messages: "Bậc tin cậy tối thiểu cần thiết để có thể tạo hội thoại riêng." + newuser_max_links: "Bao nhiêu liên kết tài khoản mới có thể thêm vào bài viết." + newuser_max_images: "Bao nhiêu hình tài khoản mới có thể thêm vào bài viết." + newuser_max_attachments: "Bao nhiêu đính kèm tài khoản mới có thể thêm vào bài viết" + newuser_max_mentions_per_post: "Số tối đa thông báo @name mà thành viên mới có thể sử dụng trong bài viết." + newuser_max_replies_per_topic: "Số lượng tối đa trả lời mà thành viên có thể thực hiện trong một chủ đề cho đến khi có ai đó gửi trả lời." + max_mentions_per_post: "Số tối đa thông báo @name mà tất cả mọi người có thể sử dụng trong bài viết." + email_time_window_mins: "Chờ (n) phút trước khi gửi bất kỳ một email thông báo nào, để cung cấp cho người dùng cơ hội để chỉnh sửa và hoàn tất bài viết của họ." + title_max_word_length: "Chiều dài tối đa chữ cho phép, tính theo ký tự, trong một tiêu đề chủ đề." + allow_uppercase_posts: "Cho phép viết hoa tất cả các chữ trong tên chủ đề hoặc nội dung bài viết." + title_fancy_entities: "Chuyển đổi các ký tự ASCII thành các đối tượng HTML trong tên chủ đề, http://daringfireball.net/projects/smartypants/" + min_title_similar_length: "Chiều dài tối thiểu của tiêu đề trước khi kiểm tra trùng chủ đề." + min_body_similar_length: "Chiều dài tối thiểu của nội dung bài viết trước khi kiểm trang chủ đề tương tự." + category_colors: "Danh sách mã màu hexa cho phép cho danh mục." + max_attachment_size_kb: "Kích thước file tải lên tối đa tính theo kB. đã cấu hình trong nginx (client_max_body_size) / apache hoặc proxy." + authorized_extensions: "Danh sách định dạng file cho phép tải lên (sử dụng '*' để cho phép tất cả loại tập tin)" + max_similar_results: "Số lượng chủ đề tương tự hiển thị phía trên bộ soạn thảo khi soạn chủ đề mới, so sánh dựa trên tiêu đề và nội dung." + reply_by_email_enabled: "Cho phép trả lời chủ đề qua email." + pop3_polling_ssl: "Sử dụng SSL khi kết nối tới POP3 server. (Đề nghị sử dụng)" + email_in_min_trust: "Bậc tin tưởng tối thiểu cho phép một thành viên gửi chủ đề mới qua email." + username_change_period: "Số ngày thành viên có thể thay đổi tên đăng nhập sau khi đăng kí (0 để vô hiệu hóa chức năng thay đổi tên thành viên)" + email_editable: "Cho phép thành viên thay đổi địa chỉ email sau khi đăng kí" + logout_redirect: "Trang chuyển hướng sau khi đăng xuất . Ví dụ : (http://somesite.com/logout)" + allow_uploaded_avatars: "Cho phép người dùng tải lên hình hồ sơ." + allow_animated_thumbnails: "Tạo ảnh động thu nhỏ cho ảnh .gif" + digest_min_excerpt_length: "Số kí tự tối thiểu của tóm tắt bài viết trong bản tin tóm tắt gửi qua email" + max_daily_gravatar_crawls: "Giới hạn số lần Discourse sẽ kiểm tra Gravatar mới trong một ngày" + allow_profile_backgrounds: "Cho phép người dùng tải lên ảnh nền" + suppress_uncategorized_badge: "Không hiển thị huy hiệu cho các chủ đề chưa phân loại trong danh sách chủ đề" + invites_per_page: "Lời mời mặc định hiển thị trên trang thành viên" + short_progress_text_threshold: "Sau khi số bài đăng của một chủ đề vượt qua giới hạn này, thanh tiến trình sẽ chỉ hiện số thứ tự của bài đăng hiện tại. Nếu bạn thay đổi chiều rộng của thanh tiến trình, bạn có thể cần thay đổi giá trị này" + show_create_topics_notice: "Nếu trang có ít hơn 5 chủ đề công khai, hiển thị một thông báo yêu cầu quản trị tạo thêm các chủ đề mới" + prevent_anons_from_downloading_files: "Cấm khách truy cập tải các tập tin đính kèm. CẢNH BÁO: việc này sẽ chặn những hình ảnh không thuộc giao diện trang hoạt động" + default_email_mailing_list_mode: "Mặc định gửi email cho mỗi bài viết mới." + default_email_always: "Mặc định gửi email thông báo mỗi khi người dùng kích hoạt." + default_other_external_links_in_new_tab: "Mặc định mở các liên kết ngoài trong thẻ mới " + errors: + invalid_email: "Địa chỉ email sai" + invalid_username: "Không có thành viên với tên đăng nhập này" + invalid_integer_min_max: "Giá trị phãi nằm giữa %{min} và %{max}." + invalid_integer_min: "Giá trị phải bằng %{min} hoặc lớn hơn" + invalid_integer_max: "Giá trị không thể cao hơn %{max}." + invalid_integer: "Giá trị phải là một số nguyên" + regex_mismatch: "Giá trị không giống với định dạng" + invalid_string: "Giá trị không hợp lệ." + invalid_string_min_max: "Phải nằm giữa %{min} và %{max} ký tự." + invalid_string_min: "Phải ít nhất %{min} ký tự." + invalid_string_max: "Không nhiều hơn %{max} ký tự." + invalid_reply_by_email_address: "Giá trị phải chứa '%{reply_key}' và phải khác với email thông báo." + notification_types: + mentioned: "%{display_username} đề cập bạn ở %{link}" + liked: "%{display_username} thích bài viết %{link} của bạn" + replied: "%{display_username} trả lời bài viết %{link} của bạn" + quoted: "%{display_username} trích dẫn bài viết %{link} của bạn" + edited: "%{display_username} sửa đổi bài viết %{link} của bạn" + posted: "%{display_username} viết bài ở %{link}" + moved_post: "%{display_username} di chuyển bài viết của bạn tới %{link}" + private_message: "%{display_username} gửi bạn một tin nhắn: %{link}" + invited_to_private_message: "%{display_username} mời bạn xem tin nhắn: %{link}" + invitee_accepted: "%{display_username} chấp nhận lời mời của bạn" + linked: "%{display_username} kết nối với bạn ở %{link}" + granted_badge: "Bạn kiếm được %{link}" + search: + within_post: "#%{post_number} bởi %{username}" + types: + category: 'Thư mục' + topic: 'Kết quả' + user: 'Thành viên' + original_poster: "Người viết gốc" + most_posts: "Bài viết Phỏ biến" + redirected_to_top_reasons: + new_user: "Chào mừng đến với cộng dồng của chúng tôi! Ở đây có những chủ để phổ biến." + not_seen_in_a_month: "Chào mừng quay trở lại! Chúng tôi thấy bạn truy cập một khoảng thời gian. Ở đây có những bài viết phổ biến từ lúc bạn đ." + change_owner: + deleted_user: "xóa người dùng" + topic_statuses: + archived_enabled: "Chủ đề này được đưa vào lưu trữ. Nó sẽ không được sửa đổi nữa. " + archived_disabled: "Chủ đề này được đưa khỏi lưu trữ. Nó có thể được sửa đổi." + closed_enabled: "Chủ đề này được đóng lại. Các trả lời mới sẽ không được chấp nhận." + closed_disabled: "Chủ đề này được mở ra. Các trả lời mới sẽ được chấp nhận." + autoclosed_enabled_lastpost_hours: + other: "Chủ đề này đã được đóng tự động %{count} giờ sau phản hồi cuối cùng. Không còn cho phép phản hồi mới." + autoclosed_disabled: "Chủ đề này đã được mở. Bạn có thể bình luận" + autoclosed_disabled_lastpost: "Chủ đề này đã được mở. Bạn có thể bình luận" + visible_enabled: "Chủ để này đã được lưu. Nó sẽ hiển thị trong danh sách chủ đề." + login: + not_approved: "Tài khoản của bạn chưa được kiểm duyệt. Bạn sẽ nhận được email thông báo khi bạn được phép đăng nhập." + incorrect_username_email_or_password: "Không đúng tài khoản, email hoặc mật khẩu" + wait_approval: "Cảm ơn bạn đã đăng ký. Chúng tôi sẽ thông báo sau khi tài khoản của bạn được kiểm duyệt." + active: "Tài khoản của bạn đã được kích hoạt và sẵn sàng để sử dụng." + not_activated: "Bạn không thể đăng nhập bây giờ. Chúng tôi đã gửi bạn một email kích hoạt tài khoản. Vui lòng làm theo hướng dẫn trong email để kích hoạt tài khoản của bạn." + not_allowed_from_ip_address: "Bạn không thể đăng nhập như là %{username} từ địa chỉ IP này." + admin_not_allowed_from_ip_address: "Bạn không thể đăng nhập như quản trị từ IP này." + suspended: "Bạn không thể đăng nhập cho tới ngày %{date}." + suspended_with_reason: "Tài khoản bị tạm khóa cho tới %{date}: %{reason}" + errors: "%{errors}" + not_available: "Không có sẵn. Thử %{suggestion}?" + something_already_taken: "Có lỗi xảy ra, tên đăng nhập hoặc email đã được đăng ký. Thử sử dụng chức năng quên mật khẩu." + omniauth_error: "Xin lỗi, có lỗi khi xác thực tài khoản của bạn. Bạn không được duyệt chứng thực?" + omniauth_error_unknown: "Cố lỗi xảy ra khi bạn đăng nhập, vui lòng thử lại." + new_registrations_disabled: "Đăng ký tài khoản mới không được cho phép tại thời điểm này." + password_too_long: "Mật khẩu giới hạn không quá 200 ký tự." + email_too_long: "Email bạn cung cấp quá dài. Địa chỉ email phải không quá 254 ký tự, và tên miền phải không quá 253 ký tự." + reserved_username: "Tên đăng nhập không được cho phép." + missing_user_field: "Bạn không hoàn tất tất cả các trường người dùng" + close_window: "Chứng thực hoàn tất. Đóng của sổ này để tiếp tụ." + user: + username: + characters: "chỉ bao gồm số, ký tự và dấu gạch dưới" + unique: "phải độc nhất" + blank: "phải hiện hành" + email: + not_allowed: "không được chấp nhận từ nhà cung cấp email đó. Vui long sử dụng địa chỉ email khác." + blocked: "không được chấp nhận." + ip_address: + blocked: "Đăng ký mới không cho phép từ địa chỉ IP của bạn." + invite_forum_mailer: + subject_template: "%{invitee_name} đã mời bạn gia nhập %{site_domain_name}" + text_body_template: | + %{invitee_name} đã mời bạn gia nhập + + > **%{site_title}** + > + > %{site_description} + + Nếu bạn không thích, nhấn vào link dưới đây: + + %{invite_link} + + Nó được mời từ một người dùng tin cập, bạn không cần đăng nhập. + invite_password_instructions: + subject_template: "Đặt mật khẩu cho tài khoản của bạn ở %{site_name}" + new_version_mailer: + subject_template: "[%{site_name}] Phiên bạn Discourse mới, cập nhật đã sẵn sàng" + new_version_mailer_with_notes: + subject_template: "[%{site_name}] cập nhật đã sẵn sàng" + flags_dispositions: + agreed: "Cảm ơn đã cho chúng tôi biết. Chúng thôi đồng ý nó là một vấn đề và chúng tôi sẽ xem xét nó." + agreed_and_deleted: "Cảm ơn đã cho chúng tôi biết thông tin. Chúng tôi đồng ý đây là một vấn đề và chúng tôi đã xóa bài viết này." + disagreed: "Cảm ơn đã cho chúng tôi biết thông tin. Chúng tôi đang xem xét nó." + deferred: "Cảm ơn đã cho chúng tôi biết thông tin. Chúng tôi đang xem xét nó." + system_messages: + welcome_user: + subject_template: "Chào mừng đến với %{site_name}!" + welcome_invite: + subject_template: "Chào mừng đến với %{site_name}!" + backup_succeeded: + subject_template: "Sản sao lưu hoàn tất thành công" + backup_failed: + subject_template: "Sao lưu lỗi." + text_body_template: | + Sao lưu lỗi. + + Đây là log: + + ``` + %{logs} + ``` + restore_succeeded: + subject_template: "Phục hồi thành công" + text_body_template: "Phục hồi đã thành công." + restore_failed: + subject_template: "Phục hồi thất bại." + text_body_template: | + Phục hồi thất bại. + + Đây là log: + + ``` + %{logs} + ``` + csv_export_succeeded: + subject_template: "Xuất dữ liệu hoàn tất" + csv_export_failed: + subject_template: "Xuất dữ liệu thất bại" + text_body_template: "Chúng tôi xin lỗi, những dữ liệu bạn xuất bị lỗi. Vui lòng xem log hoặc liên hệ nhân viên." + email_reject_no_account: + subject_template: "[%{site_name}] Vấn đề Email -- Không xác định tài khoản" + email_reject_empty: + subject_template: "[%{site_name}] Vấn đề Email -- Không có nội dung" + email_reject_parsing: + subject_template: "[%{site_name}] Vấn đề Email-- Không nhận dạng được nội dung" + email_reject_invalid_access: + subject_template: "[%{site_name}] Vấn đề Email -- truy cập không phù hợp" + email_reject_reply_key: + subject_template: "[%{site_name}] Vấn đề Email -- Không xác định được key trả lời" + email_reject_topic_not_found: + subject_template: "[%{site_name}] Vấn đề Email -- Không tìm thấy chủ đề" + email_reject_topic_closed: + subject_template: "[%{site_name}] Vấn đề Email -- Chủ đề đóng" + email_reject_auto_generated: + subject_template: "[%{site_name}] Vấn đề Email -- Tự động tạo trả lời" + email_error_notification: + subject_template: "[%{site_name}] Vấn đề Email -- chứng thực POP lỗi" + too_many_spam_flags: + subject_template: "Tài khoản mới bị chặn" + blocked_by_staff: + subject_template: "Tài khoản bị khóa" + unblocked: + subject_template: "Tài khoản được mở khóa" + pending_users_reminder: + subject_template: + other: "%{count} thành viên đang chờ duyệt" + subject_re: "Re:" + subject_pm: "[PM]" + user_notifications: + previous_discussion: "Các trả lời trước" + unsubscribe: + title: "Bỏ theo dõi" + description: "Bạn không thích nhận mail giống mail này? Nhấn vào bỏ theo dõi để bỏ đăng ký ngay lập tức:" + posted_by: "Đăng bởi %{{username} ngày %{post_date}" + user_invited_to_private_message_pm: + subject_template: "[%{site_name}] %{username} mời bạn trả lời thông điệp '%{topic_title}'" + user_replied: + subject_template: "[%{site_name}] %{topic_title}" + user_quoted: + subject_template: "[%{site_name}] %{topic_title}" + user_mentioned: + subject_template: "[%{site_name}] %{topic_title}" + user_posted: + subject_template: "[%{site_name}] %{topic_title}" + user_posted_pm: + subject_template: "[%{site_name}] [PM] %{topic_title}" + digest: + why: "Tóm tắt %{site_link} từ lần cuối truy cập %{last_seen_at}" + subject_template: "[%{site_name}] Tóm tắt" + new_activity: "Hoạt động mới ở chủ đề và bài viết của bạn:" + top_topics: "Bài viết phổ biến" + other_new_topics: "Chủ đề phổ biến" + click_here: "bấm vào đây" + from: "%{site_name} tóm tắt" + read_more: "Đọc Tiếp" + more_topics: "Đây là %{new_topics_since_seen} những chủ đề mới khác." + more_topics_category: "Thêm chủ đề mới:" + forgot_password: + subject_template: "[%{site_name}] Đặt lại mật khẩu" + set_password: + subject_template: "[%{site_name}] Đặt Mật khẩu" + admin_login: + subject_template: "[%{site_name}] Đăng nhập" + account_created: + subject_template: "[%{site_name}] Tài khoản mới" + signup_after_approval: + subject_template: "Bạn đã được kiểm duyệt ở %{site_name}!" + signup: + subject_template: "[%{site_name}] Xác nhận tài khoản mới của bạn" + page_not_found: + popular_topics: "Phổ biến" + recent_topics: "Gân đây" + see_more: "Thêm" + search_title: "Tìm trang này" + search_google: "Goole" + login_required: + welcome_message: | + #[Chào mừng đến %{title}](#welcome) + Trang này yêu cầu phải có tài khoản. Vui lòng tạo một tài khoản hoặc đăng nhập để tiếp tục. + terms_of_service: + title: "Điều khoản Dịch vụ" + signup_form_message: 'Tôi đã đọc và đồng ý với Điều khoản dịch vụ.' + deleted: 'đã bị xóa ' + upload: + edit_reason: "tải về một bản sao của hình ảnh." + unauthorized: "Xin lỗi, tập tin của bạn tải lên không được cho phép (định dạng cho phép: %{authorized_extensions})." + pasted_image_filename: "Hình ảnh được chèn" + store_failure: "Tải lên lỗi #%{upload_id} cho tài khoản #%{user_id}." + file_missing: "Xin lỗi, bạn phải cung cấp tập tin để tải lên" + attachments: + too_large: "Xin lỗi, tập tin bạn tải lên quá lớn (kích thước tối đa %{max_size_kb}KB)." + images: + too_large: "Xin lỗi, hình bạn tải lên quá lớn (kích thước tối đa %{max_size_kb}KB), Vui lòng chỉnh lại kích thước và thử lại." + size_not_found: "Xin lỗi, không thể xác định kích thước hình. Có thể hình của bạn bị lỗi?" + email_log: + no_user: "không tìm thấy người dùng với id %{user_id}" + anonymous_user: "Người dùng là nặc danh" + suspended_not_pm: "Tài khoản bị tạm khóa, không có tin nhắn" + seen_recently: "Tài khoản đã xem gần đây" + post_not_found: "Không tìm thấy bài viết với id %{post_id}" + notification_already_read: "Thông báo email này đã được đọc" + topic_nil: "post.topic is nil" + post_deleted: "bài viết đã bị xóa bởi tác giả" + user_suspended: "người dùng đã bị tạm khóa" + already_read: "người dùng đã đọc bài viết này" + message_blank: "tin nhắn rỗng" + message_to_blank: "message.to rỗng" + text_part_body_blank: "text_part.body rỗng" + body_blank: "nội dung rỗng" + color_schemes: + base_theme_name: "Cơ bản" + about: "Giới thiệu" + guidelines: "Hướng dẫn" + privacy: "Riêng tư" + edit_this_page: "Sửa trang này" + csv_export: + boolean_yes: "Đồng ý" + boolean_no: "Không" + guidelines_topic: + title: "FAQ/Hướng dẫn" + tos_topic: + title: "Điều khoản Dịch vụ" + privacy_topic: + title: "Chính sách Riêng tư" + admin_login: + success: "Gửi mail lỗi" + error: "Lỗi!" + email_input: "Email quản trị" + submit_button: "Gửi email" + performance_report: + initial_topic_title: Báo cáo hiệu suất website + time: + <<: *datetime_formats + activemodel: + errors: + <<: *errors diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml index 0fed9c04997..79675ff93b9 100644 --- a/config/locales/server.zh_CN.yml +++ b/config/locales/server.zh_CN.yml @@ -10,18 +10,41 @@ zh_CN: short_date_no_year: "MMMDo" short_date: "ll" long_date: "lll" + datetime_formats: &datetime_formats + formats: + short: "%Y 年 %-m 月 %-d 日" + short_no_year: "%-m 月 %-d 日" + date_only: "%Y 年 %-m 月 %-d 日" + date: + month_names: [null, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月] + <<: *datetime_formats title: "Discourse" topics: "主题列表" posts: "帖子" loading: "载入中" powered_by_html: '采用 Discourse,启用 JavaScript 以获得最佳效果' log_in: "登录" - via: "%{username} 自 %{site_name}" - is_reserved: "保留权利" purge_reason: "自动删除被遗弃、未激活账户" disable_remote_images_download_reason: "磁盘空间不足,远程图像下载已经被禁用。" anonymous: "匿名" - errors: + emails: + incoming: + default_subject: "来自%{email}的邮件" + show_trimmed_content: "显示被截短的内容" + errors: + empty_email_error: "当收到空白邮件时发生" + no_message_id_error: "当邮件头部没有 “Message-Id” 时发生" + auto_generated_email_error: "当邮件头部没有设置 “ precedence” 为:list、junk、bulk 或 auto_reply,或者当头部包含了:auto-submitted、auto-replied 或 auto-generated" + no_body_detected_error: "当无法提取内容或者没有附件时发生。" + inactive_user_error: "当发送者不活跃时发生。" + blocked_user_error: "当发送者被封禁时发生。" + bad_destination_address: "当发至/抄送/密送栏中的所有邮件都不匹配进站邮件地址时发生。" + strangers_not_allowed_error: "当用户尝试在他们不是成员的分类中创建主题时发生。" + insufficient_trust_level_error: "当用户尝试在用户等级不满足分类要求时发帖时发生。" + reply_user_not_matching_error: "当回复来自与通知发送至的邮件地址不同时发生。" + topic_not_found_error: "当回复到已经删除的相关主题时发生。" + topic_closed_error: "当回复到已经关闭的相关主题时发生。" + errors: &errors format: '%{attribute} %{message}' messages: too_long_validation: "最多只能有 %{max} 个字符;你已经输入了 %{length} 个字符。" @@ -37,8 +60,10 @@ zh_CN: exclusion: 被保留 greater_than: 必须大于 %{count} greater_than_or_equal_to: 必须大于或等于 %{count} + has_already_been_used: "已经被使用" inclusion: 不包括在列表中 invalid: 无效 + is_invalid: "无效;请描述得更详尽些" less_than: 必须小于 %{count} less_than_or_equal_to: 必须小于等于 %{count} not_a_number: 不是数字 @@ -78,6 +103,8 @@ zh_CN: not_found: "请求的 URL 或资源未找到。" invalid_access: "你没有权限查看请求的资源。" read_only_mode_enabled: "这个站点正处于只读模式。交互功能已禁用。" + reading_time: "阅读时间" + likes: "赞" too_many_replies: other: "我们非常抱歉,但是新用户被临时限制为在同一个主题只能回复 %{count} 次" embed: @@ -91,25 +118,20 @@ zh_CN: in_reply_to: "▶ %{username}" replies: other: "%{count} 个回复" + no_mentions_allowed: "抱歉,你无法提到其他用户。" too_many_mentions: - zero: "抱歉,你无法提到其他用户。" - one: "抱歉,你一次仅能提到 1 个用户。" other: "抱歉,你一次仅能提到 %{count} 个用户。" + no_mentions_allowed_newuser: "抱歉,游客无法@用户。" too_many_mentions_newuser: - zero: "抱歉,新用户不能提到其他用户。" - one: "抱歉,新用户仅能提到 1 个用户。" - other: "抱歉,新用户仅能提到 %{count} 个用户。" + other: "抱歉,游客一次仅能@ %{count} 个用户。" + no_images_allowed: "抱歉,游客无法贴图。" too_many_images: - zero: "抱歉,新用户无法贴图。" - one: "抱歉,新用户一次仅能贴 1 张图。" - other: "抱歉,新用户一次仅能贴 %{count} 张图。" + other: "抱歉,游客一次仅能贴 %{count} 张图。" + no_attachments_allowed: "抱歉,新用户无法上传附件。" too_many_attachments: - zero: "抱歉,新用户无法上传附件。" - one: "抱歉,新用户一次仅能上传 1 个附件。" other: "抱歉,新用户一次仅能上传 %{count} 个附件。" + no_links_allowed: "抱歉,游客无法贴链接。" too_many_links: - zero: "抱歉,游客无法贴链接。" - one: "抱歉,游客一次仅能贴 1 条链接。" other: "抱歉,游客一次仅能贴 %{count} 条链接。" spamming_host: "抱歉,你不能添加一个链接到那个地址的链接。" user_is_suspended: "被封禁的用户不允许发贴。" @@ -133,8 +155,15 @@ zh_CN: rss_description: latest: "最新主题" hot: "最热主题" + top: "热门主题" posts: "最新帖子" + private_posts: "最近的私信" + group_posts: "%{group_name}组最近的帖子" + group_mentions: "%{group_name}组最近的提及" + user_posts: "最新贴子由@%{username}发表" + user_topics: "最新主题由@%{username}发表" too_late_to_edit: "这个主题在很早之前创建。不能被编辑或者被删除。" + revert_version_same: "目前的版本和你想要回退至的版本一样。" excerpt_image: "图片" queue: delete_reason: "通过帖子审核队列删除" @@ -142,11 +171,15 @@ zh_CN: errors: can_not_modify_automatic: "你不能修改一个自动组" member_already_exist: "“%{username}”已经是群组成员了。" + invalid_domain: "'%{domain}'不是一个有效域名。" + invalid_incoming_email: "'%{email}' 不是一个有效邮箱地址。" + email_already_used_in_group: "'%{email}' 已经被群组'%{group_name}'使用了。" + email_already_used_in_category: "'%{email}' 已经被分类'%{category_name}'使用了。" default_names: everyone: "任何人" admins: "管理面板" moderators: "版主" - staff: "员工" + staff: "管理人员" trust_level_0: "trust_level_0" trust_level_1: "trust_level_1" trust_level_2: "trust_level_2" @@ -218,9 +251,6 @@ zh_CN: user_profile: bio_raw: "关于我" errors: - messages: - is_invalid: "无效;试试写的更明确一些吧" - has_already_been_used: "已经被使用" models: topic: attributes: @@ -241,6 +271,7 @@ zh_CN: attributes: hex: invalid: "不是有效颜色值" + <<: *errors user_profile: no_info_me: "-
-
order:views | order:latest | order:likes | |||
status:open | status:closed | status:archived | status:noreplies | status:single_user | |
category:foo | user:foo | group:foo | badge:foo | ||
in:likes | in:posted | in:watching | in:tracking | in:private | |
in:bookmarks | in:first | ||||
posts_count:num | min_age:days | max_age:days |
彩虹 category:公园 status:open order:latest
将搜索在“公园”分类中没有关闭或存档中的名字包含“彩虹”的主题,并按最后一个帖子的日期来排序。
\n
\n
order:views(按照显示次数排序) | order:latest(按照更新时间排序) | order:likes(按照赞的次数排序) | |||
status:open(搜索正常状态的主题) | status:closed(搜索已经关闭的主题) | status:archived(搜索已经存档的主题) | status:noreplies(搜索没有回复的主题) | status:single_user(搜索单个用户的主题) | |
category:分类名 | user:用户名 | <;code>group:群组名 | <;td>|||
in:likes(在已经赞的帖子里搜索) | in:posted(在发表的帖子里搜索) | in:watching(在关注的帖子里搜索) | in:tracking(在追踪的帖子里搜索) | in:private(在私密的帖子里搜索) | |
in:bookmarks(在加书签的帖子里搜索) | in:first(在第一帖里搜索) | ||||
posts_count:数字(帖子数量) | before:天数或者日期 | after:天数或者日期 | \n
\n
彩虹 category:公园 status:open order:latest
将搜索在“公园”分类中没有关闭或存档中的名字包含“彩虹”的主题,并按最后一个帖子的日期来排序。彩虹 category:\"公园和花园\" in:bookmarks<;/code> 将搜索在“公园和花园”分类中已被你加过书签的且名字包含“彩虹”的主题。
or tags.
+ in_pre = false
+
+ # Here is the result stored in.
+ result = ""
+
+ # This is a cheat, used to get some context for one-character
+ # tokens that consist of just a quote char. What we do is remember
+ # the last character of the previous text token, to use as context
+ # to curl single- character quote tokens correctly.
+ prev_token_last_char = nil
+
+ tokens.each do |token|
+ if token.first == :tag
+ result << token[1]
+ if token[1] =~ %r!<(/?)(?:pre|code|kbd|script|math)[\s>]!
+ in_pre = ($1 != "/") # Opening or closing tag?
+ end
+ else
+ t = token[1]
+
+ # Remember last char of this token before processing.
+ last_char = t[-1].chr
+
+ unless in_pre
+
+ t.gsub!("'", "'")
+
+ t = process_escapes t
+
+ t.gsub!(""", '"')
+
+ if do_dashes
+ t = educate_dashes t if do_dashes == :normal
+ t = educate_dashes_oldschool t if do_dashes == :oldschool
+ t = educate_dashes_inverted t if do_dashes == :inverted
+ end
+
+ t = educate_ellipses t if do_ellipses
+
+ t = educate_fractions t
+
+ # Note: backticks need to be processed before quotes.
+ if do_backticks
+ t = educate_backticks t
+ t = educate_single_backticks t if do_backticks == :both
+ end
+
+ if do_quotes
+ if t == "'"
+ # Special case: single-character ' token
+ if prev_token_last_char =~ /\S/
+ t = entity(:single_right_quote)
+ else
+ t = entity(:single_left_quote)
+ end
+ elsif t == '"'
+ # Special case: single-character " token
+ if prev_token_last_char =~ /\S/
+ t = entity(:double_right_quote)
+ else
+ t = entity(:double_left_quote)
+ end
+ else
+ # Normal case:
+ t = educate_quotes t
+ end
+ end
+
+ t = stupefy_entities t if do_stupefy
+ end
+
+ prev_token_last_char = last_char
+ result << t
+ end
+ end
+
+ # Done
+ result
+ end
+
+ protected
+
+ # Return the string, with after processing the following backslash
+ # escape sequences. This is useful if you want to force a "dumb" quote
+ # or other character to appear.
+ #
+ # Escaped are:
+ # \\ \" \' \. \- \`
+ #
+ def process_escapes(str)
+ str = str.gsub('\\\\', '\')
+ str.gsub!('\"', '"')
+ str.gsub!("\\\'", ''')
+ str.gsub!('\.', '.')
+ str.gsub!('\-', '-')
+ str.gsub!('\`', '`')
+ str
+ end
+
+ # The string, with each instance of "--" translated to an
+ # em-dash HTML entity.
+ #
+ def educate_dashes(str)
+ str.
+ gsub(/--/, entity(:em_dash))
+ end
+
+ # The string, with each instance of "--" translated to an
+ # en-dash HTML entity, and each "---" translated to an
+ # em-dash HTML entity.
+ #
+ def educate_dashes_oldschool(str)
+ str.
+ gsub(/---/, entity(:em_dash)).
+ gsub(/--/, entity(:en_dash))
+ end
+
+ # Return the string, with each instance of "--" translated
+ # to an em-dash HTML entity, and each "---" translated to
+ # an en-dash HTML entity. Two reasons why: First, unlike the en- and
+ # em-dash syntax supported by +educate_dashes_oldschool+, it's
+ # compatible with existing entries written before SmartyPants 1.1,
+ # back when "--" was only used for em-dashes. Second,
+ # em-dashes are more common than en-dashes, and so it sort of makes
+ # sense that the shortcut should be shorter to type. (Thanks to
+ # Aaron Swartz for the idea.)
+ #
+ def educate_dashes_inverted(str)
+ str.
+ gsub(/---/, entity(:en_dash)).
+ gsub(/--/, entity(:em_dash))
+ end
+
+ # Return the string, with each instance of "..." translated
+ # to an ellipsis HTML entity. Also converts the case where there are
+ # spaces between the dots.
+ #
+ def educate_ellipses(str)
+ str.
+ gsub('...', entity(:ellipsis)).
+ gsub('. . .', entity(:ellipsis))
+ end
+
+ # Return the string, with "``backticks''"-style single quotes
+ # translated into HTML curly quote entities.
+ #
+ def educate_backticks(str)
+ str.
+ gsub("``", entity(:double_left_quote)).
+ gsub("''", entity(:double_right_quote))
+ end
+
+ # Return the string, with "`backticks'"-style single quotes
+ # translated into HTML curly quote entities.
+ #
+ def educate_single_backticks(str)
+ str.
+ gsub("`", entity(:single_left_quote)).
+ gsub("'", entity(:single_right_quote))
+ end
+
+ def educate_fractions(str)
+ str.gsub(/(\s+|^)(1\/4|1\/2|3\/4)([,.;\s]|$)/) do
+ frac =
+ if $2 == "1/2".freeze
+ entity(:frac12)
+ elsif $2 == "1/4".freeze
+ entity(:frac14)
+ elsif $2 == "3/4".freeze
+ entity(:frac34)
+ end
+ "#{$1}#{frac}#{$3}"
+ end
+ end
+
+ # Return the string, with "educated" curly quote HTML entities.
+ #
+ def educate_quotes(str)
+ punct_class = '[!"#\$\%\'()*+,\-.\/:;<=>?\@\[\\\\\]\^_`{|}~]'
+
+ # normalize html
+ str = str.dup
+ # Special case if the very first character is a quote followed by
+ # punctuation at a non-word-break. Close the quotes by brute
+ # force:
+ str.gsub!(/^'(?=#{punct_class}\B)/,
+ entity(:single_right_quote))
+ str.gsub!(/^"(?=#{punct_class}\B)/,
+ entity(:double_right_quote))
+
+ # Special case for double sets of quotes, e.g.:
+ # He said, "'Quoted' words in a larger quote."
+ str.gsub!(/"'(?=\w)/,
+ "#{entity(:double_left_quote)}#{entity(:single_left_quote)}")
+ str.gsub!(/'"(?=\w)/,
+ "#{entity(:single_left_quote)}#{entity(:double_left_quote)}")
+
+ # Special case for decade abbreviations (the '80s):
+ str.gsub!(/'(?=\d\ds)/,
+ entity(:single_right_quote))
+
+ close_class = %![^\ \t\r\n\\[\{\(\-]!
+ dec_dashes = "#{entity(:en_dash)}|#{entity(:em_dash)}"
+
+ # Get most opening single quotes:
+ str.gsub!(/(\s| |=|--|&[mn]dash;|#{dec_dashes}|ȁ[34];)'(?=\w)/,
+ '\1' + entity(:single_left_quote))
+
+ # Single closing quotes:
+ str.gsub!(/(#{close_class})'/,
+ '\1' + entity(:single_right_quote))
+ str.gsub!(/'(\s|s\b|$)/,
+ entity(:single_right_quote) + '\1')
+
+ # Any remaining single quotes should be opening ones:
+ str.gsub!(/'/,
+ entity(:single_left_quote))
+
+ # Get most opening double quotes:
+ str.gsub!(/(\s| |=|--|&[mn]dash;|#{dec_dashes}|ȁ[34];)"(?=\w)/,
+ '\1' + entity(:double_left_quote))
+
+ # Double closing quotes:
+ str.gsub!(/(#{close_class})"/,
+ '\1' + entity(:double_right_quote))
+ str.gsub!(/"(\s|s\b|$)/,
+ entity(:double_right_quote) + '\1')
+
+ # Any remaining quotes should be opening ones:
+ str.gsub!(/"/,
+ entity(:double_left_quote))
+
+ str
+ end
+
+ # Return the string, with each RubyPants HTML entity translated to
+ # its ASCII counterpart.
+ #
+ # Note: This is not reversible (but exactly the same as in SmartyPants)
+ #
+ def stupefy_entities(str)
+ new_str = str.dup
+
+ {
+ :en_dash => '-',
+ :em_dash => '--',
+ :single_left_quote => "'",
+ :single_right_quote => "'",
+ :double_left_quote => '"',
+ :double_right_quote => '"',
+ :ellipsis => '...'
+ }.each do |k,v|
+ new_str.gsub!(/#{entity(k)}/, v)
+ end
+
+ new_str
+ end
+
+ # Return an array of the tokens comprising the string. Each token is
+ # either a tag (possibly with nested, tags contained therein, such
+ # as , or a run of text between
+ # tags. Each element of the array is a two-element array; the first
+ # is either :tag or :text; the second is the actual value.
+ #
+ # Based on the _tokenize() subroutine from Brad Choate's
+ # MTRegex plugin.
+ #
+ # This is actually the easier variant using tag_soup, as used by
+ # Chad Miller in the Python port of SmartyPants.
+ #
+ def tokenize
+ tag_soup = /([^<]*)(<[^>]*>)/
+
+ tokens = []
+
+ prev_end = 0
+
+ scan(tag_soup) do
+ tokens << [:text, $1] if $1 != ""
+ tokens << [:tag, $2]
+ prev_end = $~.end(0)
+ end
+
+ if prev_end < size
+ tokens << [:text, self[prev_end..-1]]
+ end
+
+ tokens
+ end
+
+ def default_entities
+ {
+ single_left_quote: "‘",
+ double_left_quote: "“",
+ single_right_quote: "’",
+ double_right_quote: "”",
+ em_dash: "—",
+ en_dash: "–",
+ ellipsis: "…",
+ html_quote: """,
+ frac12: "½",
+ frac14: "¼",
+ frac34: "¾",
+ }
+ end
+
+ def entity(key)
+ @entities[key]
+ end
+
+end
diff --git a/lib/i18n/backend/discourse_i18n.rb b/lib/i18n/backend/discourse_i18n.rb
new file mode 100644
index 00000000000..8b2ea237598
--- /dev/null
+++ b/lib/i18n/backend/discourse_i18n.rb
@@ -0,0 +1,104 @@
+require 'i18n/backend/pluralization'
+
+module I18n
+ module Backend
+ class DiscourseI18n < I18n::Backend::Simple
+ include I18n::Backend::Fallbacks
+ include I18n::Backend::Pluralization
+
+ def available_locales
+ # in case you are wondering this is:
+ # Dir.glob( File.join(Rails.root, 'config', 'locales', 'client.*.yml') )
+ # .map {|x| x.split('.')[-2]}.sort
+ LocaleSiteSetting.supported_locales.map(&:to_sym)
+ end
+
+ def reload!
+ @overrides = {}
+ @pluralizers = {}
+ super
+ end
+
+ # force explicit loading
+ def load_translations(*filenames)
+ unless filenames.empty?
+ filenames.flatten.each { |filename| load_file(filename) }
+ end
+ end
+
+ def fallbacks(locale)
+ [locale, SiteSetting.default_locale.to_sym, :en].uniq.compact
+ end
+
+ def exists?(locale, key)
+ fallbacks(locale).each do |fallback|
+ begin
+ return true if super(fallback, key)
+ rescue I18n::InvalidLocale
+ # we do nothing when the locale is invalid, as this is a fallback anyways.
+ end
+ end
+
+ false
+ end
+
+ def search(locale, query)
+ results = {}
+
+ fallbacks(locale).each do |fallback|
+ find_results(/#{query}/i, results, translations[fallback])
+ end
+
+ results
+ end
+
+ protected
+ def find_results(regexp, results, translations, path=nil)
+ return results if translations.blank?
+
+ translations.each do |k_sym, v|
+ k = k_sym.to_s
+ key_path = path ? "#{path}.#{k}" : k
+ if v.is_a?(String)
+ unless results.has_key?(key_path)
+ results[key_path] = v if key_path =~ regexp || v =~ regexp
+ end
+ elsif v.is_a?(Hash)
+ find_results(regexp, results, v, key_path)
+ end
+ end
+ results
+ end
+
+ # Support interpolation and pluralization of overrides by first looking up
+ # the original translations before applying our overrides.
+ def lookup(locale, key, scope = [], options = {})
+ existing_translations = super(locale, key, scope, options)
+
+ if options[:overrides] && existing_translations
+ if options[:count]
+
+ remapped_translations =
+ if existing_translations.is_a?(Hash)
+ Hash[existing_translations.map { |k, v| ["#{key}.#{k}", v] }]
+ elsif existing_translations.is_a?(String)
+ Hash[[[key, existing_translations]]]
+ end
+
+ result = {}
+
+ remapped_translations.merge(options[:overrides]).each do |k, v|
+ result[k.split('.').last.to_sym] = v if k != key && k.start_with?(key.to_s)
+ end
+ return result if result.size > 0
+ end
+
+ return options[:overrides][key] if options[:overrides][key]
+ end
+
+ existing_translations
+ end
+
+ end
+ end
+end
diff --git a/lib/import_export/category_exporter.rb b/lib/import_export/category_exporter.rb
new file mode 100644
index 00000000000..4036ed783f4
--- /dev/null
+++ b/lib/import_export/category_exporter.rb
@@ -0,0 +1,89 @@
+module ImportExport
+ class CategoryExporter
+
+ attr_reader :export_data
+
+ def initialize(category_id)
+ @category = Category.find(category_id)
+ @subcategories = Category.where(parent_category_id: category_id)
+ @export_data = {
+ users: [],
+ groups: [],
+ category: nil,
+ subcategories: [],
+ topics: []
+ }
+ end
+
+ def perform
+ puts "Exporting category #{@category.name}...", ""
+ export_categories
+ export_topics_and_users
+ self
+ end
+
+
+ CATEGORY_ATTRS = [:id, :name, :color, :created_at, :user_id, :slug, :description, :text_color,
+ :auto_close_hours, :logo_url, :background_url, :auto_close_based_on_last_post,
+ :topic_template, :suppress_from_homepage, :permissions_params]
+
+ def export_categories
+ @export_data[:category] = CATEGORY_ATTRS.inject({}) { |h,a| h[a] = @category.send(a); h }
+ @subcategories.find_each do |subcat|
+ @export_data[:subcategories] << CATEGORY_ATTRS.inject({}) { |h,a| h[a] = subcat.send(a); h }
+ end
+
+ # export groups that are mentioned in category permissions
+ group_names = []
+ auto_group_names = Group::AUTO_GROUPS.keys.map(&:to_s)
+
+ ([@export_data[:category]] + @export_data[:subcategories]).each do |c|
+ c[:permissions_params].each do |group_name, _|
+ group_names << group_name unless auto_group_names.include?(group_name.to_s)
+ end
+ end
+
+ group_names.uniq!
+ export_groups(group_names) unless group_names.empty?
+
+ self
+ end
+
+
+ GROUP_ATTRS = [ :id, :name, :created_at, :alias_level, :visible,
+ :automatic_membership_email_domains, :automatic_membership_retroactive,
+ :primary_group, :title, :grant_trust_level, :incoming_email]
+
+ def export_groups(group_names)
+ group_names.each do |name|
+ group = Group.find_by_name(name)
+ group_attrs = GROUP_ATTRS.inject({}) { |h,a| h[a] = group.send(a); h }
+ group_attrs[:user_ids] = group.users.pluck(:id)
+ @export_data[:groups] << group_attrs
+ end
+
+ self
+ end
+
+ def export_topics_and_users
+ all_category_ids = [@category.id] + @subcategories.pluck(:id)
+ description_topic_ids = Category.where(id: all_category_ids).pluck(:topic_id)
+ topic_exporter = ImportExport::TopicExporter.new(Topic.where(category_id: all_category_ids).pluck(:id) - description_topic_ids)
+ topic_exporter.perform
+ @export_data[:users] = topic_exporter.export_data[:users]
+ @export_data[:topics] = topic_exporter.export_data[:topics]
+ self
+ end
+
+ def save_to_file(filename=nil)
+ require 'json'
+ output_basename = filename || File.join("category-export-#{Time.now.strftime("%Y-%m-%d-%H%M%S")}.json")
+ File.open(output_basename, "w:UTF-8") do |f|
+ f.write(@export_data.to_json)
+ end
+ puts "Export saved to #{output_basename}"
+ output_basename
+ end
+
+ end
+end
diff --git a/lib/import_export/category_importer.rb b/lib/import_export/category_importer.rb
new file mode 100644
index 00000000000..9b21b7aa265
--- /dev/null
+++ b/lib/import_export/category_importer.rb
@@ -0,0 +1,83 @@
+require File.join(Rails.root, 'script', 'import_scripts', 'base.rb')
+
+module ImportExport
+ class CategoryImporter < ImportScripts::Base
+ def initialize(export_data)
+ @export_data = export_data
+ @topic_importer = TopicImporter.new(@export_data)
+ end
+
+ def perform
+ RateLimiter.disable
+
+ import_users
+ import_groups
+ import_categories
+ import_topics
+ self
+ ensure
+ RateLimiter.enable
+ end
+
+ def import_groups
+ return if @export_data[:groups].empty?
+
+ @export_data[:groups].each do |group_data|
+ g = group_data.dup
+ user_ids = g.delete(:user_ids)
+ external_id = g.delete(:id)
+ new_group = Group.find_by_name(g[:name]) || Group.create!(g)
+ user_ids.each do |external_user_id|
+ new_group.add( User.find(@topic_importer.new_user_id(external_user_id)) ) rescue ActiveRecord::RecordNotUnique
+ end
+ end
+ end
+
+ def import_users
+ @topic_importer.import_users
+ end
+
+ def import_categories
+ id = @export_data[:category].delete(:id)
+
+ parent = CategoryCustomField.where(name: 'import_id', value: id.to_s).first.try(:category)
+
+ unless parent
+ permissions = @export_data[:category].delete(:permissions_params)
+ parent = Category.new(@export_data[:category])
+ parent.user_id = @topic_importer.new_user_id(@export_data[:category][:user_id]) # imported user's new id
+ parent.custom_fields["import_id"] = id
+ parent.permissions = permissions if permissions
+ parent.save!
+ set_category_description(parent, @export_data[:category][:description])
+ end
+
+ @export_data[:subcategories].each do |cat_attrs|
+ id = cat_attrs.delete(:id)
+ existing = CategoryCustomField.where(name: 'import_id', value: id.to_s).first.try(:category)
+
+ unless existing
+ permissions = cat_attrs.delete(:permissions_params)
+ subcategory = Category.new(cat_attrs)
+ subcategory.parent_category_id = parent.id
+ subcategory.user_id = @topic_importer.new_user_id(cat_attrs[:user_id])
+ subcategory.custom_fields["import_id"] = id
+ subcategory.permissions = permissions if permissions
+ subcategory.save!
+ set_category_description(subcategory, cat_attrs[:description])
+ end
+ end
+ end
+
+ def set_category_description(c, description)
+ post = c.topic.ordered_posts.first
+ post.raw = description
+ post.save!
+ post.rebake!
+ end
+
+ def import_topics
+ @topic_importer.import_topics
+ end
+ end
+end
diff --git a/lib/import_export/import_export.rb b/lib/import_export/import_export.rb
new file mode 100644
index 00000000000..4bb6fa9250d
--- /dev/null
+++ b/lib/import_export/import_export.rb
@@ -0,0 +1,26 @@
+require "import_export/category_exporter"
+require "import_export/category_importer"
+require "import_export/topic_exporter"
+require "import_export/topic_importer"
+require "json"
+
+module ImportExport
+
+ def self.export_category(category_id, filename=nil)
+ ImportExport::CategoryExporter.new(category_id).perform.save_to_file(filename)
+ end
+
+ def self.import_category(filename)
+ export_data = ActiveSupport::HashWithIndifferentAccess.new(File.open(filename, "r:UTF-8") { |f| JSON.parse(f.read) })
+ ImportExport::CategoryImporter.new(export_data).perform
+ end
+
+ def self.export_topics(topic_ids)
+ ImportExport::TopicExporter.new(topic_ids).perform.save_to_file
+ end
+
+ def self.import_topics(filename)
+ export_data = ActiveSupport::HashWithIndifferentAccess.new(File.open(filename, "r:UTF-8") { |f| JSON.parse(f.read) })
+ ImportExport::TopicImporter.new(export_data).perform
+ end
+end
diff --git a/lib/import_export/topic_exporter.rb b/lib/import_export/topic_exporter.rb
new file mode 100644
index 00000000000..78b4dc4d9eb
--- /dev/null
+++ b/lib/import_export/topic_exporter.rb
@@ -0,0 +1,96 @@
+module ImportExport
+ class TopicExporter
+
+ attr_reader :exported_user_ids, :export_data
+
+ def initialize(topic_ids)
+ @topic_ids = topic_ids
+ @exported_user_ids = []
+ @export_data = {
+ users: [],
+ topics: []
+ }
+ end
+
+ def perform
+ export_users
+ export_topics
+ # TODO: user actions
+
+ self
+ end
+
+
+ USER_ATTRS = [:id, :email, :username, :name, :created_at, :trust_level, :active, :last_emailed_at]
+
+ def export_users
+ # TODO: avatar
+
+ @exported_user_ids = []
+ @topic_ids.each do |topic_id|
+ t = Topic.find(topic_id)
+ t.posts.includes(user: [:user_profile]).find_each do |post|
+ u = post.user
+ unless @exported_user_ids.include?(u.id)
+ x = USER_ATTRS.inject({}) { |h, a| h[a] = u.send(a); h; }
+ @export_data[:users] << x.merge({
+ bio_raw: u.user_profile.bio_raw,
+ website: u.user_profile.website,
+ location: u.user_profile.location
+ })
+ @exported_user_ids << u.id
+ end
+ end
+ end
+
+ self
+ end
+
+
+ def export_topics
+ @topic_ids.each do |topic_id|
+ t = Topic.find(topic_id)
+ puts t.title
+ export_topic(t)
+ end
+ puts ""
+ end
+
+
+ TOPIC_ATTRS = [:id, :title, :created_at, :views, :category_id, :closed, :archived, :archetype]
+ POST_ATTRS = [:id, :user_id, :post_number, :raw, :created_at, :reply_to_post_number,
+ :hidden, :hidden_reason_id, :wiki]
+
+ def export_topic(topic)
+ topic_data = {}
+
+ TOPIC_ATTRS.each do |a|
+ topic_data[a] = topic.send(a)
+ end
+
+ topic_data[:posts] = []
+
+ topic.ordered_posts.find_each do |post|
+ h = POST_ATTRS.inject({}) { |h, a| h[a] = post.send(a); h; }
+ h[:raw] = h[:raw].gsub('src="/uploads', "src=\"#{Discourse.base_url_no_prefix}/uploads")
+ topic_data[:posts] << h
+ end
+
+ @export_data[:topics] << topic_data
+
+ self
+ end
+
+
+ def save_to_file(filename=nil)
+ require 'json'
+ output_basename = filename || File.join("topic-export-#{Time.now.strftime("%Y-%m-%d-%H%M%S")}.json")
+ File.open(output_basename, "w:UTF-8") do |f|
+ f.write(@export_data.to_json)
+ end
+ puts "Export saved to #{output_basename}"
+ output_basename
+ end
+
+ end
+end
diff --git a/lib/import_export/topic_importer.rb b/lib/import_export/topic_importer.rb
new file mode 100644
index 00000000000..e7fc2d8f365
--- /dev/null
+++ b/lib/import_export/topic_importer.rb
@@ -0,0 +1,78 @@
+require File.join(Rails.root, 'script', 'import_scripts', 'base.rb')
+
+module ImportExport
+ class TopicImporter < ImportScripts::Base
+ def initialize(export_data)
+ @export_data = export_data
+ end
+
+ def perform
+ RateLimiter.disable
+
+ import_users
+ import_topics
+ self
+ ensure
+ RateLimiter.enable
+ end
+
+ def import_users
+ @export_data[:users].each do |u|
+ existing = User.where(email: u[:email]).first
+ if existing
+ if existing.custom_fields["import_id"] != u[:id]
+ existing.custom_fields["import_id"] = u[:id]
+ existing.save!
+ end
+ else
+ u = create_user(u, u[:id]) # see ImportScripts::Base
+ end
+ end
+ self
+ end
+
+ def import_topics
+ @export_data[:topics].each do |t|
+ puts ""
+ print t[:title]
+
+ first_post_attrs = t[:posts].first.merge( t.slice(*(TopicExporter::TOPIC_ATTRS - [:id, :category_id])) )
+ first_post_attrs[:user_id] = new_user_id(first_post_attrs[:user_id])
+ first_post_attrs[:category] = new_category_id(t[:category_id])
+
+ first_post = PostCustomField.where(name: "import_id", value: first_post_attrs[:id]).first.try(:post)
+
+ unless first_post
+ first_post = create_post( first_post_attrs, first_post_attrs[:id] )
+ end
+
+ topic_id = first_post.topic_id
+
+ t[:posts].each_with_index do |post_data, i|
+ next if i == 0
+ print "."
+ existing = PostCustomField.where(name: "import_id", value: post_data[:id]).first.try(:post)
+ unless existing
+ create_post(post_data.merge({
+ topic_id: topic_id,
+ user_id: new_user_id(post_data[:user_id])
+ }), post_data[:id]) # see ImportScripts::Base
+ end
+ end
+ end
+
+ puts ""
+
+ self
+ end
+
+ def new_user_id(external_user_id)
+ ucf = UserCustomField.where(name: "import_id", value: external_user_id.to_s).first
+ ucf ? ucf.user_id : Discourse::SYSTEM_USER_ID
+ end
+
+ def new_category_id(external_category_id)
+ CategoryCustomField.where(name: "import_id", value: external_category_id).first.category_id rescue nil
+ end
+ end
+end
diff --git a/lib/javascripts/locale/fa_IR.js b/lib/javascripts/locale/fa_IR.js
new file mode 100644
index 00000000000..a830b2cdc16
--- /dev/null
+++ b/lib/javascripts/locale/fa_IR.js
@@ -0,0 +1,3 @@
+MessageFormat.locale.fa_IR = function ( n ) {
+ return "other";
+};
diff --git a/lib/javascripts/locale/pl_PL.js b/lib/javascripts/locale/pl_PL.js
new file mode 100644
index 00000000000..05437893163
--- /dev/null
+++ b/lib/javascripts/locale/pl_PL.js
@@ -0,0 +1,15 @@
+MessageFormat.locale.pl_PL = function (n) {
+ if (n == 1) {
+ return 'one';
+ }
+ if ((n % 10) >= 2 && (n % 10) <= 4 &&
+ ((n % 100) < 12 || (n % 100) > 14) && n == Math.floor(n)) {
+ return 'few';
+ }
+ if ((n % 10) === 0 || n != 1 && (n % 10) == 1 ||
+ ((n % 10) >= 5 && (n % 10) <= 9 || (n % 100) >= 12 && (n % 100) <= 14) &&
+ n == Math.floor(n)) {
+ return 'many';
+ }
+ return 'other';
+};
diff --git a/lib/javascripts/locale/tr_TR.js b/lib/javascripts/locale/tr_TR.js
new file mode 100644
index 00000000000..83d9c02c960
--- /dev/null
+++ b/lib/javascripts/locale/tr_TR.js
@@ -0,0 +1,3 @@
+MessageFormat.locale.tr_TR = function(n) {
+ return 'other';
+};
diff --git a/lib/javascripts/moment.js b/lib/javascripts/moment.js
index 03a2460105d..7299fa45c2a 100644
--- a/lib/javascripts/moment.js
+++ b/lib/javascripts/moment.js
@@ -1,468 +1,165 @@
//! moment.js
-//! version : 2.8.1
+//! version : 2.11.2
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
-(function (undefined) {
- /************************************
- Constants
- ************************************/
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ global.moment = factory()
+}(this, function () { 'use strict';
- var moment,
- VERSION = '2.8.1',
- // the global-scope this is NOT the global object in Node.js
- globalScope = typeof global !== 'undefined' ? global : this,
- oldGlobalMoment,
- round = Math.round,
- i,
+ var hookCallback;
- YEAR = 0,
- MONTH = 1,
- DATE = 2,
- HOUR = 3,
- MINUTE = 4,
- SECOND = 5,
- MILLISECOND = 6,
+ function utils_hooks__hooks () {
+ return hookCallback.apply(null, arguments);
+ }
- // internal storage for locale config files
- locales = {},
+ // This is done to register the method called with moment()
+ // without creating circular dependencies.
+ function setHookCallback (callback) {
+ hookCallback = callback;
+ }
- // extra moment internal properties (plugins register props here)
- momentProperties = [],
+ function isArray(input) {
+ return Object.prototype.toString.call(input) === '[object Array]';
+ }
- // check for nodeJS
- hasModule = (typeof module !== 'undefined' && module.exports),
+ function isDate(input) {
+ return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
+ }
- // ASP.NET json date format regex
- aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
- aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
-
- // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
- // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
- isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
-
- // format tokens
- formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
- localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,
-
- // parsing token regexes
- parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
- parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
- parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999
- parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
- parseTokenDigits = /\d+/, // nonzero number of digits
- parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
- parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
- parseTokenT = /T/i, // T (ISO separator)
- parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
- parseTokenOrdinal = /\d{1,2}/,
-
- //strict parsing regexes
- parseTokenOneDigit = /\d/, // 0 - 9
- parseTokenTwoDigits = /\d\d/, // 00 - 99
- parseTokenThreeDigits = /\d{3}/, // 000 - 999
- parseTokenFourDigits = /\d{4}/, // 0000 - 9999
- parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999
- parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf
-
- // iso 8601 regex
- // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
- isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-
- isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
-
- isoDates = [
- ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
- ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
- ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
- ['GGGG-[W]WW', /\d{4}-W\d{2}/],
- ['YYYY-DDD', /\d{4}-\d{3}/]
- ],
-
- // iso time formats and regexes
- isoTimes = [
- ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
- ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
- ['HH:mm', /(T| )\d\d:\d\d/],
- ['HH', /(T| )\d\d/]
- ],
-
- // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"]
- parseTimezoneChunker = /([\+\-]|\d\d)/gi,
-
- // getter and setter names
- proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'),
- unitMillisecondFactors = {
- 'Milliseconds' : 1,
- 'Seconds' : 1e3,
- 'Minutes' : 6e4,
- 'Hours' : 36e5,
- 'Days' : 864e5,
- 'Months' : 2592e6,
- 'Years' : 31536e6
- },
-
- unitAliases = {
- ms : 'millisecond',
- s : 'second',
- m : 'minute',
- h : 'hour',
- d : 'day',
- D : 'date',
- w : 'week',
- W : 'isoWeek',
- M : 'month',
- Q : 'quarter',
- y : 'year',
- DDD : 'dayOfYear',
- e : 'weekday',
- E : 'isoWeekday',
- gg: 'weekYear',
- GG: 'isoWeekYear'
- },
-
- camelFunctions = {
- dayofyear : 'dayOfYear',
- isoweekday : 'isoWeekday',
- isoweek : 'isoWeek',
- weekyear : 'weekYear',
- isoweekyear : 'isoWeekYear'
- },
-
- // format function strings
- formatFunctions = {},
-
- // default relative time thresholds
- relativeTimeThresholds = {
- s: 45, // seconds to minute
- m: 45, // minutes to hour
- h: 22, // hours to day
- d: 26, // days to month
- M: 11 // months to year
- },
-
- // tokens to ordinalize and pad
- ordinalizeTokens = 'DDD w W M D d'.split(' '),
- paddedTokens = 'M D H h m s w W'.split(' '),
-
- formatTokenFunctions = {
- M : function () {
- return this.month() + 1;
- },
- MMM : function (format) {
- return this.localeData().monthsShort(this, format);
- },
- MMMM : function (format) {
- return this.localeData().months(this, format);
- },
- D : function () {
- return this.date();
- },
- DDD : function () {
- return this.dayOfYear();
- },
- d : function () {
- return this.day();
- },
- dd : function (format) {
- return this.localeData().weekdaysMin(this, format);
- },
- ddd : function (format) {
- return this.localeData().weekdaysShort(this, format);
- },
- dddd : function (format) {
- return this.localeData().weekdays(this, format);
- },
- w : function () {
- return this.week();
- },
- W : function () {
- return this.isoWeek();
- },
- YY : function () {
- return leftZeroFill(this.year() % 100, 2);
- },
- YYYY : function () {
- return leftZeroFill(this.year(), 4);
- },
- YYYYY : function () {
- return leftZeroFill(this.year(), 5);
- },
- YYYYYY : function () {
- var y = this.year(), sign = y >= 0 ? '+' : '-';
- return sign + leftZeroFill(Math.abs(y), 6);
- },
- gg : function () {
- return leftZeroFill(this.weekYear() % 100, 2);
- },
- gggg : function () {
- return leftZeroFill(this.weekYear(), 4);
- },
- ggggg : function () {
- return leftZeroFill(this.weekYear(), 5);
- },
- GG : function () {
- return leftZeroFill(this.isoWeekYear() % 100, 2);
- },
- GGGG : function () {
- return leftZeroFill(this.isoWeekYear(), 4);
- },
- GGGGG : function () {
- return leftZeroFill(this.isoWeekYear(), 5);
- },
- e : function () {
- return this.weekday();
- },
- E : function () {
- return this.isoWeekday();
- },
- a : function () {
- return this.localeData().meridiem(this.hours(), this.minutes(), true);
- },
- A : function () {
- return this.localeData().meridiem(this.hours(), this.minutes(), false);
- },
- H : function () {
- return this.hours();
- },
- h : function () {
- return this.hours() % 12 || 12;
- },
- m : function () {
- return this.minutes();
- },
- s : function () {
- return this.seconds();
- },
- S : function () {
- return toInt(this.milliseconds() / 100);
- },
- SS : function () {
- return leftZeroFill(toInt(this.milliseconds() / 10), 2);
- },
- SSS : function () {
- return leftZeroFill(this.milliseconds(), 3);
- },
- SSSS : function () {
- return leftZeroFill(this.milliseconds(), 3);
- },
- Z : function () {
- var a = -this.zone(),
- b = '+';
- if (a < 0) {
- a = -a;
- b = '-';
- }
- return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2);
- },
- ZZ : function () {
- var a = -this.zone(),
- b = '+';
- if (a < 0) {
- a = -a;
- b = '-';
- }
- return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
- },
- z : function () {
- return this.zoneAbbr();
- },
- zz : function () {
- return this.zoneName();
- },
- X : function () {
- return this.unix();
- },
- Q : function () {
- return this.quarter();
- }
- },
-
- deprecations = {},
-
- lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];
-
- // Pick the first defined of two or three arguments. dfl comes from
- // default.
- function dfl(a, b, c) {
- switch (arguments.length) {
- case 2: return a != null ? a : b;
- case 3: return a != null ? a : b != null ? b : c;
- default: throw new Error('Implement me');
+ function map(arr, fn) {
+ var res = [], i;
+ for (i = 0; i < arr.length; ++i) {
+ res.push(fn(arr[i], i));
}
+ return res;
}
- function defaultParsingFlags() {
- // We need to deep clone this object, and es5 standard is not very
- // helpful.
- return {
- empty : false,
- unusedTokens : [],
- unusedInput : [],
- overflow : -2,
- charsLeftOver : 0,
- nullInput : false,
- invalidMonth : null,
- invalidFormat : false,
- userInvalidated : false,
- iso: false
- };
+ function hasOwnProp(a, b) {
+ return Object.prototype.hasOwnProperty.call(a, b);
}
- function printMsg(msg) {
- if (moment.suppressDeprecationWarnings === false &&
- typeof console !== 'undefined' && console.warn) {
- console.warn("Deprecation warning: " + msg);
- }
- }
-
- function deprecate(msg, fn) {
- var firstTime = true;
- return extend(function () {
- if (firstTime) {
- printMsg(msg);
- firstTime = false;
- }
- return fn.apply(this, arguments);
- }, fn);
- }
-
- function deprecateSimple(name, msg) {
- if (!deprecations[name]) {
- printMsg(msg);
- deprecations[name] = true;
- }
- }
-
- function padToken(func, count) {
- return function (a) {
- return leftZeroFill(func.call(this, a), count);
- };
- }
- function ordinalizeToken(func, period) {
- return function (a) {
- return this.localeData().ordinal(func.call(this, a), period);
- };
- }
-
- while (ordinalizeTokens.length) {
- i = ordinalizeTokens.pop();
- formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
- }
- while (paddedTokens.length) {
- i = paddedTokens.pop();
- formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
- }
- formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);
-
-
- /************************************
- Constructors
- ************************************/
-
- function Locale() {
- }
-
- // Moment prototype object
- function Moment(config, skipOverflow) {
- if (skipOverflow !== false) {
- checkOverflow(config);
- }
- copyConfig(this, config);
- this._d = new Date(+config._d);
- }
-
- // Duration Constructor
- function Duration(duration) {
- var normalizedInput = normalizeObjectUnits(duration),
- years = normalizedInput.year || 0,
- quarters = normalizedInput.quarter || 0,
- months = normalizedInput.month || 0,
- weeks = normalizedInput.week || 0,
- days = normalizedInput.day || 0,
- hours = normalizedInput.hour || 0,
- minutes = normalizedInput.minute || 0,
- seconds = normalizedInput.second || 0,
- milliseconds = normalizedInput.millisecond || 0;
-
- // representation for dateAddRemove
- this._milliseconds = +milliseconds +
- seconds * 1e3 + // 1000
- minutes * 6e4 + // 1000 * 60
- hours * 36e5; // 1000 * 60 * 60
- // Because of dateAddRemove treats 24 hours as different from a
- // day when working around DST, we need to store them separately
- this._days = +days +
- weeks * 7;
- // It is impossible translate months into days without knowing
- // which months you are are talking about, so we have to store
- // it separately.
- this._months = +months +
- quarters * 3 +
- years * 12;
-
- this._data = {};
-
- this._locale = moment.localeData();
-
- this._bubble();
- }
-
- /************************************
- Helpers
- ************************************/
-
-
function extend(a, b) {
for (var i in b) {
- if (b.hasOwnProperty(i)) {
+ if (hasOwnProp(b, i)) {
a[i] = b[i];
}
}
- if (b.hasOwnProperty('toString')) {
+ if (hasOwnProp(b, 'toString')) {
a.toString = b.toString;
}
- if (b.hasOwnProperty('valueOf')) {
+ if (hasOwnProp(b, 'valueOf')) {
a.valueOf = b.valueOf;
}
return a;
}
+ function create_utc__createUTC (input, format, locale, strict) {
+ return createLocalOrUTC(input, format, locale, strict, true).utc();
+ }
+
+ function defaultParsingFlags() {
+ // We need to deep clone this object.
+ return {
+ empty : false,
+ unusedTokens : [],
+ unusedInput : [],
+ overflow : -2,
+ charsLeftOver : 0,
+ nullInput : false,
+ invalidMonth : null,
+ invalidFormat : false,
+ userInvalidated : false,
+ iso : false
+ };
+ }
+
+ function getParsingFlags(m) {
+ if (m._pf == null) {
+ m._pf = defaultParsingFlags();
+ }
+ return m._pf;
+ }
+
+ function valid__isValid(m) {
+ if (m._isValid == null) {
+ var flags = getParsingFlags(m);
+ m._isValid = !isNaN(m._d.getTime()) &&
+ flags.overflow < 0 &&
+ !flags.empty &&
+ !flags.invalidMonth &&
+ !flags.invalidWeekday &&
+ !flags.nullInput &&
+ !flags.invalidFormat &&
+ !flags.userInvalidated;
+
+ if (m._strict) {
+ m._isValid = m._isValid &&
+ flags.charsLeftOver === 0 &&
+ flags.unusedTokens.length === 0 &&
+ flags.bigHour === undefined;
+ }
+ }
+ return m._isValid;
+ }
+
+ function valid__createInvalid (flags) {
+ var m = create_utc__createUTC(NaN);
+ if (flags != null) {
+ extend(getParsingFlags(m), flags);
+ }
+ else {
+ getParsingFlags(m).userInvalidated = true;
+ }
+
+ return m;
+ }
+
+ function isUndefined(input) {
+ return input === void 0;
+ }
+
+ // Plugins that add properties should also add the key here (null value),
+ // so we can properly clone ourselves.
+ var momentProperties = utils_hooks__hooks.momentProperties = [];
+
function copyConfig(to, from) {
var i, prop, val;
- if (typeof from._isAMomentObject !== 'undefined') {
+ if (!isUndefined(from._isAMomentObject)) {
to._isAMomentObject = from._isAMomentObject;
}
- if (typeof from._i !== 'undefined') {
+ if (!isUndefined(from._i)) {
to._i = from._i;
}
- if (typeof from._f !== 'undefined') {
+ if (!isUndefined(from._f)) {
to._f = from._f;
}
- if (typeof from._l !== 'undefined') {
+ if (!isUndefined(from._l)) {
to._l = from._l;
}
- if (typeof from._strict !== 'undefined') {
+ if (!isUndefined(from._strict)) {
to._strict = from._strict;
}
- if (typeof from._tzm !== 'undefined') {
+ if (!isUndefined(from._tzm)) {
to._tzm = from._tzm;
}
- if (typeof from._isUTC !== 'undefined') {
+ if (!isUndefined(from._isUTC)) {
to._isUTC = from._isUTC;
}
- if (typeof from._offset !== 'undefined') {
+ if (!isUndefined(from._offset)) {
to._offset = from._offset;
}
- if (typeof from._pf !== 'undefined') {
- to._pf = from._pf;
+ if (!isUndefined(from._pf)) {
+ to._pf = getParsingFlags(from);
}
- if (typeof from._locale !== 'undefined') {
+ if (!isUndefined(from._locale)) {
to._locale = from._locale;
}
@@ -470,7 +167,7 @@
for (i in momentProperties) {
prop = momentProperties[i];
val = from[prop];
- if (typeof val !== 'undefined') {
+ if (!isUndefined(val)) {
to[prop] = val;
}
}
@@ -479,7 +176,26 @@
return to;
}
- function absRound(number) {
+ var updateInProgress = false;
+
+ // Moment prototype object
+ function Moment(config) {
+ copyConfig(this, config);
+ this._d = new Date(config._d != null ? config._d.getTime() : NaN);
+ // Prevent infinite loop in case updateOffset creates new moment
+ // objects.
+ if (updateInProgress === false) {
+ updateInProgress = true;
+ utils_hooks__hooks.updateOffset(this);
+ updateInProgress = false;
+ }
+ }
+
+ function isMoment (obj) {
+ return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
+ }
+
+ function absFloor (number) {
if (number < 0) {
return Math.ceil(number);
} else {
@@ -487,91 +203,15 @@
}
}
- // left zero fill a number
- // see http://jsperf.com/left-zero-filling for performance comparison
- function leftZeroFill(number, targetLength, forceSign) {
- var output = '' + Math.abs(number),
- sign = number >= 0;
+ function toInt(argumentForCoercion) {
+ var coercedNumber = +argumentForCoercion,
+ value = 0;
- while (output.length < targetLength) {
- output = '0' + output;
- }
- return (sign ? (forceSign ? '+' : '') : '-') + output;
- }
-
- function positiveMomentsDifference(base, other) {
- var res = {milliseconds: 0, months: 0};
-
- res.months = other.month() - base.month() +
- (other.year() - base.year()) * 12;
- if (base.clone().add(res.months, 'M').isAfter(other)) {
- --res.months;
+ if (coercedNumber !== 0 && isFinite(coercedNumber)) {
+ value = absFloor(coercedNumber);
}
- res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
-
- return res;
- }
-
- function momentsDifference(base, other) {
- var res;
- other = makeAs(other, base);
- if (base.isBefore(other)) {
- res = positiveMomentsDifference(base, other);
- } else {
- res = positiveMomentsDifference(other, base);
- res.milliseconds = -res.milliseconds;
- res.months = -res.months;
- }
-
- return res;
- }
-
- // TODO: remove 'name' arg after deprecation is removed
- function createAdder(direction, name) {
- return function (val, period) {
- var dur, tmp;
- //invert the arguments, but complain about it
- if (period !== null && !isNaN(+period)) {
- deprecateSimple(name, "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period).");
- tmp = val; val = period; period = tmp;
- }
-
- val = typeof val === 'string' ? +val : val;
- dur = moment.duration(val, period);
- addOrSubtractDurationFromMoment(this, dur, direction);
- return this;
- };
- }
-
- function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) {
- var milliseconds = duration._milliseconds,
- days = duration._days,
- months = duration._months;
- updateOffset = updateOffset == null ? true : updateOffset;
-
- if (milliseconds) {
- mom._d.setTime(+mom._d + milliseconds * isAdding);
- }
- if (days) {
- rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding);
- }
- if (months) {
- rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding);
- }
- if (updateOffset) {
- moment.updateOffset(mom, days || months);
- }
- }
-
- // check if is an array
- function isArray(input) {
- return Object.prototype.toString.call(input) === '[object Array]';
- }
-
- function isDate(input) {
- return Object.prototype.toString.call(input) === '[object Date]' ||
- input instanceof Date;
+ return value;
}
// compare two arrays, return the number of differences
@@ -589,142 +229,12 @@
return diffs + lengthDiff;
}
- function normalizeUnits(units) {
- if (units) {
- var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
- units = unitAliases[units] || camelFunctions[lowered] || lowered;
- }
- return units;
+ function Locale() {
}
- function normalizeObjectUnits(inputObject) {
- var normalizedInput = {},
- normalizedProp,
- prop;
-
- for (prop in inputObject) {
- if (inputObject.hasOwnProperty(prop)) {
- normalizedProp = normalizeUnits(prop);
- if (normalizedProp) {
- normalizedInput[normalizedProp] = inputObject[prop];
- }
- }
- }
-
- return normalizedInput;
- }
-
- function makeList(field) {
- var count, setter;
-
- if (field.indexOf('week') === 0) {
- count = 7;
- setter = 'day';
- }
- else if (field.indexOf('month') === 0) {
- count = 12;
- setter = 'month';
- }
- else {
- return;
- }
-
- moment[field] = function (format, index) {
- var i, getter,
- method = moment._locale[field],
- results = [];
-
- if (typeof format === 'number') {
- index = format;
- format = undefined;
- }
-
- getter = function (i) {
- var m = moment().utc().set(setter, i);
- return method.call(moment._locale, m, format || '');
- };
-
- if (index != null) {
- return getter(index);
- }
- else {
- for (i = 0; i < count; i++) {
- results.push(getter(i));
- }
- return results;
- }
- };
- }
-
- function toInt(argumentForCoercion) {
- var coercedNumber = +argumentForCoercion,
- value = 0;
-
- if (coercedNumber !== 0 && isFinite(coercedNumber)) {
- if (coercedNumber >= 0) {
- value = Math.floor(coercedNumber);
- } else {
- value = Math.ceil(coercedNumber);
- }
- }
-
- return value;
- }
-
- function daysInMonth(year, month) {
- return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
- }
-
- function weeksInYear(year, dow, doy) {
- return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week;
- }
-
- function daysInYear(year) {
- return isLeapYear(year) ? 366 : 365;
- }
-
- function isLeapYear(year) {
- return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
- }
-
- function checkOverflow(m) {
- var overflow;
- if (m._a && m._pf.overflow === -2) {
- overflow =
- m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
- m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
- m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR :
- m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
- m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
- m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
- -1;
-
- if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
- overflow = DATE;
- }
-
- m._pf.overflow = overflow;
- }
- }
-
- function isValid(m) {
- if (m._isValid == null) {
- m._isValid = !isNaN(m._d.getTime()) &&
- m._pf.overflow < 0 &&
- !m._pf.empty &&
- !m._pf.invalidMonth &&
- !m._pf.nullInput &&
- !m._pf.invalidFormat &&
- !m._pf.userInvalidated;
-
- if (m._strict) {
- m._isValid = m._isValid &&
- m._pf.charsLeftOver === 0 &&
- m._pf.unusedTokens.length === 0;
- }
- }
- return m._isValid;
- }
+ // internal storage for locale config files
+ var locales = {};
+ var globalLocale;
function normalizeLocale(key) {
return key ? key.toLowerCase().replace('_', '-') : key;
@@ -759,215 +269,196 @@
function loadLocale(name) {
var oldLocale = null;
- if (!locales[name] && hasModule) {
+ // TODO: Find a better way to register and load all the locales in Node
+ if (!locales[name] && (typeof module !== 'undefined') &&
+ module && module.exports) {
try {
- oldLocale = moment.locale();
+ oldLocale = globalLocale._abbr;
require('./locale/' + name);
- // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales
- moment.locale(oldLocale);
+ // because defineLocale currently also sets the global locale, we
+ // want to undo that for lazy loaded locales
+ locale_locales__getSetGlobalLocale(oldLocale);
} catch (e) { }
}
return locales[name];
}
- // Return a moment from input, that is local/utc/zone equivalent to model.
- function makeAs(input, model) {
- return model._isUTC ? moment(input).zone(model._offset || 0) :
- moment(input).local();
+ // This function will load locale and then set the global locale. If
+ // no arguments are passed in, it will simply return the current global
+ // locale key.
+ function locale_locales__getSetGlobalLocale (key, values) {
+ var data;
+ if (key) {
+ if (isUndefined(values)) {
+ data = locale_locales__getLocale(key);
+ }
+ else {
+ data = defineLocale(key, values);
+ }
+
+ if (data) {
+ // moment.duration._locale = moment._locale = data;
+ globalLocale = data;
+ }
+ }
+
+ return globalLocale._abbr;
}
- /************************************
- Locale
- ************************************/
+ function defineLocale (name, values) {
+ if (values !== null) {
+ values.abbr = name;
+ locales[name] = locales[name] || new Locale();
+ locales[name].set(values);
+ // backwards compat for now: also set the locale
+ locale_locales__getSetGlobalLocale(name);
- extend(Locale.prototype, {
-
- set : function (config) {
- var prop, i;
- for (i in config) {
- prop = config[i];
- if (typeof prop === 'function') {
- this[i] = prop;
- } else {
- this['_' + i] = prop;
- }
- }
- },
-
- _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
- months : function (m) {
- return this._months[m.month()];
- },
-
- _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
- monthsShort : function (m) {
- return this._monthsShort[m.month()];
- },
-
- monthsParse : function (monthName) {
- var i, mom, regex;
-
- if (!this._monthsParse) {
- this._monthsParse = [];
- }
-
- for (i = 0; i < 12; i++) {
- // make the regex if we don't have it already
- if (!this._monthsParse[i]) {
- mom = moment.utc([2000, i]);
- regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
- this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (this._monthsParse[i].test(monthName)) {
- return i;
- }
- }
- },
-
- _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
- weekdays : function (m) {
- return this._weekdays[m.day()];
- },
-
- _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
- weekdaysShort : function (m) {
- return this._weekdaysShort[m.day()];
- },
-
- _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
- weekdaysMin : function (m) {
- return this._weekdaysMin[m.day()];
- },
-
- weekdaysParse : function (weekdayName) {
- var i, mom, regex;
-
- if (!this._weekdaysParse) {
- this._weekdaysParse = [];
- }
-
- for (i = 0; i < 7; i++) {
- // make the regex if we don't have it already
- if (!this._weekdaysParse[i]) {
- mom = moment([2000, 1]).day(i);
- regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
- this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (this._weekdaysParse[i].test(weekdayName)) {
- return i;
- }
- }
- },
-
- _longDateFormat : {
- LT : 'h:mm A',
- L : 'MM/DD/YYYY',
- LL : 'MMMM D, YYYY',
- LLL : 'MMMM D, YYYY LT',
- LLLL : 'dddd, MMMM D, YYYY LT'
- },
- longDateFormat : function (key) {
- var output = this._longDateFormat[key];
- if (!output && this._longDateFormat[key.toUpperCase()]) {
- output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
- return val.slice(1);
- });
- this._longDateFormat[key] = output;
- }
- return output;
- },
-
- isPM : function (input) {
- // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
- // Using charAt should be more compatible.
- return ((input + '').toLowerCase().charAt(0) === 'p');
- },
-
- _meridiemParse : /[ap]\.?m?\.?/i,
- meridiem : function (hours, minutes, isLower) {
- if (hours > 11) {
- return isLower ? 'pm' : 'PM';
- } else {
- return isLower ? 'am' : 'AM';
- }
- },
-
- _calendar : {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- sameElse : 'L'
- },
- calendar : function (key, mom) {
- var output = this._calendar[key];
- return typeof output === 'function' ? output.apply(mom) : output;
- },
-
- _relativeTime : {
- future : 'in %s',
- past : '%s ago',
- s : 'a few seconds',
- m : 'a minute',
- mm : '%d minutes',
- h : 'an hour',
- hh : '%d hours',
- d : 'a day',
- dd : '%d days',
- M : 'a month',
- MM : '%d months',
- y : 'a year',
- yy : '%d years'
- },
-
- relativeTime : function (number, withoutSuffix, string, isFuture) {
- var output = this._relativeTime[string];
- return (typeof output === 'function') ?
- output(number, withoutSuffix, string, isFuture) :
- output.replace(/%d/i, number);
- },
-
- pastFuture : function (diff, output) {
- var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
- return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
- },
-
- ordinal : function (number) {
- return this._ordinal.replace('%d', number);
- },
- _ordinal : '%d',
-
- preparse : function (string) {
- return string;
- },
-
- postformat : function (string) {
- return string;
- },
-
- week : function (mom) {
- return weekOfYear(mom, this._week.dow, this._week.doy).week;
- },
-
- _week : {
- dow : 0, // Sunday is the first day of the week.
- doy : 6 // The week that contains Jan 1st is the first week of the year.
- },
-
- _invalidDate: 'Invalid date',
- invalidDate: function () {
- return this._invalidDate;
+ return locales[name];
+ } else {
+ // useful for testing
+ delete locales[name];
+ return null;
}
- });
+ }
- /************************************
- Formatting
- ************************************/
+ // returns locale data
+ function locale_locales__getLocale (key) {
+ var locale;
+ if (key && key._locale && key._locale._abbr) {
+ key = key._locale._abbr;
+ }
+
+ if (!key) {
+ return globalLocale;
+ }
+
+ if (!isArray(key)) {
+ //short-circuit everything else
+ locale = loadLocale(key);
+ if (locale) {
+ return locale;
+ }
+ key = [key];
+ }
+
+ return chooseLocale(key);
+ }
+
+ var aliases = {};
+
+ function addUnitAlias (unit, shorthand) {
+ var lowerCase = unit.toLowerCase();
+ aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
+ }
+
+ function normalizeUnits(units) {
+ return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
+ }
+
+ function normalizeObjectUnits(inputObject) {
+ var normalizedInput = {},
+ normalizedProp,
+ prop;
+
+ for (prop in inputObject) {
+ if (hasOwnProp(inputObject, prop)) {
+ normalizedProp = normalizeUnits(prop);
+ if (normalizedProp) {
+ normalizedInput[normalizedProp] = inputObject[prop];
+ }
+ }
+ }
+
+ return normalizedInput;
+ }
+
+ function isFunction(input) {
+ return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
+ }
+
+ function makeGetSet (unit, keepTime) {
+ return function (value) {
+ if (value != null) {
+ get_set__set(this, unit, value);
+ utils_hooks__hooks.updateOffset(this, keepTime);
+ return this;
+ } else {
+ return get_set__get(this, unit);
+ }
+ };
+ }
+
+ function get_set__get (mom, unit) {
+ return mom.isValid() ?
+ mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
+ }
+
+ function get_set__set (mom, unit, value) {
+ if (mom.isValid()) {
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
+ }
+ }
+
+ // MOMENTS
+
+ function getSet (units, value) {
+ var unit;
+ if (typeof units === 'object') {
+ for (unit in units) {
+ this.set(unit, units[unit]);
+ }
+ } else {
+ units = normalizeUnits(units);
+ if (isFunction(this[units])) {
+ return this[units](value);
+ }
+ }
+ return this;
+ }
+
+ function zeroFill(number, targetLength, forceSign) {
+ var absNumber = '' + Math.abs(number),
+ zerosToFill = targetLength - absNumber.length,
+ sign = number >= 0;
+ return (sign ? (forceSign ? '+' : '') : '-') +
+ Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
+ }
+
+ var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
+
+ var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
+
+ var formatFunctions = {};
+
+ var formatTokenFunctions = {};
+
+ // token: 'M'
+ // padded: ['MM', 2]
+ // ordinal: 'Mo'
+ // callback: function () { this.month() + 1 }
+ function addFormatToken (token, padded, ordinal, callback) {
+ var func = callback;
+ if (typeof callback === 'string') {
+ func = function () {
+ return this[callback]();
+ };
+ }
+ if (token) {
+ formatTokenFunctions[token] = func;
+ }
+ if (padded) {
+ formatTokenFunctions[padded[0]] = function () {
+ return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
+ };
+ }
+ if (ordinal) {
+ formatTokenFunctions[ordinal] = function () {
+ return this.localeData().ordinal(func.apply(this, arguments), token);
+ };
+ }
+ }
function removeFormattingTokens(input) {
if (input.match(/\[[\s\S]/)) {
@@ -1003,10 +494,7 @@
}
format = expandFormat(format, m.localeData());
-
- if (!formatFunctions[format]) {
- formatFunctions[format] = makeFormatFunction(format);
- }
+ formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
return formatFunctions[format](m);
}
@@ -1028,292 +516,642 @@
return format;
}
+ var match1 = /\d/; // 0 - 9
+ var match2 = /\d\d/; // 00 - 99
+ var match3 = /\d{3}/; // 000 - 999
+ var match4 = /\d{4}/; // 0000 - 9999
+ var match6 = /[+-]?\d{6}/; // -999999 - 999999
+ var match1to2 = /\d\d?/; // 0 - 99
+ var match3to4 = /\d\d\d\d?/; // 999 - 9999
+ var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999
+ var match1to3 = /\d{1,3}/; // 0 - 999
+ var match1to4 = /\d{1,4}/; // 0 - 9999
+ var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
- /************************************
- Parsing
- ************************************/
+ var matchUnsigned = /\d+/; // 0 - inf
+ var matchSigned = /[+-]?\d+/; // -inf - inf
+
+ var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
+ var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
+
+ var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
+
+ // any word (or two) characters or numbers including two/three word month in arabic.
+ // includes scottish gaelic two word and hyphenated months
+ var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
- // get the regex to find the next token
- function getParseRegexForToken(token, config) {
- var a, strict = config._strict;
- switch (token) {
- case 'Q':
- return parseTokenOneDigit;
- case 'DDDD':
- return parseTokenThreeDigits;
- case 'YYYY':
- case 'GGGG':
- case 'gggg':
- return strict ? parseTokenFourDigits : parseTokenOneToFourDigits;
- case 'Y':
- case 'G':
- case 'g':
- return parseTokenSignedNumber;
- case 'YYYYYY':
- case 'YYYYY':
- case 'GGGGG':
- case 'ggggg':
- return strict ? parseTokenSixDigits : parseTokenOneToSixDigits;
- case 'S':
- if (strict) {
- return parseTokenOneDigit;
+ var regexes = {};
+
+ function addRegexToken (token, regex, strictRegex) {
+ regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
+ return (isStrict && strictRegex) ? strictRegex : regex;
+ };
+ }
+
+ function getParseRegexForToken (token, config) {
+ if (!hasOwnProp(regexes, token)) {
+ return new RegExp(unescapeFormat(token));
+ }
+
+ return regexes[token](config._strict, config._locale);
+ }
+
+ // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
+ function unescapeFormat(s) {
+ return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
+ return p1 || p2 || p3 || p4;
+ }));
+ }
+
+ function regexEscape(s) {
+ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ }
+
+ var tokens = {};
+
+ function addParseToken (token, callback) {
+ var i, func = callback;
+ if (typeof token === 'string') {
+ token = [token];
+ }
+ if (typeof callback === 'number') {
+ func = function (input, array) {
+ array[callback] = toInt(input);
+ };
+ }
+ for (i = 0; i < token.length; i++) {
+ tokens[token[i]] = func;
+ }
+ }
+
+ function addWeekParseToken (token, callback) {
+ addParseToken(token, function (input, array, config, token) {
+ config._w = config._w || {};
+ callback(input, config._w, config, token);
+ });
+ }
+
+ function addTimeToArrayFromToken(token, input, config) {
+ if (input != null && hasOwnProp(tokens, token)) {
+ tokens[token](input, config._a, config, token);
+ }
+ }
+
+ var YEAR = 0;
+ var MONTH = 1;
+ var DATE = 2;
+ var HOUR = 3;
+ var MINUTE = 4;
+ var SECOND = 5;
+ var MILLISECOND = 6;
+ var WEEK = 7;
+ var WEEKDAY = 8;
+
+ function daysInMonth(year, month) {
+ return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
+ }
+
+ // FORMATTING
+
+ addFormatToken('M', ['MM', 2], 'Mo', function () {
+ return this.month() + 1;
+ });
+
+ addFormatToken('MMM', 0, 0, function (format) {
+ return this.localeData().monthsShort(this, format);
+ });
+
+ addFormatToken('MMMM', 0, 0, function (format) {
+ return this.localeData().months(this, format);
+ });
+
+ // ALIASES
+
+ addUnitAlias('month', 'M');
+
+ // PARSING
+
+ addRegexToken('M', match1to2);
+ addRegexToken('MM', match1to2, match2);
+ addRegexToken('MMM', function (isStrict, locale) {
+ return locale.monthsShortRegex(isStrict);
+ });
+ addRegexToken('MMMM', function (isStrict, locale) {
+ return locale.monthsRegex(isStrict);
+ });
+
+ addParseToken(['M', 'MM'], function (input, array) {
+ array[MONTH] = toInt(input) - 1;
+ });
+
+ addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
+ var month = config._locale.monthsParse(input, token, config._strict);
+ // if we didn't find a month name, mark the date as invalid.
+ if (month != null) {
+ array[MONTH] = month;
+ } else {
+ getParsingFlags(config).invalidMonth = input;
+ }
+ });
+
+ // LOCALES
+
+ var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/;
+ var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
+ function localeMonths (m, format) {
+ return isArray(this._months) ? this._months[m.month()] :
+ this._months[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
+ }
+
+ var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
+ function localeMonthsShort (m, format) {
+ return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
+ this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
+ }
+
+ function localeMonthsParse (monthName, format, strict) {
+ var i, mom, regex;
+
+ if (!this._monthsParse) {
+ this._monthsParse = [];
+ this._longMonthsParse = [];
+ this._shortMonthsParse = [];
+ }
+
+ for (i = 0; i < 12; i++) {
+ // make the regex if we don't have it already
+ mom = create_utc__createUTC([2000, i]);
+ if (strict && !this._longMonthsParse[i]) {
+ this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
+ this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
}
- /* falls through */
- case 'SS':
- if (strict) {
- return parseTokenTwoDigits;
+ if (!strict && !this._monthsParse[i]) {
+ regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
+ this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
}
- /* falls through */
- case 'SSS':
- if (strict) {
- return parseTokenThreeDigits;
+ // test the regex
+ if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
+ return i;
+ } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
+ return i;
+ } else if (!strict && this._monthsParse[i].test(monthName)) {
+ return i;
}
- /* falls through */
- case 'DDD':
- return parseTokenOneToThreeDigits;
- case 'MMM':
- case 'MMMM':
- case 'dd':
- case 'ddd':
- case 'dddd':
- return parseTokenWord;
- case 'a':
- case 'A':
- return config._locale._meridiemParse;
- case 'X':
- return parseTokenTimestampMs;
- case 'Z':
- case 'ZZ':
- return parseTokenTimezone;
- case 'T':
- return parseTokenT;
- case 'SSSS':
- return parseTokenDigits;
- case 'MM':
- case 'DD':
- case 'YY':
- case 'GG':
- case 'gg':
- case 'HH':
- case 'hh':
- case 'mm':
- case 'ss':
- case 'ww':
- case 'WW':
- return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits;
- case 'M':
- case 'D':
- case 'd':
- case 'H':
- case 'h':
- case 'm':
- case 's':
- case 'w':
- case 'W':
- case 'e':
- case 'E':
- return parseTokenOneOrTwoDigits;
- case 'Do':
- return parseTokenOrdinal;
- default :
- a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
+ }
+ }
+
+ // MOMENTS
+
+ function setMonth (mom, value) {
+ var dayOfMonth;
+
+ if (!mom.isValid()) {
+ // No op
+ return mom;
+ }
+
+ // TODO: Move this out of here!
+ if (typeof value === 'string') {
+ value = mom.localeData().monthsParse(value);
+ // TODO: Another silent failure?
+ if (typeof value !== 'number') {
+ return mom;
+ }
+ }
+
+ dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
+ return mom;
+ }
+
+ function getSetMonth (value) {
+ if (value != null) {
+ setMonth(this, value);
+ utils_hooks__hooks.updateOffset(this, true);
+ return this;
+ } else {
+ return get_set__get(this, 'Month');
+ }
+ }
+
+ function getDaysInMonth () {
+ return daysInMonth(this.year(), this.month());
+ }
+
+ var defaultMonthsShortRegex = matchWord;
+ function monthsShortRegex (isStrict) {
+ if (this._monthsParseExact) {
+ if (!hasOwnProp(this, '_monthsRegex')) {
+ computeMonthsParse.call(this);
+ }
+ if (isStrict) {
+ return this._monthsShortStrictRegex;
+ } else {
+ return this._monthsShortRegex;
+ }
+ } else {
+ return this._monthsShortStrictRegex && isStrict ?
+ this._monthsShortStrictRegex : this._monthsShortRegex;
+ }
+ }
+
+ var defaultMonthsRegex = matchWord;
+ function monthsRegex (isStrict) {
+ if (this._monthsParseExact) {
+ if (!hasOwnProp(this, '_monthsRegex')) {
+ computeMonthsParse.call(this);
+ }
+ if (isStrict) {
+ return this._monthsStrictRegex;
+ } else {
+ return this._monthsRegex;
+ }
+ } else {
+ return this._monthsStrictRegex && isStrict ?
+ this._monthsStrictRegex : this._monthsRegex;
+ }
+ }
+
+ function computeMonthsParse () {
+ function cmpLenRev(a, b) {
+ return b.length - a.length;
+ }
+
+ var shortPieces = [], longPieces = [], mixedPieces = [],
+ i, mom;
+ for (i = 0; i < 12; i++) {
+ // make the regex if we don't have it already
+ mom = create_utc__createUTC([2000, i]);
+ shortPieces.push(this.monthsShort(mom, ''));
+ longPieces.push(this.months(mom, ''));
+ mixedPieces.push(this.months(mom, ''));
+ mixedPieces.push(this.monthsShort(mom, ''));
+ }
+ // Sorting makes sure if one month (or abbr) is a prefix of another it
+ // will match the longer piece.
+ shortPieces.sort(cmpLenRev);
+ longPieces.sort(cmpLenRev);
+ mixedPieces.sort(cmpLenRev);
+ for (i = 0; i < 12; i++) {
+ shortPieces[i] = regexEscape(shortPieces[i]);
+ longPieces[i] = regexEscape(longPieces[i]);
+ mixedPieces[i] = regexEscape(mixedPieces[i]);
+ }
+
+ this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+ this._monthsShortRegex = this._monthsRegex;
+ this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')$', 'i');
+ this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')$', 'i');
+ }
+
+ function checkOverflow (m) {
+ var overflow;
+ var a = m._a;
+
+ if (a && getParsingFlags(m).overflow === -2) {
+ overflow =
+ a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
+ a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
+ a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
+ a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
+ a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
+ a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
+ -1;
+
+ if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
+ overflow = DATE;
+ }
+ if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
+ overflow = WEEK;
+ }
+ if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
+ overflow = WEEKDAY;
+ }
+
+ getParsingFlags(m).overflow = overflow;
+ }
+
+ return m;
+ }
+
+ function warn(msg) {
+ if (utils_hooks__hooks.suppressDeprecationWarnings === false &&
+ (typeof console !== 'undefined') && console.warn) {
+ console.warn('Deprecation warning: ' + msg);
+ }
+ }
+
+ function deprecate(msg, fn) {
+ var firstTime = true;
+
+ return extend(function () {
+ if (firstTime) {
+ warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + (new Error()).stack);
+ firstTime = false;
+ }
+ return fn.apply(this, arguments);
+ }, fn);
+ }
+
+ var deprecations = {};
+
+ function deprecateSimple(name, msg) {
+ if (!deprecations[name]) {
+ warn(msg);
+ deprecations[name] = true;
+ }
+ }
+
+ utils_hooks__hooks.suppressDeprecationWarnings = false;
+
+ // iso 8601 regex
+ // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
+ var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
+ var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
+
+ var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
+
+ var isoDates = [
+ ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
+ ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
+ ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
+ ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
+ ['YYYY-DDD', /\d{4}-\d{3}/],
+ ['YYYY-MM', /\d{4}-\d\d/, false],
+ ['YYYYYYMMDD', /[+-]\d{10}/],
+ ['YYYYMMDD', /\d{8}/],
+ // YYYYMM is NOT allowed by the standard
+ ['GGGG[W]WWE', /\d{4}W\d{3}/],
+ ['GGGG[W]WW', /\d{4}W\d{2}/, false],
+ ['YYYYDDD', /\d{7}/]
+ ];
+
+ // iso time formats and regexes
+ var isoTimes = [
+ ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
+ ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
+ ['HH:mm:ss', /\d\d:\d\d:\d\d/],
+ ['HH:mm', /\d\d:\d\d/],
+ ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
+ ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
+ ['HHmmss', /\d\d\d\d\d\d/],
+ ['HHmm', /\d\d\d\d/],
+ ['HH', /\d\d/]
+ ];
+
+ var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
+
+ // date from iso format
+ function configFromISO(config) {
+ var i, l,
+ string = config._i,
+ match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
+ allowTime, dateFormat, timeFormat, tzFormat;
+
+ if (match) {
+ getParsingFlags(config).iso = true;
+
+ for (i = 0, l = isoDates.length; i < l; i++) {
+ if (isoDates[i][1].exec(match[1])) {
+ dateFormat = isoDates[i][0];
+ allowTime = isoDates[i][2] !== false;
+ break;
+ }
+ }
+ if (dateFormat == null) {
+ config._isValid = false;
+ return;
+ }
+ if (match[3]) {
+ for (i = 0, l = isoTimes.length; i < l; i++) {
+ if (isoTimes[i][1].exec(match[3])) {
+ // match[2] should be 'T' or space
+ timeFormat = (match[2] || ' ') + isoTimes[i][0];
+ break;
+ }
+ }
+ if (timeFormat == null) {
+ config._isValid = false;
+ return;
+ }
+ }
+ if (!allowTime && timeFormat != null) {
+ config._isValid = false;
+ return;
+ }
+ if (match[4]) {
+ if (tzRegex.exec(match[4])) {
+ tzFormat = 'Z';
+ } else {
+ config._isValid = false;
+ return;
+ }
+ }
+ config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
+ configFromStringAndFormat(config);
+ } else {
+ config._isValid = false;
+ }
+ }
+
+ // date from iso format or fallback
+ function configFromString(config) {
+ var matched = aspNetJsonRegex.exec(config._i);
+
+ if (matched !== null) {
+ config._d = new Date(+matched[1]);
+ return;
+ }
+
+ configFromISO(config);
+ if (config._isValid === false) {
+ delete config._isValid;
+ utils_hooks__hooks.createFromInputFallback(config);
+ }
+ }
+
+ utils_hooks__hooks.createFromInputFallback = deprecate(
+ 'moment construction falls back to js Date. This is ' +
+ 'discouraged and will be removed in upcoming major ' +
+ 'release. Please refer to ' +
+ 'https://github.com/moment/moment/issues/1407 for more info.',
+ function (config) {
+ config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
+ }
+ );
+
+ function createDate (y, m, d, h, M, s, ms) {
+ //can't just apply() to create a date:
+ //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
+ var date = new Date(y, m, d, h, M, s, ms);
+
+ //the date constructor remaps years 0-99 to 1900-1999
+ if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
+ date.setFullYear(y);
+ }
+ return date;
+ }
+
+ function createUTCDate (y) {
+ var date = new Date(Date.UTC.apply(null, arguments));
+
+ //the Date.UTC function remaps years 0-99 to 1900-1999
+ if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
+ date.setUTCFullYear(y);
+ }
+ return date;
+ }
+
+ // FORMATTING
+
+ addFormatToken('Y', 0, 0, function () {
+ var y = this.year();
+ return y <= 9999 ? '' + y : '+' + y;
+ });
+
+ addFormatToken(0, ['YY', 2], 0, function () {
+ return this.year() % 100;
+ });
+
+ addFormatToken(0, ['YYYY', 4], 0, 'year');
+ addFormatToken(0, ['YYYYY', 5], 0, 'year');
+ addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
+
+ // ALIASES
+
+ addUnitAlias('year', 'y');
+
+ // PARSING
+
+ addRegexToken('Y', matchSigned);
+ addRegexToken('YY', match1to2, match2);
+ addRegexToken('YYYY', match1to4, match4);
+ addRegexToken('YYYYY', match1to6, match6);
+ addRegexToken('YYYYYY', match1to6, match6);
+
+ addParseToken(['YYYYY', 'YYYYYY'], YEAR);
+ addParseToken('YYYY', function (input, array) {
+ array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);
+ });
+ addParseToken('YY', function (input, array) {
+ array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);
+ });
+ addParseToken('Y', function (input, array) {
+ array[YEAR] = parseInt(input, 10);
+ });
+
+ // HELPERS
+
+ function daysInYear(year) {
+ return isLeapYear(year) ? 366 : 365;
+ }
+
+ function isLeapYear(year) {
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
+ }
+
+ // HOOKS
+
+ utils_hooks__hooks.parseTwoDigitYear = function (input) {
+ return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
+ };
+
+ // MOMENTS
+
+ var getSetYear = makeGetSet('FullYear', false);
+
+ function getIsLeapYear () {
+ return isLeapYear(this.year());
+ }
+
+ // start-of-first-week - start-of-year
+ function firstWeekOffset(year, dow, doy) {
+ var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
+ fwd = 7 + dow - doy,
+ // first-week day local weekday -- which local weekday is fwd
+ fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
+
+ return -fwdlw + fwd - 1;
+ }
+
+ //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+ function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
+ var localWeekday = (7 + weekday - dow) % 7,
+ weekOffset = firstWeekOffset(year, dow, doy),
+ dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
+ resYear, resDayOfYear;
+
+ if (dayOfYear <= 0) {
+ resYear = year - 1;
+ resDayOfYear = daysInYear(resYear) + dayOfYear;
+ } else if (dayOfYear > daysInYear(year)) {
+ resYear = year + 1;
+ resDayOfYear = dayOfYear - daysInYear(year);
+ } else {
+ resYear = year;
+ resDayOfYear = dayOfYear;
+ }
+
+ return {
+ year: resYear,
+ dayOfYear: resDayOfYear
+ };
+ }
+
+ function weekOfYear(mom, dow, doy) {
+ var weekOffset = firstWeekOffset(mom.year(), dow, doy),
+ week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
+ resWeek, resYear;
+
+ if (week < 1) {
+ resYear = mom.year() - 1;
+ resWeek = week + weeksInYear(resYear, dow, doy);
+ } else if (week > weeksInYear(mom.year(), dow, doy)) {
+ resWeek = week - weeksInYear(mom.year(), dow, doy);
+ resYear = mom.year() + 1;
+ } else {
+ resYear = mom.year();
+ resWeek = week;
+ }
+
+ return {
+ week: resWeek,
+ year: resYear
+ };
+ }
+
+ function weeksInYear(year, dow, doy) {
+ var weekOffset = firstWeekOffset(year, dow, doy),
+ weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
+ return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
+ }
+
+ // Pick the first defined of two or three arguments.
+ function defaults(a, b, c) {
+ if (a != null) {
return a;
}
- }
-
- function timezoneMinutesFromString(string) {
- string = string || '';
- var possibleTzMatches = (string.match(parseTokenTimezone) || []),
- tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
- parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
- minutes = +(parts[1] * 60) + toInt(parts[2]);
-
- return parts[0] === '+' ? -minutes : minutes;
- }
-
- // function to convert string input to date
- function addTimeToArrayFromToken(token, input, config) {
- var a, datePartArray = config._a;
-
- switch (token) {
- // QUARTER
- case 'Q':
- if (input != null) {
- datePartArray[MONTH] = (toInt(input) - 1) * 3;
- }
- break;
- // MONTH
- case 'M' : // fall through to MM
- case 'MM' :
- if (input != null) {
- datePartArray[MONTH] = toInt(input) - 1;
- }
- break;
- case 'MMM' : // fall through to MMMM
- case 'MMMM' :
- a = config._locale.monthsParse(input);
- // if we didn't find a month name, mark the date as invalid.
- if (a != null) {
- datePartArray[MONTH] = a;
- } else {
- config._pf.invalidMonth = input;
- }
- break;
- // DAY OF MONTH
- case 'D' : // fall through to DD
- case 'DD' :
- if (input != null) {
- datePartArray[DATE] = toInt(input);
- }
- break;
- case 'Do' :
- if (input != null) {
- datePartArray[DATE] = toInt(parseInt(input, 10));
- }
- break;
- // DAY OF YEAR
- case 'DDD' : // fall through to DDDD
- case 'DDDD' :
- if (input != null) {
- config._dayOfYear = toInt(input);
- }
-
- break;
- // YEAR
- case 'YY' :
- datePartArray[YEAR] = moment.parseTwoDigitYear(input);
- break;
- case 'YYYY' :
- case 'YYYYY' :
- case 'YYYYYY' :
- datePartArray[YEAR] = toInt(input);
- break;
- // AM / PM
- case 'a' : // fall through to A
- case 'A' :
- config._isPm = config._locale.isPM(input);
- break;
- // 24 HOUR
- case 'H' : // fall through to hh
- case 'HH' : // fall through to hh
- case 'h' : // fall through to hh
- case 'hh' :
- datePartArray[HOUR] = toInt(input);
- break;
- // MINUTE
- case 'm' : // fall through to mm
- case 'mm' :
- datePartArray[MINUTE] = toInt(input);
- break;
- // SECOND
- case 's' : // fall through to ss
- case 'ss' :
- datePartArray[SECOND] = toInt(input);
- break;
- // MILLISECOND
- case 'S' :
- case 'SS' :
- case 'SSS' :
- case 'SSSS' :
- datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
- break;
- // UNIX TIMESTAMP WITH MS
- case 'X':
- config._d = new Date(parseFloat(input) * 1000);
- break;
- // TIMEZONE
- case 'Z' : // fall through to ZZ
- case 'ZZ' :
- config._useUTC = true;
- config._tzm = timezoneMinutesFromString(input);
- break;
- // WEEKDAY - human
- case 'dd':
- case 'ddd':
- case 'dddd':
- a = config._locale.weekdaysParse(input);
- // if we didn't get a weekday name, mark the date as invalid
- if (a != null) {
- config._w = config._w || {};
- config._w['d'] = a;
- } else {
- config._pf.invalidWeekday = input;
- }
- break;
- // WEEK, WEEK DAY - numeric
- case 'w':
- case 'ww':
- case 'W':
- case 'WW':
- case 'd':
- case 'e':
- case 'E':
- token = token.substr(0, 1);
- /* falls through */
- case 'gggg':
- case 'GGGG':
- case 'GGGGG':
- token = token.substr(0, 2);
- if (input) {
- config._w = config._w || {};
- config._w[token] = toInt(input);
- }
- break;
- case 'gg':
- case 'GG':
- config._w = config._w || {};
- config._w[token] = moment.parseTwoDigitYear(input);
+ if (b != null) {
+ return b;
}
+ return c;
}
- function dayOfYearFromWeekInfo(config) {
- var w, weekYear, week, weekday, dow, doy, temp;
-
- w = config._w;
- if (w.GG != null || w.W != null || w.E != null) {
- dow = 1;
- doy = 4;
-
- // TODO: We need to take the current isoWeekYear, but that depends on
- // how we interpret now (local, utc, fixed offset). So create
- // a now version of current config (take local/utc/offset flags, and
- // create now).
- weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year);
- week = dfl(w.W, 1);
- weekday = dfl(w.E, 1);
- } else {
- dow = config._locale._week.dow;
- doy = config._locale._week.doy;
-
- weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
- week = dfl(w.w, 1);
-
- if (w.d != null) {
- // weekday -- low day numbers are considered next week
- weekday = w.d;
- if (weekday < dow) {
- ++week;
- }
- } else if (w.e != null) {
- // local weekday -- counting starts from begining of week
- weekday = w.e + dow;
- } else {
- // default to begining of week
- weekday = dow;
- }
+ function currentDateArray(config) {
+ // hooks is actually the exported moment object
+ var nowValue = new Date(utils_hooks__hooks.now());
+ if (config._useUTC) {
+ return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
}
- temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
-
- config._a[YEAR] = temp.year;
- config._dayOfYear = temp.dayOfYear;
+ return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
}
// convert an array to a date.
// the array should mirror the parameters below
// note: all values past the year are optional and will default to the lowest possible value.
// [year, month, day , hour, minute, second, millisecond]
- function dateFromConfig(config) {
+ function configFromArray (config) {
var i, date, input = [], currentDate, yearToUse;
if (config._d) {
@@ -1329,13 +1167,13 @@
//if the day of the year is set, figure out what it is
if (config._dayOfYear) {
- yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);
+ yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
if (config._dayOfYear > daysInYear(yearToUse)) {
- config._pf._overflowDayOfYear = true;
+ getParsingFlags(config)._overflowDayOfYear = true;
}
- date = makeUTCDate(yearToUse, 0, config._dayOfYear);
+ date = createUTCDate(yearToUse, 0, config._dayOfYear);
config._a[MONTH] = date.getUTCMonth();
config._a[DATE] = date.getUTCDate();
}
@@ -1354,57 +1192,93 @@
config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
}
- config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
- // Apply timezone offset from input. The actual zone can be changed
+ // Check for 24:00:00.000
+ if (config._a[HOUR] === 24 &&
+ config._a[MINUTE] === 0 &&
+ config._a[SECOND] === 0 &&
+ config._a[MILLISECOND] === 0) {
+ config._nextDay = true;
+ config._a[HOUR] = 0;
+ }
+
+ config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
+ // Apply timezone offset from input. The actual utcOffset can be changed
// with parseZone.
if (config._tzm != null) {
- config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm);
+ config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
+ }
+
+ if (config._nextDay) {
+ config._a[HOUR] = 24;
}
}
- function dateFromObject(config) {
- var normalizedInput;
+ function dayOfYearFromWeekInfo(config) {
+ var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
- if (config._d) {
- return;
- }
+ w = config._w;
+ if (w.GG != null || w.W != null || w.E != null) {
+ dow = 1;
+ doy = 4;
- normalizedInput = normalizeObjectUnits(config._i);
- config._a = [
- normalizedInput.year,
- normalizedInput.month,
- normalizedInput.day,
- normalizedInput.hour,
- normalizedInput.minute,
- normalizedInput.second,
- normalizedInput.millisecond
- ];
-
- dateFromConfig(config);
- }
-
- function currentDateArray(config) {
- var now = new Date();
- if (config._useUTC) {
- return [
- now.getUTCFullYear(),
- now.getUTCMonth(),
- now.getUTCDate()
- ];
+ // TODO: We need to take the current isoWeekYear, but that depends on
+ // how we interpret now (local, utc, fixed offset). So create
+ // a now version of current config (take local/utc/offset flags, and
+ // create now).
+ weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
+ week = defaults(w.W, 1);
+ weekday = defaults(w.E, 1);
+ if (weekday < 1 || weekday > 7) {
+ weekdayOverflow = true;
+ }
} else {
- return [now.getFullYear(), now.getMonth(), now.getDate()];
+ dow = config._locale._week.dow;
+ doy = config._locale._week.doy;
+
+ weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
+ week = defaults(w.w, 1);
+
+ if (w.d != null) {
+ // weekday -- low day numbers are considered next week
+ weekday = w.d;
+ if (weekday < 0 || weekday > 6) {
+ weekdayOverflow = true;
+ }
+ } else if (w.e != null) {
+ // local weekday -- counting starts from begining of week
+ weekday = w.e + dow;
+ if (w.e < 0 || w.e > 6) {
+ weekdayOverflow = true;
+ }
+ } else {
+ // default to begining of week
+ weekday = dow;
+ }
+ }
+ if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
+ getParsingFlags(config)._overflowWeeks = true;
+ } else if (weekdayOverflow != null) {
+ getParsingFlags(config)._overflowWeekday = true;
+ } else {
+ temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
+ config._a[YEAR] = temp.year;
+ config._dayOfYear = temp.dayOfYear;
}
}
+ // constant that refers to the ISO standard
+ utils_hooks__hooks.ISO_8601 = function () {};
+
// date from string and format string
- function makeDateFromStringAndFormat(config) {
- if (config._f === moment.ISO_8601) {
- parseISO(config);
+ function configFromStringAndFormat(config) {
+ // TODO: Move this to another part of the creation flow to prevent circular deps
+ if (config._f === utils_hooks__hooks.ISO_8601) {
+ configFromISO(config);
return;
}
config._a = [];
- config._pf.empty = true;
+ getParsingFlags(config).empty = true;
// This array is used to make a Date, either with `new Date` or `Date.UTC`
var string = '' + config._i,
@@ -1417,10 +1291,12 @@
for (i = 0; i < tokens.length; i++) {
token = tokens[i];
parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
+ // console.log('token', token, 'parsedInput', parsedInput,
+ // 'regex', getParseRegexForToken(token, config));
if (parsedInput) {
skipped = string.substr(0, string.indexOf(parsedInput));
if (skipped.length > 0) {
- config._pf.unusedInput.push(skipped);
+ getParsingFlags(config).unusedInput.push(skipped);
}
string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
totalParsedInputLength += parsedInput.length;
@@ -1428,50 +1304,65 @@
// don't parse if it's not a known token
if (formatTokenFunctions[token]) {
if (parsedInput) {
- config._pf.empty = false;
+ getParsingFlags(config).empty = false;
}
else {
- config._pf.unusedTokens.push(token);
+ getParsingFlags(config).unusedTokens.push(token);
}
addTimeToArrayFromToken(token, parsedInput, config);
}
else if (config._strict && !parsedInput) {
- config._pf.unusedTokens.push(token);
+ getParsingFlags(config).unusedTokens.push(token);
}
}
// add remaining unparsed input length to the string
- config._pf.charsLeftOver = stringLength - totalParsedInputLength;
+ getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
if (string.length > 0) {
- config._pf.unusedInput.push(string);
+ getParsingFlags(config).unusedInput.push(string);
}
- // handle am pm
- if (config._isPm && config._a[HOUR] < 12) {
- config._a[HOUR] += 12;
- }
- // if is 12 am, change hours to 0
- if (config._isPm === false && config._a[HOUR] === 12) {
- config._a[HOUR] = 0;
+ // clear _12h flag if hour is <= 12
+ if (getParsingFlags(config).bigHour === true &&
+ config._a[HOUR] <= 12 &&
+ config._a[HOUR] > 0) {
+ getParsingFlags(config).bigHour = undefined;
}
+ // handle meridiem
+ config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
- dateFromConfig(config);
+ configFromArray(config);
checkOverflow(config);
}
- function unescapeFormat(s) {
- return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
- return p1 || p2 || p3 || p4;
- });
- }
- // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
- function regexpEscape(s) {
- return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ function meridiemFixWrap (locale, hour, meridiem) {
+ var isPm;
+
+ if (meridiem == null) {
+ // nothing to do
+ return hour;
+ }
+ if (locale.meridiemHour != null) {
+ return locale.meridiemHour(hour, meridiem);
+ } else if (locale.isPM != null) {
+ // Fallback
+ isPm = locale.isPM(meridiem);
+ if (isPm && hour < 12) {
+ hour += 12;
+ }
+ if (!isPm && hour === 12) {
+ hour = 0;
+ }
+ return hour;
+ } else {
+ // this is not supposed to happen
+ return hour;
+ }
}
// date from string and array of format strings
- function makeDateFromStringAndArray(config) {
+ function configFromStringAndArray(config) {
var tempConfig,
bestMoment,
@@ -1480,7 +1371,7 @@
currentScore;
if (config._f.length === 0) {
- config._pf.invalidFormat = true;
+ getParsingFlags(config).invalidFormat = true;
config._d = new Date(NaN);
return;
}
@@ -1488,21 +1379,23 @@
for (i = 0; i < config._f.length; i++) {
currentScore = 0;
tempConfig = copyConfig({}, config);
- tempConfig._pf = defaultParsingFlags();
+ if (config._useUTC != null) {
+ tempConfig._useUTC = config._useUTC;
+ }
tempConfig._f = config._f[i];
- makeDateFromStringAndFormat(tempConfig);
+ configFromStringAndFormat(tempConfig);
- if (!isValid(tempConfig)) {
+ if (!valid__isValid(tempConfig)) {
continue;
}
// if there is any input that was not parsed add a penalty for that format
- currentScore += tempConfig._pf.charsLeftOver;
+ currentScore += getParsingFlags(tempConfig).charsLeftOver;
//or tokens
- currentScore += tempConfig._pf.unusedTokens.length * 10;
+ currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
- tempConfig._pf.score = currentScore;
+ getParsingFlags(tempConfig).score = currentScore;
if (scoreToBeat == null || currentScore < scoreToBeat) {
scoreToBeat = currentScore;
@@ -1513,251 +1406,130 @@
extend(config, bestMoment || tempConfig);
}
- // date from iso format
- function parseISO(config) {
- var i, l,
- string = config._i,
- match = isoRegex.exec(string);
-
- if (match) {
- config._pf.iso = true;
- for (i = 0, l = isoDates.length; i < l; i++) {
- if (isoDates[i][1].exec(string)) {
- // match[5] should be "T" or undefined
- config._f = isoDates[i][0] + (match[6] || ' ');
- break;
- }
- }
- for (i = 0, l = isoTimes.length; i < l; i++) {
- if (isoTimes[i][1].exec(string)) {
- config._f += isoTimes[i][0];
- break;
- }
- }
- if (string.match(parseTokenTimezone)) {
- config._f += 'Z';
- }
- makeDateFromStringAndFormat(config);
- } else {
- config._isValid = false;
- }
- }
-
- // date from iso format or fallback
- function makeDateFromString(config) {
- parseISO(config);
- if (config._isValid === false) {
- delete config._isValid;
- moment.createFromInputFallback(config);
- }
- }
-
- function makeDateFromInput(config) {
- var input = config._i, matched;
- if (input === undefined) {
- config._d = new Date();
- } else if (isDate(input)) {
- config._d = new Date(+input);
- } else if ((matched = aspNetJsonRegex.exec(input)) !== null) {
- config._d = new Date(+matched[1]);
- } else if (typeof input === 'string') {
- makeDateFromString(config);
- } else if (isArray(input)) {
- config._a = input.slice(0);
- dateFromConfig(config);
- } else if (typeof(input) === 'object') {
- dateFromObject(config);
- } else if (typeof(input) === 'number') {
- // from milliseconds
- config._d = new Date(input);
- } else {
- moment.createFromInputFallback(config);
- }
- }
-
- function makeDate(y, m, d, h, M, s, ms) {
- //can't just apply() to create a date:
- //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
- var date = new Date(y, m, d, h, M, s, ms);
-
- //the date constructor doesn't accept years < 1970
- if (y < 1970) {
- date.setFullYear(y);
- }
- return date;
- }
-
- function makeUTCDate(y) {
- var date = new Date(Date.UTC.apply(null, arguments));
- if (y < 1970) {
- date.setUTCFullYear(y);
- }
- return date;
- }
-
- function parseWeekday(input, locale) {
- if (typeof input === 'string') {
- if (!isNaN(input)) {
- input = parseInt(input, 10);
- }
- else {
- input = locale.weekdaysParse(input);
- if (typeof input !== 'number') {
- return null;
- }
- }
- }
- return input;
- }
-
- /************************************
- Relative Time
- ************************************/
-
-
- // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
- function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
- return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
- }
-
- function relativeTime(posNegDuration, withoutSuffix, locale) {
- var duration = moment.duration(posNegDuration).abs(),
- seconds = round(duration.as('s')),
- minutes = round(duration.as('m')),
- hours = round(duration.as('h')),
- days = round(duration.as('d')),
- months = round(duration.as('M')),
- years = round(duration.as('y')),
-
- args = seconds < relativeTimeThresholds.s && ['s', seconds] ||
- minutes === 1 && ['m'] ||
- minutes < relativeTimeThresholds.m && ['mm', minutes] ||
- hours === 1 && ['h'] ||
- hours < relativeTimeThresholds.h && ['hh', hours] ||
- days === 1 && ['d'] ||
- days < relativeTimeThresholds.d && ['dd', days] ||
- months === 1 && ['M'] ||
- months < relativeTimeThresholds.M && ['MM', months] ||
- years === 1 && ['y'] || ['yy', years];
-
- args[2] = withoutSuffix;
- args[3] = +posNegDuration > 0;
- args[4] = locale;
- return substituteTimeAgo.apply({}, args);
- }
-
-
- /************************************
- Week of Year
- ************************************/
-
-
- // firstDayOfWeek 0 = sun, 6 = sat
- // the day of the week that starts the week
- // (usually sunday or monday)
- // firstDayOfWeekOfYear 0 = sun, 6 = sat
- // the first week is the week that contains the first
- // of this day of the week
- // (eg. ISO weeks use thursday (4))
- function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
- var end = firstDayOfWeekOfYear - firstDayOfWeek,
- daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
- adjustedMoment;
-
-
- if (daysToDayOfWeek > end) {
- daysToDayOfWeek -= 7;
+ function configFromObject(config) {
+ if (config._d) {
+ return;
}
- if (daysToDayOfWeek < end - 7) {
- daysToDayOfWeek += 7;
+ var i = normalizeObjectUnits(config._i);
+ config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
+ return obj && parseInt(obj, 10);
+ });
+
+ configFromArray(config);
+ }
+
+ function createFromConfig (config) {
+ var res = new Moment(checkOverflow(prepareConfig(config)));
+ if (res._nextDay) {
+ // Adding is smart enough around DST
+ res.add(1, 'd');
+ res._nextDay = undefined;
}
- adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd');
- return {
- week: Math.ceil(adjustedMoment.dayOfYear() / 7),
- year: adjustedMoment.year()
- };
+ return res;
}
- //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
- function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
- var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
-
- d = d === 0 ? 7 : d;
- weekday = weekday != null ? weekday : firstDayOfWeek;
- daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
- dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
-
- return {
- year: dayOfYear > 0 ? year : year - 1,
- dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
- };
- }
-
- /************************************
- Top Level Functions
- ************************************/
-
- function makeMoment(config) {
+ function prepareConfig (config) {
var input = config._i,
format = config._f;
- config._locale = config._locale || moment.localeData(config._l);
+ config._locale = config._locale || locale_locales__getLocale(config._l);
if (input === null || (format === undefined && input === '')) {
- return moment.invalid({nullInput: true});
+ return valid__createInvalid({nullInput: true});
}
if (typeof input === 'string') {
config._i = input = config._locale.preparse(input);
}
- if (moment.isMoment(input)) {
- return new Moment(input, true);
+ if (isMoment(input)) {
+ return new Moment(checkOverflow(input));
+ } else if (isArray(format)) {
+ configFromStringAndArray(config);
} else if (format) {
- if (isArray(format)) {
- makeDateFromStringAndArray(config);
- } else {
- makeDateFromStringAndFormat(config);
- }
+ configFromStringAndFormat(config);
+ } else if (isDate(input)) {
+ config._d = input;
} else {
- makeDateFromInput(config);
+ configFromInput(config);
}
- return new Moment(config);
+ if (!valid__isValid(config)) {
+ config._d = null;
+ }
+
+ return config;
}
- moment = function (input, format, locale, strict) {
- var c;
+ function configFromInput(config) {
+ var input = config._i;
+ if (input === undefined) {
+ config._d = new Date(utils_hooks__hooks.now());
+ } else if (isDate(input)) {
+ config._d = new Date(+input);
+ } else if (typeof input === 'string') {
+ configFromString(config);
+ } else if (isArray(input)) {
+ config._a = map(input.slice(0), function (obj) {
+ return parseInt(obj, 10);
+ });
+ configFromArray(config);
+ } else if (typeof(input) === 'object') {
+ configFromObject(config);
+ } else if (typeof(input) === 'number') {
+ // from milliseconds
+ config._d = new Date(input);
+ } else {
+ utils_hooks__hooks.createFromInputFallback(config);
+ }
+ }
- if (typeof(locale) === "boolean") {
+ function createLocalOrUTC (input, format, locale, strict, isUTC) {
+ var c = {};
+
+ if (typeof(locale) === 'boolean') {
strict = locale;
locale = undefined;
}
// object construction must be done this way.
// https://github.com/moment/moment/issues/1423
- c = {};
c._isAMomentObject = true;
+ c._useUTC = c._isUTC = isUTC;
+ c._l = locale;
c._i = input;
c._f = format;
- c._l = locale;
c._strict = strict;
- c._isUTC = false;
- c._pf = defaultParsingFlags();
- return makeMoment(c);
- };
+ return createFromConfig(c);
+ }
- moment.suppressDeprecationWarnings = false;
+ function local__createLocal (input, format, locale, strict) {
+ return createLocalOrUTC(input, format, locale, strict, false);
+ }
- moment.createFromInputFallback = deprecate(
- 'moment construction falls back to js Date. This is ' +
- 'discouraged and will be removed in upcoming major ' +
- 'release. Please refer to ' +
- 'https://github.com/moment/moment/issues/1407 for more info.',
- function (config) {
- config._d = new Date(config._i);
+ var prototypeMin = deprecate(
+ 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
+ function () {
+ var other = local__createLocal.apply(null, arguments);
+ if (this.isValid() && other.isValid()) {
+ return other < this ? this : other;
+ } else {
+ return valid__createInvalid();
+ }
+ }
+ );
+
+ var prototypeMax = deprecate(
+ 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
+ function () {
+ var other = local__createLocal.apply(null, arguments);
+ if (this.isValid() && other.isValid()) {
+ return other > this ? this : other;
+ } else {
+ return valid__createInvalid();
+ }
}
);
@@ -1772,72 +1544,297 @@
moments = moments[0];
}
if (!moments.length) {
- return moment();
+ return local__createLocal();
}
res = moments[0];
for (i = 1; i < moments.length; ++i) {
- if (moments[i][fn](res)) {
+ if (!moments[i].isValid() || moments[i][fn](res)) {
res = moments[i];
}
}
return res;
}
- moment.min = function () {
+ // TODO: Use [].sort instead?
+ function min () {
var args = [].slice.call(arguments, 0);
return pickBy('isBefore', args);
- };
+ }
- moment.max = function () {
+ function max () {
var args = [].slice.call(arguments, 0);
return pickBy('isAfter', args);
+ }
+
+ var now = function () {
+ return Date.now ? Date.now() : +(new Date());
};
- // creating with utc
- moment.utc = function (input, format, locale, strict) {
- var c;
+ function Duration (duration) {
+ var normalizedInput = normalizeObjectUnits(duration),
+ years = normalizedInput.year || 0,
+ quarters = normalizedInput.quarter || 0,
+ months = normalizedInput.month || 0,
+ weeks = normalizedInput.week || 0,
+ days = normalizedInput.day || 0,
+ hours = normalizedInput.hour || 0,
+ minutes = normalizedInput.minute || 0,
+ seconds = normalizedInput.second || 0,
+ milliseconds = normalizedInput.millisecond || 0;
- if (typeof(locale) === "boolean") {
- strict = locale;
- locale = undefined;
+ // representation for dateAddRemove
+ this._milliseconds = +milliseconds +
+ seconds * 1e3 + // 1000
+ minutes * 6e4 + // 1000 * 60
+ hours * 36e5; // 1000 * 60 * 60
+ // Because of dateAddRemove treats 24 hours as different from a
+ // day when working around DST, we need to store them separately
+ this._days = +days +
+ weeks * 7;
+ // It is impossible translate months into days without knowing
+ // which months you are are talking about, so we have to store
+ // it separately.
+ this._months = +months +
+ quarters * 3 +
+ years * 12;
+
+ this._data = {};
+
+ this._locale = locale_locales__getLocale();
+
+ this._bubble();
+ }
+
+ function isDuration (obj) {
+ return obj instanceof Duration;
+ }
+
+ // FORMATTING
+
+ function offset (token, separator) {
+ addFormatToken(token, 0, 0, function () {
+ var offset = this.utcOffset();
+ var sign = '+';
+ if (offset < 0) {
+ offset = -offset;
+ sign = '-';
+ }
+ return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
+ });
+ }
+
+ offset('Z', ':');
+ offset('ZZ', '');
+
+ // PARSING
+
+ addRegexToken('Z', matchShortOffset);
+ addRegexToken('ZZ', matchShortOffset);
+ addParseToken(['Z', 'ZZ'], function (input, array, config) {
+ config._useUTC = true;
+ config._tzm = offsetFromString(matchShortOffset, input);
+ });
+
+ // HELPERS
+
+ // timezone chunker
+ // '+10:00' > ['10', '00']
+ // '-1530' > ['-15', '30']
+ var chunkOffset = /([\+\-]|\d\d)/gi;
+
+ function offsetFromString(matcher, string) {
+ var matches = ((string || '').match(matcher) || []);
+ var chunk = matches[matches.length - 1] || [];
+ var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
+ var minutes = +(parts[1] * 60) + toInt(parts[2]);
+
+ return parts[0] === '+' ? minutes : -minutes;
+ }
+
+ // Return a moment from input, that is local/utc/zone equivalent to model.
+ function cloneWithOffset(input, model) {
+ var res, diff;
+ if (model._isUTC) {
+ res = model.clone();
+ diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res);
+ // Use low-level api, because this fn is low-level api.
+ res._d.setTime(+res._d + diff);
+ utils_hooks__hooks.updateOffset(res, false);
+ return res;
+ } else {
+ return local__createLocal(input).local();
}
- // object construction must be done this way.
- // https://github.com/moment/moment/issues/1423
- c = {};
- c._isAMomentObject = true;
- c._useUTC = true;
- c._isUTC = true;
- c._l = locale;
- c._i = input;
- c._f = format;
- c._strict = strict;
- c._pf = defaultParsingFlags();
+ }
- return makeMoment(c).utc();
- };
+ function getDateOffset (m) {
+ // On Firefox.24 Date#getTimezoneOffset returns a floating point.
+ // https://github.com/moment/moment/pull/1871
+ return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
+ }
- // creating with unix timestamp (in seconds)
- moment.unix = function (input) {
- return moment(input * 1000);
- };
+ // HOOKS
- // duration
- moment.duration = function (input, key) {
+ // This function will be called whenever a moment is mutated.
+ // It is intended to keep the offset in sync with the timezone.
+ utils_hooks__hooks.updateOffset = function () {};
+
+ // MOMENTS
+
+ // keepLocalTime = true means only change the timezone, without
+ // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
+ // +0200, so we adjust the time as needed, to be valid.
+ //
+ // Keeping the time actually adds/subtracts (one hour)
+ // from the actual represented time. That is why we call updateOffset
+ // a second time. In case it wants us to change the offset again
+ // _changeInProgress == true case, then we have to adjust, because
+ // there is no such time in the given timezone.
+ function getSetOffset (input, keepLocalTime) {
+ var offset = this._offset || 0,
+ localAdjust;
+ if (!this.isValid()) {
+ return input != null ? this : NaN;
+ }
+ if (input != null) {
+ if (typeof input === 'string') {
+ input = offsetFromString(matchShortOffset, input);
+ } else if (Math.abs(input) < 16) {
+ input = input * 60;
+ }
+ if (!this._isUTC && keepLocalTime) {
+ localAdjust = getDateOffset(this);
+ }
+ this._offset = input;
+ this._isUTC = true;
+ if (localAdjust != null) {
+ this.add(localAdjust, 'm');
+ }
+ if (offset !== input) {
+ if (!keepLocalTime || this._changeInProgress) {
+ add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);
+ } else if (!this._changeInProgress) {
+ this._changeInProgress = true;
+ utils_hooks__hooks.updateOffset(this, true);
+ this._changeInProgress = null;
+ }
+ }
+ return this;
+ } else {
+ return this._isUTC ? offset : getDateOffset(this);
+ }
+ }
+
+ function getSetZone (input, keepLocalTime) {
+ if (input != null) {
+ if (typeof input !== 'string') {
+ input = -input;
+ }
+
+ this.utcOffset(input, keepLocalTime);
+
+ return this;
+ } else {
+ return -this.utcOffset();
+ }
+ }
+
+ function setOffsetToUTC (keepLocalTime) {
+ return this.utcOffset(0, keepLocalTime);
+ }
+
+ function setOffsetToLocal (keepLocalTime) {
+ if (this._isUTC) {
+ this.utcOffset(0, keepLocalTime);
+ this._isUTC = false;
+
+ if (keepLocalTime) {
+ this.subtract(getDateOffset(this), 'm');
+ }
+ }
+ return this;
+ }
+
+ function setOffsetToParsedOffset () {
+ if (this._tzm) {
+ this.utcOffset(this._tzm);
+ } else if (typeof this._i === 'string') {
+ this.utcOffset(offsetFromString(matchOffset, this._i));
+ }
+ return this;
+ }
+
+ function hasAlignedHourOffset (input) {
+ if (!this.isValid()) {
+ return false;
+ }
+ input = input ? local__createLocal(input).utcOffset() : 0;
+
+ return (this.utcOffset() - input) % 60 === 0;
+ }
+
+ function isDaylightSavingTime () {
+ return (
+ this.utcOffset() > this.clone().month(0).utcOffset() ||
+ this.utcOffset() > this.clone().month(5).utcOffset()
+ );
+ }
+
+ function isDaylightSavingTimeShifted () {
+ if (!isUndefined(this._isDSTShifted)) {
+ return this._isDSTShifted;
+ }
+
+ var c = {};
+
+ copyConfig(c, this);
+ c = prepareConfig(c);
+
+ if (c._a) {
+ var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
+ this._isDSTShifted = this.isValid() &&
+ compareArrays(c._a, other.toArray()) > 0;
+ } else {
+ this._isDSTShifted = false;
+ }
+
+ return this._isDSTShifted;
+ }
+
+ function isLocal () {
+ return this.isValid() ? !this._isUTC : false;
+ }
+
+ function isUtcOffset () {
+ return this.isValid() ? this._isUTC : false;
+ }
+
+ function isUtc () {
+ return this.isValid() ? this._isUTC && this._offset === 0 : false;
+ }
+
+ // ASP.NET json date format regex
+ var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/;
+
+ // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
+ // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
+ var isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;
+
+ function create__createDuration (input, key) {
var duration = input,
// matching against regexp is expensive, do it on demand
match = null,
sign,
ret,
- parseIso,
diffRes;
- if (moment.isDuration(input)) {
+ if (isDuration(input)) {
duration = {
- ms: input._milliseconds,
- d: input._days,
- M: input._months
+ ms : input._milliseconds,
+ d : input._days,
+ M : input._months
};
} else if (typeof input === 'number') {
duration = {};
@@ -1846,38 +1843,31 @@
} else {
duration.milliseconds = input;
}
- } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
+ } else if (!!(match = aspNetRegex.exec(input))) {
sign = (match[1] === '-') ? -1 : 1;
duration = {
- y: 0,
- d: toInt(match[DATE]) * sign,
- h: toInt(match[HOUR]) * sign,
- m: toInt(match[MINUTE]) * sign,
- s: toInt(match[SECOND]) * sign,
- ms: toInt(match[MILLISECOND]) * sign
+ y : 0,
+ d : toInt(match[DATE]) * sign,
+ h : toInt(match[HOUR]) * sign,
+ m : toInt(match[MINUTE]) * sign,
+ s : toInt(match[SECOND]) * sign,
+ ms : toInt(match[MILLISECOND]) * sign
};
- } else if (!!(match = isoDurationRegex.exec(input))) {
+ } else if (!!(match = isoRegex.exec(input))) {
sign = (match[1] === '-') ? -1 : 1;
- parseIso = function (inp) {
- // We'd normally use ~~inp for this, but unfortunately it also
- // converts floats to ints.
- // inp may be undefined, so careful calling replace on it.
- var res = inp && parseFloat(inp.replace(',', '.'));
- // apply sign while we're at it
- return (isNaN(res) ? 0 : res) * sign;
- };
duration = {
- y: parseIso(match[2]),
- M: parseIso(match[3]),
- d: parseIso(match[4]),
- h: parseIso(match[5]),
- m: parseIso(match[6]),
- s: parseIso(match[7]),
- w: parseIso(match[8])
+ y : parseIso(match[2], sign),
+ M : parseIso(match[3], sign),
+ d : parseIso(match[4], sign),
+ h : parseIso(match[5], sign),
+ m : parseIso(match[6], sign),
+ s : parseIso(match[7], sign),
+ w : parseIso(match[8], sign)
};
- } else if (typeof duration === 'object' &&
- ('from' in duration || 'to' in duration)) {
- diffRes = momentsDifference(moment(duration.from), moment(duration.to));
+ } else if (duration == null) {// checks for null or undefined
+ duration = {};
+ } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
+ diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
duration = {};
duration.ms = diffRes.milliseconds;
@@ -1886,876 +1876,1335 @@
ret = new Duration(duration);
- if (moment.isDuration(input) && input.hasOwnProperty('_locale')) {
+ if (isDuration(input) && hasOwnProp(input, '_locale')) {
ret._locale = input._locale;
}
return ret;
- };
+ }
- // version number
- moment.version = VERSION;
+ create__createDuration.fn = Duration.prototype;
- // default format
- moment.defaultFormat = isoFormat;
+ function parseIso (inp, sign) {
+ // We'd normally use ~~inp for this, but unfortunately it also
+ // converts floats to ints.
+ // inp may be undefined, so careful calling replace on it.
+ var res = inp && parseFloat(inp.replace(',', '.'));
+ // apply sign while we're at it
+ return (isNaN(res) ? 0 : res) * sign;
+ }
- // constant that refers to the ISO standard
- moment.ISO_8601 = function () {};
+ function positiveMomentsDifference(base, other) {
+ var res = {milliseconds: 0, months: 0};
- // Plugins that add properties should also add the key here (null value),
- // so we can properly clone ourselves.
- moment.momentProperties = momentProperties;
-
- // This function will be called whenever a moment is mutated.
- // It is intended to keep the offset in sync with the timezone.
- moment.updateOffset = function () {};
-
- // This function allows you to set a threshold for relative time strings
- moment.relativeTimeThreshold = function (threshold, limit) {
- if (relativeTimeThresholds[threshold] === undefined) {
- return false;
- }
- if (limit === undefined) {
- return relativeTimeThresholds[threshold];
- }
- relativeTimeThresholds[threshold] = limit;
- return true;
- };
-
- moment.lang = deprecate(
- "moment.lang is deprecated. Use moment.locale instead.",
- function (key, value) {
- return moment.locale(key, value);
- }
- );
-
- // This function will load locale and then set the global locale. If
- // no arguments are passed in, it will simply return the current global
- // locale key.
- moment.locale = function (key, values) {
- var data;
- if (key) {
- if (typeof(values) !== "undefined") {
- data = moment.defineLocale(key, values);
- }
- else {
- data = moment.localeData(key);
- }
-
- if (data) {
- moment.duration._locale = moment._locale = data;
- }
+ res.months = other.month() - base.month() +
+ (other.year() - base.year()) * 12;
+ if (base.clone().add(res.months, 'M').isAfter(other)) {
+ --res.months;
}
- return moment._locale._abbr;
- };
+ res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
- moment.defineLocale = function (name, values) {
- if (values !== null) {
- values.abbr = name;
- if (!locales[name]) {
- locales[name] = new Locale();
- }
- locales[name].set(values);
+ return res;
+ }
- // backwards compat for now: also set the locale
- moment.locale(name);
+ function momentsDifference(base, other) {
+ var res;
+ if (!(base.isValid() && other.isValid())) {
+ return {milliseconds: 0, months: 0};
+ }
- return locales[name];
+ other = cloneWithOffset(other, base);
+ if (base.isBefore(other)) {
+ res = positiveMomentsDifference(base, other);
} else {
- // useful for testing
- delete locales[name];
- return null;
- }
- };
-
- moment.langData = deprecate(
- "moment.langData is deprecated. Use moment.localeData instead.",
- function (key) {
- return moment.localeData(key);
- }
- );
-
- // returns locale data
- moment.localeData = function (key) {
- var locale;
-
- if (key && key._locale && key._locale._abbr) {
- key = key._locale._abbr;
+ res = positiveMomentsDifference(other, base);
+ res.milliseconds = -res.milliseconds;
+ res.months = -res.months;
}
- if (!key) {
- return moment._locale;
- }
-
- if (!isArray(key)) {
- //short-circuit everything else
- locale = loadLocale(key);
- if (locale) {
- return locale;
- }
- key = [key];
- }
-
- return chooseLocale(key);
- };
-
- // compare moment object
- moment.isMoment = function (obj) {
- return obj instanceof Moment ||
- (obj != null && obj.hasOwnProperty('_isAMomentObject'));
- };
-
- // for typechecking Duration objects
- moment.isDuration = function (obj) {
- return obj instanceof Duration;
- };
-
- for (i = lists.length - 1; i >= 0; --i) {
- makeList(lists[i]);
+ return res;
}
- moment.normalizeUnits = function (units) {
- return normalizeUnits(units);
- };
-
- moment.invalid = function (flags) {
- var m = moment.utc(NaN);
- if (flags != null) {
- extend(m._pf, flags);
- }
- else {
- m._pf.userInvalidated = true;
- }
-
- return m;
- };
-
- moment.parseZone = function () {
- return moment.apply(null, arguments).parseZone();
- };
-
- moment.parseTwoDigitYear = function (input) {
- return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
- };
-
- /************************************
- Moment Prototype
- ************************************/
-
-
- extend(moment.fn = Moment.prototype, {
-
- clone : function () {
- return moment(this);
- },
-
- valueOf : function () {
- return +this._d + ((this._offset || 0) * 60000);
- },
-
- unix : function () {
- return Math.floor(+this / 1000);
- },
-
- toString : function () {
- return this.clone().locale('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
- },
-
- toDate : function () {
- return this._offset ? new Date(+this) : this._d;
- },
-
- toISOString : function () {
- var m = moment(this).utc();
- if (0 < m.year() && m.year() <= 9999) {
- return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
- } else {
- return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
- }
- },
-
- toArray : function () {
- var m = this;
- return [
- m.year(),
- m.month(),
- m.date(),
- m.hours(),
- m.minutes(),
- m.seconds(),
- m.milliseconds()
- ];
- },
-
- isValid : function () {
- return isValid(this);
- },
-
- isDSTShifted : function () {
- if (this._a) {
- return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
+ // TODO: remove 'name' arg after deprecation is removed
+ function createAdder(direction, name) {
+ return function (val, period) {
+ var dur, tmp;
+ //invert the arguments, but complain about it
+ if (period !== null && !isNaN(+period)) {
+ deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
+ tmp = val; val = period; period = tmp;
}
- return false;
- },
-
- parsingFlags : function () {
- return extend({}, this._pf);
- },
-
- invalidAt: function () {
- return this._pf.overflow;
- },
-
- utc : function (keepLocalTime) {
- return this.zone(0, keepLocalTime);
- },
-
- local : function (keepLocalTime) {
- if (this._isUTC) {
- this.zone(0, keepLocalTime);
- this._isUTC = false;
-
- if (keepLocalTime) {
- this.add(this._d.getTimezoneOffset(), 'm');
- }
- }
+ val = typeof val === 'string' ? +val : val;
+ dur = create__createDuration(val, period);
+ add_subtract__addSubtract(this, dur, direction);
return this;
- },
-
- format : function (inputString) {
- var output = formatMoment(this, inputString || moment.defaultFormat);
- return this.localeData().postformat(output);
- },
-
- add : createAdder(1, 'add'),
-
- subtract : createAdder(-1, 'subtract'),
-
- diff : function (input, units, asFloat) {
- var that = makeAs(input, this),
- zoneDiff = (this.zone() - that.zone()) * 6e4,
- diff, output;
-
- units = normalizeUnits(units);
-
- if (units === 'year' || units === 'month') {
- // average number of days in the months in the given dates
- diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2
- // difference in months
- output = ((this.year() - that.year()) * 12) + (this.month() - that.month());
- // adjust by taking difference in days, average number of days
- // and dst in the given months.
- output += ((this - moment(this).startOf('month')) -
- (that - moment(that).startOf('month'))) / diff;
- // same as above but with zones, to negate all dst
- output -= ((this.zone() - moment(this).startOf('month').zone()) -
- (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff;
- if (units === 'year') {
- output = output / 12;
- }
- } else {
- diff = (this - that);
- output = units === 'second' ? diff / 1e3 : // 1000
- units === 'minute' ? diff / 6e4 : // 1000 * 60
- units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60
- units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
- units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
- diff;
- }
- return asFloat ? output : absRound(output);
- },
-
- from : function (time, withoutSuffix) {
- return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
- },
-
- fromNow : function (withoutSuffix) {
- return this.from(moment(), withoutSuffix);
- },
-
- calendar : function (time) {
- // We want to compare the start of today, vs this.
- // Getting start-of-today depends on whether we're zone'd or not.
- var now = time || moment(),
- sod = makeAs(now, this).startOf('day'),
- diff = this.diff(sod, 'days', true),
- format = diff < -6 ? 'sameElse' :
- diff < -1 ? 'lastWeek' :
- diff < 0 ? 'lastDay' :
- diff < 1 ? 'sameDay' :
- diff < 2 ? 'nextDay' :
- diff < 7 ? 'nextWeek' : 'sameElse';
- return this.format(this.localeData().calendar(format, this));
- },
-
- isLeapYear : function () {
- return isLeapYear(this.year());
- },
-
- isDST : function () {
- return (this.zone() < this.clone().month(0).zone() ||
- this.zone() < this.clone().month(5).zone());
- },
-
- day : function (input) {
- var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
- if (input != null) {
- input = parseWeekday(input, this.localeData());
- return this.add(input - day, 'd');
- } else {
- return day;
- }
- },
-
- month : makeAccessor('Month', true),
-
- startOf : function (units) {
- units = normalizeUnits(units);
- // the following switch intentionally omits break keywords
- // to utilize falling through the cases.
- switch (units) {
- case 'year':
- this.month(0);
- /* falls through */
- case 'quarter':
- case 'month':
- this.date(1);
- /* falls through */
- case 'week':
- case 'isoWeek':
- case 'day':
- this.hours(0);
- /* falls through */
- case 'hour':
- this.minutes(0);
- /* falls through */
- case 'minute':
- this.seconds(0);
- /* falls through */
- case 'second':
- this.milliseconds(0);
- /* falls through */
- }
-
- // weeks are a special case
- if (units === 'week') {
- this.weekday(0);
- } else if (units === 'isoWeek') {
- this.isoWeekday(1);
- }
-
- // quarters are also special
- if (units === 'quarter') {
- this.month(Math.floor(this.month() / 3) * 3);
- }
-
- return this;
- },
-
- endOf: function (units) {
- units = normalizeUnits(units);
- return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
- },
-
- isAfter: function (input, units) {
- units = typeof units !== 'undefined' ? units : 'millisecond';
- return +this.clone().startOf(units) > +moment(input).startOf(units);
- },
-
- isBefore: function (input, units) {
- units = typeof units !== 'undefined' ? units : 'millisecond';
- return +this.clone().startOf(units) < +moment(input).startOf(units);
- },
-
- isSame: function (input, units) {
- units = units || 'ms';
- return +this.clone().startOf(units) === +makeAs(input, this).startOf(units);
- },
-
- min: deprecate(
- 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
- function (other) {
- other = moment.apply(null, arguments);
- return other < this ? this : other;
- }
- ),
-
- max: deprecate(
- 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
- function (other) {
- other = moment.apply(null, arguments);
- return other > this ? this : other;
- }
- ),
-
- // keepLocalTime = true means only change the timezone, without
- // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]-->
- // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone
- // +0200, so we adjust the time as needed, to be valid.
- //
- // Keeping the time actually adds/subtracts (one hour)
- // from the actual represented time. That is why we call updateOffset
- // a second time. In case it wants us to change the offset again
- // _changeInProgress == true case, then we have to adjust, because
- // there is no such time in the given timezone.
- zone : function (input, keepLocalTime) {
- var offset = this._offset || 0,
- localAdjust;
- if (input != null) {
- if (typeof input === 'string') {
- input = timezoneMinutesFromString(input);
- }
- if (Math.abs(input) < 16) {
- input = input * 60;
- }
- if (!this._isUTC && keepLocalTime) {
- localAdjust = this._d.getTimezoneOffset();
- }
- this._offset = input;
- this._isUTC = true;
- if (localAdjust != null) {
- this.subtract(localAdjust, 'm');
- }
- if (offset !== input) {
- if (!keepLocalTime || this._changeInProgress) {
- addOrSubtractDurationFromMoment(this,
- moment.duration(offset - input, 'm'), 1, false);
- } else if (!this._changeInProgress) {
- this._changeInProgress = true;
- moment.updateOffset(this, true);
- this._changeInProgress = null;
- }
- }
- } else {
- return this._isUTC ? offset : this._d.getTimezoneOffset();
- }
- return this;
- },
-
- zoneAbbr : function () {
- return this._isUTC ? 'UTC' : '';
- },
-
- zoneName : function () {
- return this._isUTC ? 'Coordinated Universal Time' : '';
- },
-
- parseZone : function () {
- if (this._tzm) {
- this.zone(this._tzm);
- } else if (typeof this._i === 'string') {
- this.zone(this._i);
- }
- return this;
- },
-
- hasAlignedHourOffset : function (input) {
- if (!input) {
- input = 0;
- }
- else {
- input = moment(input).zone();
- }
-
- return (this.zone() - input) % 60 === 0;
- },
-
- daysInMonth : function () {
- return daysInMonth(this.year(), this.month());
- },
-
- dayOfYear : function (input) {
- var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
- return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
- },
-
- quarter : function (input) {
- return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
- },
-
- weekYear : function (input) {
- var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
- return input == null ? year : this.add((input - year), 'y');
- },
-
- isoWeekYear : function (input) {
- var year = weekOfYear(this, 1, 4).year;
- return input == null ? year : this.add((input - year), 'y');
- },
-
- week : function (input) {
- var week = this.localeData().week(this);
- return input == null ? week : this.add((input - week) * 7, 'd');
- },
-
- isoWeek : function (input) {
- var week = weekOfYear(this, 1, 4).week;
- return input == null ? week : this.add((input - week) * 7, 'd');
- },
-
- weekday : function (input) {
- var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
- return input == null ? weekday : this.add(input - weekday, 'd');
- },
-
- isoWeekday : function (input) {
- // behaves the same as moment#day except
- // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
- // as a setter, sunday should belong to the previous week.
- return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
- },
-
- isoWeeksInYear : function () {
- return weeksInYear(this.year(), 1, 4);
- },
-
- weeksInYear : function () {
- var weekInfo = this.localeData()._week;
- return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
- },
-
- get : function (units) {
- units = normalizeUnits(units);
- return this[units]();
- },
-
- set : function (units, value) {
- units = normalizeUnits(units);
- if (typeof this[units] === 'function') {
- this[units](value);
- }
- return this;
- },
-
- // If passed a locale key, it will set the locale for this
- // instance. Otherwise, it will return the locale configuration
- // variables for this instance.
- locale : function (key) {
- if (key === undefined) {
- return this._locale._abbr;
- } else {
- this._locale = moment.localeData(key);
- return this;
- }
- },
-
- lang : deprecate(
- "moment().lang() is deprecated. Use moment().localeData() instead.",
- function (key) {
- if (key === undefined) {
- return this.localeData();
- } else {
- this._locale = moment.localeData(key);
- return this;
- }
- }
- ),
-
- localeData : function () {
- return this._locale;
- }
- });
-
- function rawMonthSetter(mom, value) {
- var dayOfMonth;
-
- // TODO: Move this out of here!
- if (typeof value === 'string') {
- value = mom.localeData().monthsParse(value);
- // TODO: Another silent failure?
- if (typeof value !== 'number') {
- return mom;
- }
- }
-
- dayOfMonth = Math.min(mom.date(),
- daysInMonth(mom.year(), value));
- mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
- return mom;
- }
-
- function rawGetter(mom, unit) {
- return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
- }
-
- function rawSetter(mom, unit, value) {
- if (unit === 'Month') {
- return rawMonthSetter(mom, value);
- } else {
- return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
- }
- }
-
- function makeAccessor(unit, keepTime) {
- return function (value) {
- if (value != null) {
- rawSetter(this, unit, value);
- moment.updateOffset(this, keepTime);
- return this;
- } else {
- return rawGetter(this, unit);
- }
};
}
- moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false);
- moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false);
- moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false);
+ function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {
+ var milliseconds = duration._milliseconds,
+ days = duration._days,
+ months = duration._months;
+
+ if (!mom.isValid()) {
+ // No op
+ return;
+ }
+
+ updateOffset = updateOffset == null ? true : updateOffset;
+
+ if (milliseconds) {
+ mom._d.setTime(+mom._d + milliseconds * isAdding);
+ }
+ if (days) {
+ get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);
+ }
+ if (months) {
+ setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);
+ }
+ if (updateOffset) {
+ utils_hooks__hooks.updateOffset(mom, days || months);
+ }
+ }
+
+ var add_subtract__add = createAdder(1, 'add');
+ var add_subtract__subtract = createAdder(-1, 'subtract');
+
+ function moment_calendar__calendar (time, formats) {
+ // We want to compare the start of today, vs this.
+ // Getting start-of-today depends on whether we're local/utc/offset or not.
+ var now = time || local__createLocal(),
+ sod = cloneWithOffset(now, this).startOf('day'),
+ diff = this.diff(sod, 'days', true),
+ format = diff < -6 ? 'sameElse' :
+ diff < -1 ? 'lastWeek' :
+ diff < 0 ? 'lastDay' :
+ diff < 1 ? 'sameDay' :
+ diff < 2 ? 'nextDay' :
+ diff < 7 ? 'nextWeek' : 'sameElse';
+
+ var output = formats && (isFunction(formats[format]) ? formats[format]() : formats[format]);
+
+ return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)));
+ }
+
+ function clone () {
+ return new Moment(this);
+ }
+
+ function isAfter (input, units) {
+ var localInput = isMoment(input) ? input : local__createLocal(input);
+ if (!(this.isValid() && localInput.isValid())) {
+ return false;
+ }
+ units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
+ if (units === 'millisecond') {
+ return +this > +localInput;
+ } else {
+ return +localInput < +this.clone().startOf(units);
+ }
+ }
+
+ function isBefore (input, units) {
+ var localInput = isMoment(input) ? input : local__createLocal(input);
+ if (!(this.isValid() && localInput.isValid())) {
+ return false;
+ }
+ units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
+ if (units === 'millisecond') {
+ return +this < +localInput;
+ } else {
+ return +this.clone().endOf(units) < +localInput;
+ }
+ }
+
+ function isBetween (from, to, units) {
+ return this.isAfter(from, units) && this.isBefore(to, units);
+ }
+
+ function isSame (input, units) {
+ var localInput = isMoment(input) ? input : local__createLocal(input),
+ inputMs;
+ if (!(this.isValid() && localInput.isValid())) {
+ return false;
+ }
+ units = normalizeUnits(units || 'millisecond');
+ if (units === 'millisecond') {
+ return +this === +localInput;
+ } else {
+ inputMs = +localInput;
+ return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
+ }
+ }
+
+ function isSameOrAfter (input, units) {
+ return this.isSame(input, units) || this.isAfter(input,units);
+ }
+
+ function isSameOrBefore (input, units) {
+ return this.isSame(input, units) || this.isBefore(input,units);
+ }
+
+ function diff (input, units, asFloat) {
+ var that,
+ zoneDelta,
+ delta, output;
+
+ if (!this.isValid()) {
+ return NaN;
+ }
+
+ that = cloneWithOffset(input, this);
+
+ if (!that.isValid()) {
+ return NaN;
+ }
+
+ zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
+
+ units = normalizeUnits(units);
+
+ if (units === 'year' || units === 'month' || units === 'quarter') {
+ output = monthDiff(this, that);
+ if (units === 'quarter') {
+ output = output / 3;
+ } else if (units === 'year') {
+ output = output / 12;
+ }
+ } else {
+ delta = this - that;
+ output = units === 'second' ? delta / 1e3 : // 1000
+ units === 'minute' ? delta / 6e4 : // 1000 * 60
+ units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
+ units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
+ units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
+ delta;
+ }
+ return asFloat ? output : absFloor(output);
+ }
+
+ function monthDiff (a, b) {
+ // difference in months
+ var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
+ // b is in (anchor - 1 month, anchor + 1 month)
+ anchor = a.clone().add(wholeMonthDiff, 'months'),
+ anchor2, adjust;
+
+ if (b - anchor < 0) {
+ anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
+ // linear across the month
+ adjust = (b - anchor) / (anchor - anchor2);
+ } else {
+ anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
+ // linear across the month
+ adjust = (b - anchor) / (anchor2 - anchor);
+ }
+
+ return -(wholeMonthDiff + adjust);
+ }
+
+ utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
+
+ function toString () {
+ return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
+ }
+
+ function moment_format__toISOString () {
+ var m = this.clone().utc();
+ if (0 < m.year() && m.year() <= 9999) {
+ if (isFunction(Date.prototype.toISOString)) {
+ // native implementation is ~50x faster, use it when we can
+ return this.toDate().toISOString();
+ } else {
+ return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ }
+ } else {
+ return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ }
+ }
+
+ function format (inputString) {
+ var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);
+ return this.localeData().postformat(output);
+ }
+
+ function from (time, withoutSuffix) {
+ if (this.isValid() &&
+ ((isMoment(time) && time.isValid()) ||
+ local__createLocal(time).isValid())) {
+ return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
+ } else {
+ return this.localeData().invalidDate();
+ }
+ }
+
+ function fromNow (withoutSuffix) {
+ return this.from(local__createLocal(), withoutSuffix);
+ }
+
+ function to (time, withoutSuffix) {
+ if (this.isValid() &&
+ ((isMoment(time) && time.isValid()) ||
+ local__createLocal(time).isValid())) {
+ return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
+ } else {
+ return this.localeData().invalidDate();
+ }
+ }
+
+ function toNow (withoutSuffix) {
+ return this.to(local__createLocal(), withoutSuffix);
+ }
+
+ // If passed a locale key, it will set the locale for this
+ // instance. Otherwise, it will return the locale configuration
+ // variables for this instance.
+ function locale (key) {
+ var newLocaleData;
+
+ if (key === undefined) {
+ return this._locale._abbr;
+ } else {
+ newLocaleData = locale_locales__getLocale(key);
+ if (newLocaleData != null) {
+ this._locale = newLocaleData;
+ }
+ return this;
+ }
+ }
+
+ var lang = deprecate(
+ 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
+ function (key) {
+ if (key === undefined) {
+ return this.localeData();
+ } else {
+ return this.locale(key);
+ }
+ }
+ );
+
+ function localeData () {
+ return this._locale;
+ }
+
+ function startOf (units) {
+ units = normalizeUnits(units);
+ // the following switch intentionally omits break keywords
+ // to utilize falling through the cases.
+ switch (units) {
+ case 'year':
+ this.month(0);
+ /* falls through */
+ case 'quarter':
+ case 'month':
+ this.date(1);
+ /* falls through */
+ case 'week':
+ case 'isoWeek':
+ case 'day':
+ this.hours(0);
+ /* falls through */
+ case 'hour':
+ this.minutes(0);
+ /* falls through */
+ case 'minute':
+ this.seconds(0);
+ /* falls through */
+ case 'second':
+ this.milliseconds(0);
+ }
+
+ // weeks are a special case
+ if (units === 'week') {
+ this.weekday(0);
+ }
+ if (units === 'isoWeek') {
+ this.isoWeekday(1);
+ }
+
+ // quarters are also special
+ if (units === 'quarter') {
+ this.month(Math.floor(this.month() / 3) * 3);
+ }
+
+ return this;
+ }
+
+ function endOf (units) {
+ units = normalizeUnits(units);
+ if (units === undefined || units === 'millisecond') {
+ return this;
+ }
+ return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
+ }
+
+ function to_type__valueOf () {
+ return +this._d - ((this._offset || 0) * 60000);
+ }
+
+ function unix () {
+ return Math.floor(+this / 1000);
+ }
+
+ function toDate () {
+ return this._offset ? new Date(+this) : this._d;
+ }
+
+ function toArray () {
+ var m = this;
+ return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
+ }
+
+ function toObject () {
+ var m = this;
+ return {
+ years: m.year(),
+ months: m.month(),
+ date: m.date(),
+ hours: m.hours(),
+ minutes: m.minutes(),
+ seconds: m.seconds(),
+ milliseconds: m.milliseconds()
+ };
+ }
+
+ function toJSON () {
+ // JSON.stringify(new Date(NaN)) === 'null'
+ return this.isValid() ? this.toISOString() : 'null';
+ }
+
+ function moment_valid__isValid () {
+ return valid__isValid(this);
+ }
+
+ function parsingFlags () {
+ return extend({}, getParsingFlags(this));
+ }
+
+ function invalidAt () {
+ return getParsingFlags(this).overflow;
+ }
+
+ function creationData() {
+ return {
+ input: this._i,
+ format: this._f,
+ locale: this._locale,
+ isUTC: this._isUTC,
+ strict: this._strict
+ };
+ }
+
+ // FORMATTING
+
+ addFormatToken(0, ['gg', 2], 0, function () {
+ return this.weekYear() % 100;
+ });
+
+ addFormatToken(0, ['GG', 2], 0, function () {
+ return this.isoWeekYear() % 100;
+ });
+
+ function addWeekYearFormatToken (token, getter) {
+ addFormatToken(0, [token, token.length], 0, getter);
+ }
+
+ addWeekYearFormatToken('gggg', 'weekYear');
+ addWeekYearFormatToken('ggggg', 'weekYear');
+ addWeekYearFormatToken('GGGG', 'isoWeekYear');
+ addWeekYearFormatToken('GGGGG', 'isoWeekYear');
+
+ // ALIASES
+
+ addUnitAlias('weekYear', 'gg');
+ addUnitAlias('isoWeekYear', 'GG');
+
+ // PARSING
+
+ addRegexToken('G', matchSigned);
+ addRegexToken('g', matchSigned);
+ addRegexToken('GG', match1to2, match2);
+ addRegexToken('gg', match1to2, match2);
+ addRegexToken('GGGG', match1to4, match4);
+ addRegexToken('gggg', match1to4, match4);
+ addRegexToken('GGGGG', match1to6, match6);
+ addRegexToken('ggggg', match1to6, match6);
+
+ addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
+ week[token.substr(0, 2)] = toInt(input);
+ });
+
+ addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
+ week[token] = utils_hooks__hooks.parseTwoDigitYear(input);
+ });
+
+ // MOMENTS
+
+ function getSetWeekYear (input) {
+ return getSetWeekYearHelper.call(this,
+ input,
+ this.week(),
+ this.weekday(),
+ this.localeData()._week.dow,
+ this.localeData()._week.doy);
+ }
+
+ function getSetISOWeekYear (input) {
+ return getSetWeekYearHelper.call(this,
+ input, this.isoWeek(), this.isoWeekday(), 1, 4);
+ }
+
+ function getISOWeeksInYear () {
+ return weeksInYear(this.year(), 1, 4);
+ }
+
+ function getWeeksInYear () {
+ var weekInfo = this.localeData()._week;
+ return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+ }
+
+ function getSetWeekYearHelper(input, week, weekday, dow, doy) {
+ var weeksTarget;
+ if (input == null) {
+ return weekOfYear(this, dow, doy).year;
+ } else {
+ weeksTarget = weeksInYear(input, dow, doy);
+ if (week > weeksTarget) {
+ week = weeksTarget;
+ }
+ return setWeekAll.call(this, input, week, weekday, dow, doy);
+ }
+ }
+
+ function setWeekAll(weekYear, week, weekday, dow, doy) {
+ var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
+ date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
+
+ // console.log("got", weekYear, week, weekday, "set", date.toISOString());
+ this.year(date.getUTCFullYear());
+ this.month(date.getUTCMonth());
+ this.date(date.getUTCDate());
+ return this;
+ }
+
+ // FORMATTING
+
+ addFormatToken('Q', 0, 'Qo', 'quarter');
+
+ // ALIASES
+
+ addUnitAlias('quarter', 'Q');
+
+ // PARSING
+
+ addRegexToken('Q', match1);
+ addParseToken('Q', function (input, array) {
+ array[MONTH] = (toInt(input) - 1) * 3;
+ });
+
+ // MOMENTS
+
+ function getSetQuarter (input) {
+ return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
+ }
+
+ // FORMATTING
+
+ addFormatToken('w', ['ww', 2], 'wo', 'week');
+ addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
+
+ // ALIASES
+
+ addUnitAlias('week', 'w');
+ addUnitAlias('isoWeek', 'W');
+
+ // PARSING
+
+ addRegexToken('w', match1to2);
+ addRegexToken('ww', match1to2, match2);
+ addRegexToken('W', match1to2);
+ addRegexToken('WW', match1to2, match2);
+
+ addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
+ week[token.substr(0, 1)] = toInt(input);
+ });
+
+ // HELPERS
+
+ // LOCALES
+
+ function localeWeek (mom) {
+ return weekOfYear(mom, this._week.dow, this._week.doy).week;
+ }
+
+ var defaultLocaleWeek = {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+ };
+
+ function localeFirstDayOfWeek () {
+ return this._week.dow;
+ }
+
+ function localeFirstDayOfYear () {
+ return this._week.doy;
+ }
+
+ // MOMENTS
+
+ function getSetWeek (input) {
+ var week = this.localeData().week(this);
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ }
+
+ function getSetISOWeek (input) {
+ var week = weekOfYear(this, 1, 4).week;
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ }
+
+ // FORMATTING
+
+ addFormatToken('D', ['DD', 2], 'Do', 'date');
+
+ // ALIASES
+
+ addUnitAlias('date', 'D');
+
+ // PARSING
+
+ addRegexToken('D', match1to2);
+ addRegexToken('DD', match1to2, match2);
+ addRegexToken('Do', function (isStrict, locale) {
+ return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
+ });
+
+ addParseToken(['D', 'DD'], DATE);
+ addParseToken('Do', function (input, array) {
+ array[DATE] = toInt(input.match(match1to2)[0], 10);
+ });
+
+ // MOMENTS
+
+ var getSetDayOfMonth = makeGetSet('Date', true);
+
+ // FORMATTING
+
+ addFormatToken('d', 0, 'do', 'day');
+
+ addFormatToken('dd', 0, 0, function (format) {
+ return this.localeData().weekdaysMin(this, format);
+ });
+
+ addFormatToken('ddd', 0, 0, function (format) {
+ return this.localeData().weekdaysShort(this, format);
+ });
+
+ addFormatToken('dddd', 0, 0, function (format) {
+ return this.localeData().weekdays(this, format);
+ });
+
+ addFormatToken('e', 0, 0, 'weekday');
+ addFormatToken('E', 0, 0, 'isoWeekday');
+
+ // ALIASES
+
+ addUnitAlias('day', 'd');
+ addUnitAlias('weekday', 'e');
+ addUnitAlias('isoWeekday', 'E');
+
+ // PARSING
+
+ addRegexToken('d', match1to2);
+ addRegexToken('e', match1to2);
+ addRegexToken('E', match1to2);
+ addRegexToken('dd', matchWord);
+ addRegexToken('ddd', matchWord);
+ addRegexToken('dddd', matchWord);
+
+ addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
+ var weekday = config._locale.weekdaysParse(input, token, config._strict);
+ // if we didn't get a weekday name, mark the date as invalid
+ if (weekday != null) {
+ week.d = weekday;
+ } else {
+ getParsingFlags(config).invalidWeekday = input;
+ }
+ });
+
+ addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
+ week[token] = toInt(input);
+ });
+
+ // HELPERS
+
+ function parseWeekday(input, locale) {
+ if (typeof input !== 'string') {
+ return input;
+ }
+
+ if (!isNaN(input)) {
+ return parseInt(input, 10);
+ }
+
+ input = locale.weekdaysParse(input);
+ if (typeof input === 'number') {
+ return input;
+ }
+
+ return null;
+ }
+
+ // LOCALES
+
+ var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
+ function localeWeekdays (m, format) {
+ return isArray(this._weekdays) ? this._weekdays[m.day()] :
+ this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
+ }
+
+ var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
+ function localeWeekdaysShort (m) {
+ return this._weekdaysShort[m.day()];
+ }
+
+ var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
+ function localeWeekdaysMin (m) {
+ return this._weekdaysMin[m.day()];
+ }
+
+ function localeWeekdaysParse (weekdayName, format, strict) {
+ var i, mom, regex;
+
+ if (!this._weekdaysParse) {
+ this._weekdaysParse = [];
+ this._minWeekdaysParse = [];
+ this._shortWeekdaysParse = [];
+ this._fullWeekdaysParse = [];
+ }
+
+ for (i = 0; i < 7; i++) {
+ // make the regex if we don't have it already
+
+ mom = local__createLocal([2000, 1]).day(i);
+ if (strict && !this._fullWeekdaysParse[i]) {
+ this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
+ this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
+ this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
+ }
+ if (!this._weekdaysParse[i]) {
+ regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
+ this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
+ return i;
+ } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
+ return i;
+ } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
+ return i;
+ } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
+ return i;
+ }
+ }
+ }
+
+ // MOMENTS
+
+ function getSetDayOfWeek (input) {
+ if (!this.isValid()) {
+ return input != null ? this : NaN;
+ }
+ var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+ if (input != null) {
+ input = parseWeekday(input, this.localeData());
+ return this.add(input - day, 'd');
+ } else {
+ return day;
+ }
+ }
+
+ function getSetLocaleDayOfWeek (input) {
+ if (!this.isValid()) {
+ return input != null ? this : NaN;
+ }
+ var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
+ return input == null ? weekday : this.add(input - weekday, 'd');
+ }
+
+ function getSetISODayOfWeek (input) {
+ if (!this.isValid()) {
+ return input != null ? this : NaN;
+ }
+ // behaves the same as moment#day except
+ // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
+ // as a setter, sunday should belong to the previous week.
+ return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
+ }
+
+ // FORMATTING
+
+ addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
+
+ // ALIASES
+
+ addUnitAlias('dayOfYear', 'DDD');
+
+ // PARSING
+
+ addRegexToken('DDD', match1to3);
+ addRegexToken('DDDD', match3);
+ addParseToken(['DDD', 'DDDD'], function (input, array, config) {
+ config._dayOfYear = toInt(input);
+ });
+
+ // HELPERS
+
+ // MOMENTS
+
+ function getSetDayOfYear (input) {
+ var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
+ return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
+ }
+
+ // FORMATTING
+
+ function hFormat() {
+ return this.hours() % 12 || 12;
+ }
+
+ addFormatToken('H', ['HH', 2], 0, 'hour');
+ addFormatToken('h', ['hh', 2], 0, hFormat);
+
+ addFormatToken('hmm', 0, 0, function () {
+ return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
+ });
+
+ addFormatToken('hmmss', 0, 0, function () {
+ return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
+ zeroFill(this.seconds(), 2);
+ });
+
+ addFormatToken('Hmm', 0, 0, function () {
+ return '' + this.hours() + zeroFill(this.minutes(), 2);
+ });
+
+ addFormatToken('Hmmss', 0, 0, function () {
+ return '' + this.hours() + zeroFill(this.minutes(), 2) +
+ zeroFill(this.seconds(), 2);
+ });
+
+ function meridiem (token, lowercase) {
+ addFormatToken(token, 0, 0, function () {
+ return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
+ });
+ }
+
+ meridiem('a', true);
+ meridiem('A', false);
+
+ // ALIASES
+
+ addUnitAlias('hour', 'h');
+
+ // PARSING
+
+ function matchMeridiem (isStrict, locale) {
+ return locale._meridiemParse;
+ }
+
+ addRegexToken('a', matchMeridiem);
+ addRegexToken('A', matchMeridiem);
+ addRegexToken('H', match1to2);
+ addRegexToken('h', match1to2);
+ addRegexToken('HH', match1to2, match2);
+ addRegexToken('hh', match1to2, match2);
+
+ addRegexToken('hmm', match3to4);
+ addRegexToken('hmmss', match5to6);
+ addRegexToken('Hmm', match3to4);
+ addRegexToken('Hmmss', match5to6);
+
+ addParseToken(['H', 'HH'], HOUR);
+ addParseToken(['a', 'A'], function (input, array, config) {
+ config._isPm = config._locale.isPM(input);
+ config._meridiem = input;
+ });
+ addParseToken(['h', 'hh'], function (input, array, config) {
+ array[HOUR] = toInt(input);
+ getParsingFlags(config).bigHour = true;
+ });
+ addParseToken('hmm', function (input, array, config) {
+ var pos = input.length - 2;
+ array[HOUR] = toInt(input.substr(0, pos));
+ array[MINUTE] = toInt(input.substr(pos));
+ getParsingFlags(config).bigHour = true;
+ });
+ addParseToken('hmmss', function (input, array, config) {
+ var pos1 = input.length - 4;
+ var pos2 = input.length - 2;
+ array[HOUR] = toInt(input.substr(0, pos1));
+ array[MINUTE] = toInt(input.substr(pos1, 2));
+ array[SECOND] = toInt(input.substr(pos2));
+ getParsingFlags(config).bigHour = true;
+ });
+ addParseToken('Hmm', function (input, array, config) {
+ var pos = input.length - 2;
+ array[HOUR] = toInt(input.substr(0, pos));
+ array[MINUTE] = toInt(input.substr(pos));
+ });
+ addParseToken('Hmmss', function (input, array, config) {
+ var pos1 = input.length - 4;
+ var pos2 = input.length - 2;
+ array[HOUR] = toInt(input.substr(0, pos1));
+ array[MINUTE] = toInt(input.substr(pos1, 2));
+ array[SECOND] = toInt(input.substr(pos2));
+ });
+
+ // LOCALES
+
+ function localeIsPM (input) {
+ // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
+ // Using charAt should be more compatible.
+ return ((input + '').toLowerCase().charAt(0) === 'p');
+ }
+
+ var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
+ function localeMeridiem (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'pm' : 'PM';
+ } else {
+ return isLower ? 'am' : 'AM';
+ }
+ }
+
+
+ // MOMENTS
+
// Setting the hour should keep the time, because the user explicitly
// specified which hour he wants. So trying to maintain the same hour (in
// a new timezone) makes sense. Adding/subtracting hours does not follow
// this rule.
- moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true);
- // moment.fn.month is defined separately
- moment.fn.date = makeAccessor('Date', true);
- moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true));
- moment.fn.year = makeAccessor('FullYear', true);
- moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true));
+ var getSetHour = makeGetSet('Hours', true);
- // add plural methods
- moment.fn.days = moment.fn.day;
- moment.fn.months = moment.fn.month;
- moment.fn.weeks = moment.fn.week;
- moment.fn.isoWeeks = moment.fn.isoWeek;
- moment.fn.quarters = moment.fn.quarter;
+ // FORMATTING
- // add aliased format methods
- moment.fn.toJSON = moment.fn.toISOString;
+ addFormatToken('m', ['mm', 2], 0, 'minute');
- /************************************
- Duration Prototype
- ************************************/
+ // ALIASES
+ addUnitAlias('minute', 'm');
- function daysToYears (days) {
- // 400 years have 146097 days (taking into account leap year rules)
- return days * 400 / 146097;
- }
+ // PARSING
- function yearsToDays (years) {
- // years * 365 + absRound(years / 4) -
- // absRound(years / 100) + absRound(years / 400);
- return years * 146097 / 400;
- }
+ addRegexToken('m', match1to2);
+ addRegexToken('mm', match1to2, match2);
+ addParseToken(['m', 'mm'], MINUTE);
- extend(moment.duration.fn = Duration.prototype, {
+ // MOMENTS
- _bubble : function () {
- var milliseconds = this._milliseconds,
- days = this._days,
- months = this._months,
- data = this._data,
- seconds, minutes, hours, years = 0;
+ var getSetMinute = makeGetSet('Minutes', false);
- // The following code bubbles up values, see the tests for
- // examples of what that means.
- data.milliseconds = milliseconds % 1000;
+ // FORMATTING
- seconds = absRound(milliseconds / 1000);
- data.seconds = seconds % 60;
+ addFormatToken('s', ['ss', 2], 0, 'second');
- minutes = absRound(seconds / 60);
- data.minutes = minutes % 60;
+ // ALIASES
- hours = absRound(minutes / 60);
- data.hours = hours % 24;
+ addUnitAlias('second', 's');
- days += absRound(hours / 24);
+ // PARSING
- // Accurately convert days to years, assume start from year 0.
- years = absRound(daysToYears(days));
- days -= absRound(yearsToDays(years));
+ addRegexToken('s', match1to2);
+ addRegexToken('ss', match1to2, match2);
+ addParseToken(['s', 'ss'], SECOND);
- // 30 days to a month
- // TODO (iskren): Use anchor date (like 1st Jan) to compute this.
- months += absRound(days / 30);
- days %= 30;
+ // MOMENTS
- // 12 months -> 1 year
- years += absRound(months / 12);
- months %= 12;
+ var getSetSecond = makeGetSet('Seconds', false);
- data.days = days;
- data.months = months;
- data.years = years;
- },
+ // FORMATTING
- abs : function () {
- this._milliseconds = Math.abs(this._milliseconds);
- this._days = Math.abs(this._days);
- this._months = Math.abs(this._months);
-
- this._data.milliseconds = Math.abs(this._data.milliseconds);
- this._data.seconds = Math.abs(this._data.seconds);
- this._data.minutes = Math.abs(this._data.minutes);
- this._data.hours = Math.abs(this._data.hours);
- this._data.months = Math.abs(this._data.months);
- this._data.years = Math.abs(this._data.years);
-
- return this;
- },
-
- weeks : function () {
- return absRound(this.days() / 7);
- },
-
- valueOf : function () {
- return this._milliseconds +
- this._days * 864e5 +
- (this._months % 12) * 2592e6 +
- toInt(this._months / 12) * 31536e6;
- },
-
- humanize : function (withSuffix) {
- var output = relativeTime(this, !withSuffix, this.localeData());
-
- if (withSuffix) {
- output = this.localeData().pastFuture(+this, output);
- }
-
- return this.localeData().postformat(output);
- },
-
- add : function (input, val) {
- // supports only 2.0-style add(1, 's') or add(moment)
- var dur = moment.duration(input, val);
-
- this._milliseconds += dur._milliseconds;
- this._days += dur._days;
- this._months += dur._months;
-
- this._bubble();
-
- return this;
- },
-
- subtract : function (input, val) {
- var dur = moment.duration(input, val);
-
- this._milliseconds -= dur._milliseconds;
- this._days -= dur._days;
- this._months -= dur._months;
-
- this._bubble();
-
- return this;
- },
-
- get : function (units) {
- units = normalizeUnits(units);
- return this[units.toLowerCase() + 's']();
- },
-
- as : function (units) {
- var days, months;
- units = normalizeUnits(units);
-
- days = this._days + this._milliseconds / 864e5;
- if (units === 'month' || units === 'year') {
- months = this._months + daysToYears(days) * 12;
- return units === 'month' ? months : months / 12;
- } else {
- days += yearsToDays(this._months / 12);
- switch (units) {
- case 'week': return days / 7;
- case 'day': return days;
- case 'hour': return days * 24;
- case 'minute': return days * 24 * 60;
- case 'second': return days * 24 * 60 * 60;
- case 'millisecond': return days * 24 * 60 * 60 * 1000;
- default: throw new Error('Unknown unit ' + units);
- }
- }
- },
-
- lang : moment.fn.lang,
- locale : moment.fn.locale,
-
- toIsoString : deprecate(
- "toIsoString() is deprecated. Please use toISOString() instead " +
- "(notice the capitals)",
- function () {
- return this.toISOString();
- }
- ),
-
- toISOString : function () {
- // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
- var years = Math.abs(this.years()),
- months = Math.abs(this.months()),
- days = Math.abs(this.days()),
- hours = Math.abs(this.hours()),
- minutes = Math.abs(this.minutes()),
- seconds = Math.abs(this.seconds() + this.milliseconds() / 1000);
-
- if (!this.asSeconds()) {
- // this is the same as C#'s (Noda) and python (isodate)...
- // but not other JS (goog.date)
- return 'P0D';
- }
-
- return (this.asSeconds() < 0 ? '-' : '') +
- 'P' +
- (years ? years + 'Y' : '') +
- (months ? months + 'M' : '') +
- (days ? days + 'D' : '') +
- ((hours || minutes || seconds) ? 'T' : '') +
- (hours ? hours + 'H' : '') +
- (minutes ? minutes + 'M' : '') +
- (seconds ? seconds + 'S' : '');
- },
-
- localeData : function () {
- return this._locale;
- }
+ addFormatToken('S', 0, 0, function () {
+ return ~~(this.millisecond() / 100);
});
- function makeDurationGetter(name) {
- moment.duration.fn[name] = function () {
- return this._data[name];
- };
+ addFormatToken(0, ['SS', 2], 0, function () {
+ return ~~(this.millisecond() / 10);
+ });
+
+ addFormatToken(0, ['SSS', 3], 0, 'millisecond');
+ addFormatToken(0, ['SSSS', 4], 0, function () {
+ return this.millisecond() * 10;
+ });
+ addFormatToken(0, ['SSSSS', 5], 0, function () {
+ return this.millisecond() * 100;
+ });
+ addFormatToken(0, ['SSSSSS', 6], 0, function () {
+ return this.millisecond() * 1000;
+ });
+ addFormatToken(0, ['SSSSSSS', 7], 0, function () {
+ return this.millisecond() * 10000;
+ });
+ addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
+ return this.millisecond() * 100000;
+ });
+ addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
+ return this.millisecond() * 1000000;
+ });
+
+
+ // ALIASES
+
+ addUnitAlias('millisecond', 'ms');
+
+ // PARSING
+
+ addRegexToken('S', match1to3, match1);
+ addRegexToken('SS', match1to3, match2);
+ addRegexToken('SSS', match1to3, match3);
+
+ var token;
+ for (token = 'SSSS'; token.length <= 9; token += 'S') {
+ addRegexToken(token, matchUnsigned);
}
- for (i in unitMillisecondFactors) {
- if (unitMillisecondFactors.hasOwnProperty(i)) {
- makeDurationGetter(i.toLowerCase());
+ function parseMs(input, array) {
+ array[MILLISECOND] = toInt(('0.' + input) * 1000);
+ }
+
+ for (token = 'S'; token.length <= 9; token += 'S') {
+ addParseToken(token, parseMs);
+ }
+ // MOMENTS
+
+ var getSetMillisecond = makeGetSet('Milliseconds', false);
+
+ // FORMATTING
+
+ addFormatToken('z', 0, 0, 'zoneAbbr');
+ addFormatToken('zz', 0, 0, 'zoneName');
+
+ // MOMENTS
+
+ function getZoneAbbr () {
+ return this._isUTC ? 'UTC' : '';
+ }
+
+ function getZoneName () {
+ return this._isUTC ? 'Coordinated Universal Time' : '';
+ }
+
+ var momentPrototype__proto = Moment.prototype;
+
+ momentPrototype__proto.add = add_subtract__add;
+ momentPrototype__proto.calendar = moment_calendar__calendar;
+ momentPrototype__proto.clone = clone;
+ momentPrototype__proto.diff = diff;
+ momentPrototype__proto.endOf = endOf;
+ momentPrototype__proto.format = format;
+ momentPrototype__proto.from = from;
+ momentPrototype__proto.fromNow = fromNow;
+ momentPrototype__proto.to = to;
+ momentPrototype__proto.toNow = toNow;
+ momentPrototype__proto.get = getSet;
+ momentPrototype__proto.invalidAt = invalidAt;
+ momentPrototype__proto.isAfter = isAfter;
+ momentPrototype__proto.isBefore = isBefore;
+ momentPrototype__proto.isBetween = isBetween;
+ momentPrototype__proto.isSame = isSame;
+ momentPrototype__proto.isSameOrAfter = isSameOrAfter;
+ momentPrototype__proto.isSameOrBefore = isSameOrBefore;
+ momentPrototype__proto.isValid = moment_valid__isValid;
+ momentPrototype__proto.lang = lang;
+ momentPrototype__proto.locale = locale;
+ momentPrototype__proto.localeData = localeData;
+ momentPrototype__proto.max = prototypeMax;
+ momentPrototype__proto.min = prototypeMin;
+ momentPrototype__proto.parsingFlags = parsingFlags;
+ momentPrototype__proto.set = getSet;
+ momentPrototype__proto.startOf = startOf;
+ momentPrototype__proto.subtract = add_subtract__subtract;
+ momentPrototype__proto.toArray = toArray;
+ momentPrototype__proto.toObject = toObject;
+ momentPrototype__proto.toDate = toDate;
+ momentPrototype__proto.toISOString = moment_format__toISOString;
+ momentPrototype__proto.toJSON = toJSON;
+ momentPrototype__proto.toString = toString;
+ momentPrototype__proto.unix = unix;
+ momentPrototype__proto.valueOf = to_type__valueOf;
+ momentPrototype__proto.creationData = creationData;
+
+ // Year
+ momentPrototype__proto.year = getSetYear;
+ momentPrototype__proto.isLeapYear = getIsLeapYear;
+
+ // Week Year
+ momentPrototype__proto.weekYear = getSetWeekYear;
+ momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
+
+ // Quarter
+ momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
+
+ // Month
+ momentPrototype__proto.month = getSetMonth;
+ momentPrototype__proto.daysInMonth = getDaysInMonth;
+
+ // Week
+ momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;
+ momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;
+ momentPrototype__proto.weeksInYear = getWeeksInYear;
+ momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
+
+ // Day
+ momentPrototype__proto.date = getSetDayOfMonth;
+ momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;
+ momentPrototype__proto.weekday = getSetLocaleDayOfWeek;
+ momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
+ momentPrototype__proto.dayOfYear = getSetDayOfYear;
+
+ // Hour
+ momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
+
+ // Minute
+ momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
+
+ // Second
+ momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
+
+ // Millisecond
+ momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
+
+ // Offset
+ momentPrototype__proto.utcOffset = getSetOffset;
+ momentPrototype__proto.utc = setOffsetToUTC;
+ momentPrototype__proto.local = setOffsetToLocal;
+ momentPrototype__proto.parseZone = setOffsetToParsedOffset;
+ momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
+ momentPrototype__proto.isDST = isDaylightSavingTime;
+ momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;
+ momentPrototype__proto.isLocal = isLocal;
+ momentPrototype__proto.isUtcOffset = isUtcOffset;
+ momentPrototype__proto.isUtc = isUtc;
+ momentPrototype__proto.isUTC = isUtc;
+
+ // Timezone
+ momentPrototype__proto.zoneAbbr = getZoneAbbr;
+ momentPrototype__proto.zoneName = getZoneName;
+
+ // Deprecations
+ momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
+ momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
+ momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
+ momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
+
+ var momentPrototype = momentPrototype__proto;
+
+ function moment__createUnix (input) {
+ return local__createLocal(input * 1000);
+ }
+
+ function moment__createInZone () {
+ return local__createLocal.apply(null, arguments).parseZone();
+ }
+
+ var defaultCalendar = {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ };
+
+ function locale_calendar__calendar (key, mom, now) {
+ var output = this._calendar[key];
+ return isFunction(output) ? output.call(mom, now) : output;
+ }
+
+ var defaultLongDateFormat = {
+ LTS : 'h:mm:ss A',
+ LT : 'h:mm A',
+ L : 'MM/DD/YYYY',
+ LL : 'MMMM D, YYYY',
+ LLL : 'MMMM D, YYYY h:mm A',
+ LLLL : 'dddd, MMMM D, YYYY h:mm A'
+ };
+
+ function longDateFormat (key) {
+ var format = this._longDateFormat[key],
+ formatUpper = this._longDateFormat[key.toUpperCase()];
+
+ if (format || !formatUpper) {
+ return format;
}
+
+ this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
+ return val.slice(1);
+ });
+
+ return this._longDateFormat[key];
}
- moment.duration.fn.asMilliseconds = function () {
- return this.as('ms');
- };
- moment.duration.fn.asSeconds = function () {
- return this.as('s');
- };
- moment.duration.fn.asMinutes = function () {
- return this.as('m');
- };
- moment.duration.fn.asHours = function () {
- return this.as('h');
- };
- moment.duration.fn.asDays = function () {
- return this.as('d');
- };
- moment.duration.fn.asWeeks = function () {
- return this.as('weeks');
- };
- moment.duration.fn.asMonths = function () {
- return this.as('M');
- };
- moment.duration.fn.asYears = function () {
- return this.as('y');
+ var defaultInvalidDate = 'Invalid date';
+
+ function invalidDate () {
+ return this._invalidDate;
+ }
+
+ var defaultOrdinal = '%d';
+ var defaultOrdinalParse = /\d{1,2}/;
+
+ function ordinal (number) {
+ return this._ordinal.replace('%d', number);
+ }
+
+ function preParsePostFormat (string) {
+ return string;
+ }
+
+ var defaultRelativeTime = {
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
};
- /************************************
- Default Locale
- ************************************/
+ function relative__relativeTime (number, withoutSuffix, string, isFuture) {
+ var output = this._relativeTime[string];
+ return (isFunction(output)) ?
+ output(number, withoutSuffix, string, isFuture) :
+ output.replace(/%d/i, number);
+ }
+ function pastFuture (diff, output) {
+ var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
+ return isFunction(format) ? format(output) : format.replace(/%s/i, output);
+ }
- // Set default locale, other locale will inherit from English.
- moment.locale('en', {
+ function locale_set__set (config) {
+ var prop, i;
+ for (i in config) {
+ prop = config[i];
+ if (isFunction(prop)) {
+ this[i] = prop;
+ } else {
+ this['_' + i] = prop;
+ }
+ }
+ // Lenient ordinal parsing accepts just a number in addition to
+ // number + (possibly) stuff coming from _ordinalParseLenient.
+ this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
+ }
+
+ var prototype__proto = Locale.prototype;
+
+ prototype__proto._calendar = defaultCalendar;
+ prototype__proto.calendar = locale_calendar__calendar;
+ prototype__proto._longDateFormat = defaultLongDateFormat;
+ prototype__proto.longDateFormat = longDateFormat;
+ prototype__proto._invalidDate = defaultInvalidDate;
+ prototype__proto.invalidDate = invalidDate;
+ prototype__proto._ordinal = defaultOrdinal;
+ prototype__proto.ordinal = ordinal;
+ prototype__proto._ordinalParse = defaultOrdinalParse;
+ prototype__proto.preparse = preParsePostFormat;
+ prototype__proto.postformat = preParsePostFormat;
+ prototype__proto._relativeTime = defaultRelativeTime;
+ prototype__proto.relativeTime = relative__relativeTime;
+ prototype__proto.pastFuture = pastFuture;
+ prototype__proto.set = locale_set__set;
+
+ // Month
+ prototype__proto.months = localeMonths;
+ prototype__proto._months = defaultLocaleMonths;
+ prototype__proto.monthsShort = localeMonthsShort;
+ prototype__proto._monthsShort = defaultLocaleMonthsShort;
+ prototype__proto.monthsParse = localeMonthsParse;
+ prototype__proto._monthsRegex = defaultMonthsRegex;
+ prototype__proto.monthsRegex = monthsRegex;
+ prototype__proto._monthsShortRegex = defaultMonthsShortRegex;
+ prototype__proto.monthsShortRegex = monthsShortRegex;
+
+ // Week
+ prototype__proto.week = localeWeek;
+ prototype__proto._week = defaultLocaleWeek;
+ prototype__proto.firstDayOfYear = localeFirstDayOfYear;
+ prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
+
+ // Day of Week
+ prototype__proto.weekdays = localeWeekdays;
+ prototype__proto._weekdays = defaultLocaleWeekdays;
+ prototype__proto.weekdaysMin = localeWeekdaysMin;
+ prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;
+ prototype__proto.weekdaysShort = localeWeekdaysShort;
+ prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
+ prototype__proto.weekdaysParse = localeWeekdaysParse;
+
+ // Hours
+ prototype__proto.isPM = localeIsPM;
+ prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
+ prototype__proto.meridiem = localeMeridiem;
+
+ function lists__get (format, index, field, setter) {
+ var locale = locale_locales__getLocale();
+ var utc = create_utc__createUTC().set(setter, index);
+ return locale[field](utc, format);
+ }
+
+ function list (format, index, field, count, setter) {
+ if (typeof format === 'number') {
+ index = format;
+ format = undefined;
+ }
+
+ format = format || '';
+
+ if (index != null) {
+ return lists__get(format, index, field, setter);
+ }
+
+ var i;
+ var out = [];
+ for (i = 0; i < count; i++) {
+ out[i] = lists__get(format, i, field, setter);
+ }
+ return out;
+ }
+
+ function lists__listMonths (format, index) {
+ return list(format, index, 'months', 12, 'month');
+ }
+
+ function lists__listMonthsShort (format, index) {
+ return list(format, index, 'monthsShort', 12, 'month');
+ }
+
+ function lists__listWeekdays (format, index) {
+ return list(format, index, 'weekdays', 7, 'day');
+ }
+
+ function lists__listWeekdaysShort (format, index) {
+ return list(format, index, 'weekdaysShort', 7, 'day');
+ }
+
+ function lists__listWeekdaysMin (format, index) {
+ return list(format, index, 'weekdaysMin', 7, 'day');
+ }
+
+ locale_locales__getSetGlobalLocale('en', {
+ ordinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal : function (number) {
var b = number % 10,
output = (toInt(number % 100 / 10) === 1) ? 'th' :
@@ -2766,43 +3215,392 @@
}
});
- /* EMBED_LOCALES */
+ // Side effect imports
+ utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
+ utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
- /************************************
- Exposing Moment
- ************************************/
+ var mathAbs = Math.abs;
- function makeGlobal(shouldDeprecate) {
- /*global ender:false */
- if (typeof ender !== 'undefined') {
- return;
- }
- oldGlobalMoment = globalScope.moment;
- if (shouldDeprecate) {
- globalScope.moment = deprecate(
- 'Accessing Moment through the global scope is ' +
- 'deprecated, and will be removed in an upcoming ' +
- 'release.',
- moment);
+ function duration_abs__abs () {
+ var data = this._data;
+
+ this._milliseconds = mathAbs(this._milliseconds);
+ this._days = mathAbs(this._days);
+ this._months = mathAbs(this._months);
+
+ data.milliseconds = mathAbs(data.milliseconds);
+ data.seconds = mathAbs(data.seconds);
+ data.minutes = mathAbs(data.minutes);
+ data.hours = mathAbs(data.hours);
+ data.months = mathAbs(data.months);
+ data.years = mathAbs(data.years);
+
+ return this;
+ }
+
+ function duration_add_subtract__addSubtract (duration, input, value, direction) {
+ var other = create__createDuration(input, value);
+
+ duration._milliseconds += direction * other._milliseconds;
+ duration._days += direction * other._days;
+ duration._months += direction * other._months;
+
+ return duration._bubble();
+ }
+
+ // supports only 2.0-style add(1, 's') or add(duration)
+ function duration_add_subtract__add (input, value) {
+ return duration_add_subtract__addSubtract(this, input, value, 1);
+ }
+
+ // supports only 2.0-style subtract(1, 's') or subtract(duration)
+ function duration_add_subtract__subtract (input, value) {
+ return duration_add_subtract__addSubtract(this, input, value, -1);
+ }
+
+ function absCeil (number) {
+ if (number < 0) {
+ return Math.floor(number);
} else {
- globalScope.moment = moment;
+ return Math.ceil(number);
}
}
- // CommonJS module is defined
- if (hasModule) {
- module.exports = moment;
- } else if (typeof define === 'function' && define.amd) {
- define('moment', function (require, exports, module) {
- if (module.config && module.config() && module.config().noGlobal === true) {
- // release the global variable
- globalScope.moment = oldGlobalMoment;
- }
+ function bubble () {
+ var milliseconds = this._milliseconds;
+ var days = this._days;
+ var months = this._months;
+ var data = this._data;
+ var seconds, minutes, hours, years, monthsFromDays;
- return moment;
- });
- makeGlobal(true);
- } else {
- makeGlobal();
+ // if we have a mix of positive and negative values, bubble down first
+ // check: https://github.com/moment/moment/issues/2166
+ if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
+ (milliseconds <= 0 && days <= 0 && months <= 0))) {
+ milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
+ days = 0;
+ months = 0;
+ }
+
+ // The following code bubbles up values, see the tests for
+ // examples of what that means.
+ data.milliseconds = milliseconds % 1000;
+
+ seconds = absFloor(milliseconds / 1000);
+ data.seconds = seconds % 60;
+
+ minutes = absFloor(seconds / 60);
+ data.minutes = minutes % 60;
+
+ hours = absFloor(minutes / 60);
+ data.hours = hours % 24;
+
+ days += absFloor(hours / 24);
+
+ // convert days to months
+ monthsFromDays = absFloor(daysToMonths(days));
+ months += monthsFromDays;
+ days -= absCeil(monthsToDays(monthsFromDays));
+
+ // 12 months -> 1 year
+ years = absFloor(months / 12);
+ months %= 12;
+
+ data.days = days;
+ data.months = months;
+ data.years = years;
+
+ return this;
}
-}).call(this);
+
+ function daysToMonths (days) {
+ // 400 years have 146097 days (taking into account leap year rules)
+ // 400 years have 12 months === 4800
+ return days * 4800 / 146097;
+ }
+
+ function monthsToDays (months) {
+ // the reverse of daysToMonths
+ return months * 146097 / 4800;
+ }
+
+ function as (units) {
+ var days;
+ var months;
+ var milliseconds = this._milliseconds;
+
+ units = normalizeUnits(units);
+
+ if (units === 'month' || units === 'year') {
+ days = this._days + milliseconds / 864e5;
+ months = this._months + daysToMonths(days);
+ return units === 'month' ? months : months / 12;
+ } else {
+ // handle milliseconds separately because of floating point math errors (issue #1867)
+ days = this._days + Math.round(monthsToDays(this._months));
+ switch (units) {
+ case 'week' : return days / 7 + milliseconds / 6048e5;
+ case 'day' : return days + milliseconds / 864e5;
+ case 'hour' : return days * 24 + milliseconds / 36e5;
+ case 'minute' : return days * 1440 + milliseconds / 6e4;
+ case 'second' : return days * 86400 + milliseconds / 1000;
+ // Math.floor prevents floating point math errors here
+ case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
+ default: throw new Error('Unknown unit ' + units);
+ }
+ }
+ }
+
+ // TODO: Use this.as('ms')?
+ function duration_as__valueOf () {
+ return (
+ this._milliseconds +
+ this._days * 864e5 +
+ (this._months % 12) * 2592e6 +
+ toInt(this._months / 12) * 31536e6
+ );
+ }
+
+ function makeAs (alias) {
+ return function () {
+ return this.as(alias);
+ };
+ }
+
+ var asMilliseconds = makeAs('ms');
+ var asSeconds = makeAs('s');
+ var asMinutes = makeAs('m');
+ var asHours = makeAs('h');
+ var asDays = makeAs('d');
+ var asWeeks = makeAs('w');
+ var asMonths = makeAs('M');
+ var asYears = makeAs('y');
+
+ function duration_get__get (units) {
+ units = normalizeUnits(units);
+ return this[units + 's']();
+ }
+
+ function makeGetter(name) {
+ return function () {
+ return this._data[name];
+ };
+ }
+
+ var milliseconds = makeGetter('milliseconds');
+ var seconds = makeGetter('seconds');
+ var minutes = makeGetter('minutes');
+ var hours = makeGetter('hours');
+ var days = makeGetter('days');
+ var months = makeGetter('months');
+ var years = makeGetter('years');
+
+ function weeks () {
+ return absFloor(this.days() / 7);
+ }
+
+ var round = Math.round;
+ var thresholds = {
+ s: 45, // seconds to minute
+ m: 45, // minutes to hour
+ h: 22, // hours to day
+ d: 26, // days to month
+ M: 11 // months to year
+ };
+
+ // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
+ function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
+ return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+ }
+
+ function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {
+ var duration = create__createDuration(posNegDuration).abs();
+ var seconds = round(duration.as('s'));
+ var minutes = round(duration.as('m'));
+ var hours = round(duration.as('h'));
+ var days = round(duration.as('d'));
+ var months = round(duration.as('M'));
+ var years = round(duration.as('y'));
+
+ var a = seconds < thresholds.s && ['s', seconds] ||
+ minutes <= 1 && ['m'] ||
+ minutes < thresholds.m && ['mm', minutes] ||
+ hours <= 1 && ['h'] ||
+ hours < thresholds.h && ['hh', hours] ||
+ days <= 1 && ['d'] ||
+ days < thresholds.d && ['dd', days] ||
+ months <= 1 && ['M'] ||
+ months < thresholds.M && ['MM', months] ||
+ years <= 1 && ['y'] || ['yy', years];
+
+ a[2] = withoutSuffix;
+ a[3] = +posNegDuration > 0;
+ a[4] = locale;
+ return substituteTimeAgo.apply(null, a);
+ }
+
+ // This function allows you to set a threshold for relative time strings
+ function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {
+ if (thresholds[threshold] === undefined) {
+ return false;
+ }
+ if (limit === undefined) {
+ return thresholds[threshold];
+ }
+ thresholds[threshold] = limit;
+ return true;
+ }
+
+ function humanize (withSuffix) {
+ var locale = this.localeData();
+ var output = duration_humanize__relativeTime(this, !withSuffix, locale);
+
+ if (withSuffix) {
+ output = locale.pastFuture(+this, output);
+ }
+
+ return locale.postformat(output);
+ }
+
+ var iso_string__abs = Math.abs;
+
+ function iso_string__toISOString() {
+ // for ISO strings we do not use the normal bubbling rules:
+ // * milliseconds bubble up until they become hours
+ // * days do not bubble at all
+ // * months bubble up until they become years
+ // This is because there is no context-free conversion between hours and days
+ // (think of clock changes)
+ // and also not between days and months (28-31 days per month)
+ var seconds = iso_string__abs(this._milliseconds) / 1000;
+ var days = iso_string__abs(this._days);
+ var months = iso_string__abs(this._months);
+ var minutes, hours, years;
+
+ // 3600 seconds -> 60 minutes -> 1 hour
+ minutes = absFloor(seconds / 60);
+ hours = absFloor(minutes / 60);
+ seconds %= 60;
+ minutes %= 60;
+
+ // 12 months -> 1 year
+ years = absFloor(months / 12);
+ months %= 12;
+
+
+ // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
+ var Y = years;
+ var M = months;
+ var D = days;
+ var h = hours;
+ var m = minutes;
+ var s = seconds;
+ var total = this.asSeconds();
+
+ if (!total) {
+ // this is the same as C#'s (Noda) and python (isodate)...
+ // but not other JS (goog.date)
+ return 'P0D';
+ }
+
+ return (total < 0 ? '-' : '') +
+ 'P' +
+ (Y ? Y + 'Y' : '') +
+ (M ? M + 'M' : '') +
+ (D ? D + 'D' : '') +
+ ((h || m || s) ? 'T' : '') +
+ (h ? h + 'H' : '') +
+ (m ? m + 'M' : '') +
+ (s ? s + 'S' : '');
+ }
+
+ var duration_prototype__proto = Duration.prototype;
+
+ duration_prototype__proto.abs = duration_abs__abs;
+ duration_prototype__proto.add = duration_add_subtract__add;
+ duration_prototype__proto.subtract = duration_add_subtract__subtract;
+ duration_prototype__proto.as = as;
+ duration_prototype__proto.asMilliseconds = asMilliseconds;
+ duration_prototype__proto.asSeconds = asSeconds;
+ duration_prototype__proto.asMinutes = asMinutes;
+ duration_prototype__proto.asHours = asHours;
+ duration_prototype__proto.asDays = asDays;
+ duration_prototype__proto.asWeeks = asWeeks;
+ duration_prototype__proto.asMonths = asMonths;
+ duration_prototype__proto.asYears = asYears;
+ duration_prototype__proto.valueOf = duration_as__valueOf;
+ duration_prototype__proto._bubble = bubble;
+ duration_prototype__proto.get = duration_get__get;
+ duration_prototype__proto.milliseconds = milliseconds;
+ duration_prototype__proto.seconds = seconds;
+ duration_prototype__proto.minutes = minutes;
+ duration_prototype__proto.hours = hours;
+ duration_prototype__proto.days = days;
+ duration_prototype__proto.weeks = weeks;
+ duration_prototype__proto.months = months;
+ duration_prototype__proto.years = years;
+ duration_prototype__proto.humanize = humanize;
+ duration_prototype__proto.toISOString = iso_string__toISOString;
+ duration_prototype__proto.toString = iso_string__toISOString;
+ duration_prototype__proto.toJSON = iso_string__toISOString;
+ duration_prototype__proto.locale = locale;
+ duration_prototype__proto.localeData = localeData;
+
+ // Deprecations
+ duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);
+ duration_prototype__proto.lang = lang;
+
+ // Side effect imports
+
+ // FORMATTING
+
+ addFormatToken('X', 0, 0, 'unix');
+ addFormatToken('x', 0, 0, 'valueOf');
+
+ // PARSING
+
+ addRegexToken('x', matchSigned);
+ addRegexToken('X', matchTimestamp);
+ addParseToken('X', function (input, array, config) {
+ config._d = new Date(parseFloat(input, 10) * 1000);
+ });
+ addParseToken('x', function (input, array, config) {
+ config._d = new Date(toInt(input));
+ });
+
+ // Side effect imports
+
+
+ utils_hooks__hooks.version = '2.11.2';
+
+ setHookCallback(local__createLocal);
+
+ utils_hooks__hooks.fn = momentPrototype;
+ utils_hooks__hooks.min = min;
+ utils_hooks__hooks.max = max;
+ utils_hooks__hooks.now = now;
+ utils_hooks__hooks.utc = create_utc__createUTC;
+ utils_hooks__hooks.unix = moment__createUnix;
+ utils_hooks__hooks.months = lists__listMonths;
+ utils_hooks__hooks.isDate = isDate;
+ utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;
+ utils_hooks__hooks.invalid = valid__createInvalid;
+ utils_hooks__hooks.duration = create__createDuration;
+ utils_hooks__hooks.isMoment = isMoment;
+ utils_hooks__hooks.weekdays = lists__listWeekdays;
+ utils_hooks__hooks.parseZone = moment__createInZone;
+ utils_hooks__hooks.localeData = locale_locales__getLocale;
+ utils_hooks__hooks.isDuration = isDuration;
+ utils_hooks__hooks.monthsShort = lists__listMonthsShort;
+ utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;
+ utils_hooks__hooks.defineLocale = defineLocale;
+ utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;
+ utils_hooks__hooks.normalizeUnits = normalizeUnits;
+ utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
+ utils_hooks__hooks.prototype = momentPrototype;
+
+ var _moment = utils_hooks__hooks;
+
+ return _moment;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/af.js b/lib/javascripts/moment_locale/af.js
index 2777e58e77f..1a96bf4735f 100644
--- a/lib/javascripts/moment_locale/af.js
+++ b/lib/javascripts/moment_locale/af.js
@@ -1,22 +1,25 @@
-// moment.js locale configuration
-// locale : afrikaans (af)
-// author : Werner Mollentze : https://github.com/wernerm
+//! moment.js locale configuration
+//! locale : afrikaans (af)
+//! author : Werner Mollentze : https://github.com/wernerm
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('af', {
- months : "Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),
- weekdays : "Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),
- weekdaysShort : "Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),
- weekdaysMin : "So_Ma_Di_Wo_Do_Vr_Sa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var af = moment.defineLocale('af', {
+ months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
+ weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
+ weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
+ weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
+ meridiemParse: /vm|nm/i,
+ isPM : function (input) {
+ return /^nm$/i.test(input);
+ },
meridiem : function (hours, minutes, isLower) {
if (hours < 12) {
return isLower ? 'vm' : 'VM';
@@ -25,11 +28,12 @@
}
},
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay : '[Vandag om] LT',
@@ -40,20 +44,21 @@
sameElse : 'L'
},
relativeTime : {
- future : "oor %s",
- past : "%s gelede",
- s : "'n paar sekondes",
- m : "'n minuut",
- mm : "%d minute",
- h : "'n uur",
- hh : "%d ure",
- d : "'n dag",
- dd : "%d dae",
- M : "'n maand",
- MM : "%d maande",
- y : "'n jaar",
- yy : "%d jaar"
+ future : 'oor %s',
+ past : '%s gelede',
+ s : '\'n paar sekondes',
+ m : '\'n minuut',
+ mm : '%d minute',
+ h : '\'n uur',
+ hh : '%d ure',
+ d : '\'n dag',
+ dd : '%d dae',
+ M : '\'n maand',
+ MM : '%d maande',
+ y : '\'n jaar',
+ yy : '%d jaar'
},
+ ordinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
},
@@ -62,4 +67,7 @@
doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
}
});
-}));
+
+ return af;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ar-ma.js b/lib/javascripts/moment_locale/ar-ma.js
index c8add2ddeb7..9bddd5ac4f4 100644
--- a/lib/javascripts/moment_locale/ar-ma.js
+++ b/lib/javascripts/moment_locale/ar-ma.js
@@ -1,32 +1,32 @@
-// moment.js locale configuration
-// locale : Moroccan Arabic (ar-ma)
-// author : ElFadili Yassine : https://github.com/ElFadiliY
-// author : Abdel Said : https://github.com/abdelsaid
+//! moment.js locale configuration
+//! locale : Moroccan Arabic (ar-ma)
+//! author : ElFadili Yassine : https://github.com/ElFadiliY
+//! author : Abdel Said : https://github.com/abdelsaid
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('ar-ma', {
- months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
- monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
- weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
- weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),
- weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ar_ma = moment.defineLocale('ar-ma', {
+ months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
+ monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
+ weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+ weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
- sameDay: "[اليوم على الساعة] LT",
+ sameDay: '[اليوم على الساعة] LT',
nextDay: '[غدا على الساعة] LT',
nextWeek: 'dddd [على الساعة] LT',
lastDay: '[أمس على الساعة] LT',
@@ -34,23 +34,26 @@
sameElse: 'L'
},
relativeTime : {
- future : "في %s",
- past : "منذ %s",
- s : "ثوان",
- m : "دقيقة",
- mm : "%d دقائق",
- h : "ساعة",
- hh : "%d ساعات",
- d : "يوم",
- dd : "%d أيام",
- M : "شهر",
- MM : "%d أشهر",
- y : "سنة",
- yy : "%d سنوات"
+ future : 'في %s',
+ past : 'منذ %s',
+ s : 'ثوان',
+ m : 'دقيقة',
+ mm : '%d دقائق',
+ h : 'ساعة',
+ hh : '%d ساعات',
+ d : 'يوم',
+ dd : '%d أيام',
+ M : 'شهر',
+ MM : '%d أشهر',
+ y : 'سنة',
+ yy : '%d سنوات'
},
week : {
dow : 6, // Saturday is the first day of the week.
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return ar_ma;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ar-sa.js b/lib/javascripts/moment_locale/ar-sa.js
index 64e209137ea..7541c52dc14 100644
--- a/lib/javascripts/moment_locale/ar-sa.js
+++ b/lib/javascripts/moment_locale/ar-sa.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : Arabic Saudi Arabia (ar-sa)
-// author : Suhail Alkowaileet : https://github.com/xsoh
+//! moment.js locale configuration
+//! locale : Arabic Saudi Arabia (ar-sa)
+//! author : Suhail Alkowaileet : https://github.com/xsoh
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '١',
'2': '٢',
@@ -35,28 +34,33 @@
'٠': '0'
};
- return moment.defineLocale('ar-sa', {
- months : "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),
- monthsShort : "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),
- weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
- weekdaysShort : "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),
- weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
+ var ar_sa = moment.defineLocale('ar-sa', {
+ months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiemParse: /ص|م/,
+ isPM : function (input) {
+ return 'م' === input;
},
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
- return "ص";
+ return 'ص';
} else {
- return "م";
+ return 'م';
}
},
calendar : {
- sameDay: "[اليوم على الساعة] LT",
+ sameDay: '[اليوم على الساعة] LT',
nextDay: '[غدا على الساعة] LT',
nextWeek: 'dddd [على الساعة] LT',
lastDay: '[أمس على الساعة] LT',
@@ -64,22 +68,22 @@
sameElse: 'L'
},
relativeTime : {
- future : "في %s",
- past : "منذ %s",
- s : "ثوان",
- m : "دقيقة",
- mm : "%d دقائق",
- h : "ساعة",
- hh : "%d ساعات",
- d : "يوم",
- dd : "%d أيام",
- M : "شهر",
- MM : "%d أشهر",
- y : "سنة",
- yy : "%d سنوات"
+ future : 'في %s',
+ past : 'منذ %s',
+ s : 'ثوان',
+ m : 'دقيقة',
+ mm : '%d دقائق',
+ h : 'ساعة',
+ hh : '%d ساعات',
+ d : 'يوم',
+ dd : '%d أيام',
+ M : 'شهر',
+ MM : '%d أشهر',
+ y : 'سنة',
+ yy : '%d سنوات'
},
preparse: function (string) {
- return string.replace(/[۰-۹]/g, function (match) {
+ return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
return numberMap[match];
}).replace(/،/g, ',');
},
@@ -93,4 +97,7 @@
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return ar_sa;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ar-tn.js b/lib/javascripts/moment_locale/ar-tn.js
new file mode 100644
index 00000000000..b4ee8fc6ded
--- /dev/null
+++ b/lib/javascripts/moment_locale/ar-tn.js
@@ -0,0 +1,57 @@
+//! moment.js locale configuration
+//! locale : Tunisian Arabic (ar-tn)
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ar_tn = moment.defineLocale('ar-tn', {
+ months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ longDateFormat: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ calendar: {
+ sameDay: '[اليوم على الساعة] LT',
+ nextDay: '[غدا على الساعة] LT',
+ nextWeek: 'dddd [على الساعة] LT',
+ lastDay: '[أمس على الساعة] LT',
+ lastWeek: 'dddd [على الساعة] LT',
+ sameElse: 'L'
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ },
+ week: {
+ dow: 1, // Monday is the first day of the week.
+ doy: 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ return ar_tn;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ar.js b/lib/javascripts/moment_locale/ar.js
index 2af64ee3a92..3613c594b40 100644
--- a/lib/javascripts/moment_locale/ar.js
+++ b/lib/javascripts/moment_locale/ar.js
@@ -1,17 +1,17 @@
-// moment.js locale configuration
-// locale : Arabic (ar)
-// author : Abdel Said : https://github.com/abdelsaid
-// changes in months, weekdays : Ahmed Elkhatib
+//! moment.js locale configuration
+//! Locale: Arabic (ar)
+//! Author: Abdel Said: https://github.com/abdelsaid
+//! Changes in months, weekdays: Ahmed Elkhatib
+//! Native plural forms: forabi https://github.com/forabi
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '١',
'2': '٢',
@@ -34,53 +34,89 @@
'٨': '8',
'٩': '9',
'٠': '0'
- };
+ }, pluralForm = function (n) {
+ return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
+ }, plurals = {
+ s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
+ m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
+ h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
+ d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
+ M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
+ y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
+ }, pluralize = function (u) {
+ return function (number, withoutSuffix, string, isFuture) {
+ var f = pluralForm(number),
+ str = plurals[u][pluralForm(number)];
+ if (f === 2) {
+ str = str[withoutSuffix ? 0 : 1];
+ }
+ return str.replace(/%d/i, number);
+ };
+ }, months = [
+ 'كانون الثاني يناير',
+ 'شباط فبراير',
+ 'آذار مارس',
+ 'نيسان أبريل',
+ 'أيار مايو',
+ 'حزيران يونيو',
+ 'تموز يوليو',
+ 'آب أغسطس',
+ 'أيلول سبتمبر',
+ 'تشرين الأول أكتوبر',
+ 'تشرين الثاني نوفمبر',
+ 'كانون الأول ديسمبر'
+ ];
- return moment.defineLocale('ar', {
- months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
- monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
- weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
- weekdaysShort : "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),
- weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
+ var ar = moment.defineLocale('ar', {
+ months : months,
+ monthsShort : months,
+ weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'D/\u200FM/\u200FYYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiemParse: /ص|م/,
+ isPM : function (input) {
+ return 'م' === input;
},
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
- return "ص";
+ return 'ص';
} else {
- return "م";
+ return 'م';
}
},
calendar : {
- sameDay: "[اليوم على الساعة] LT",
- nextDay: '[غدا على الساعة] LT',
- nextWeek: 'dddd [على الساعة] LT',
- lastDay: '[أمس على الساعة] LT',
- lastWeek: 'dddd [على الساعة] LT',
+ sameDay: '[اليوم عند الساعة] LT',
+ nextDay: '[غدًا عند الساعة] LT',
+ nextWeek: 'dddd [عند الساعة] LT',
+ lastDay: '[أمس عند الساعة] LT',
+ lastWeek: 'dddd [عند الساعة] LT',
sameElse: 'L'
},
relativeTime : {
- future : "في %s",
- past : "منذ %s",
- s : "ثوان",
- m : "دقيقة",
- mm : "%d دقائق",
- h : "ساعة",
- hh : "%d ساعات",
- d : "يوم",
- dd : "%d أيام",
- M : "شهر",
- MM : "%d أشهر",
- y : "سنة",
- yy : "%d سنوات"
+ future : 'بعد %s',
+ past : 'منذ %s',
+ s : pluralize('s'),
+ m : pluralize('m'),
+ mm : pluralize('m'),
+ h : pluralize('h'),
+ hh : pluralize('h'),
+ d : pluralize('d'),
+ dd : pluralize('d'),
+ M : pluralize('M'),
+ MM : pluralize('M'),
+ y : pluralize('y'),
+ yy : pluralize('y')
},
preparse: function (string) {
- return string.replace(/[۰-۹]/g, function (match) {
+ return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
return numberMap[match];
}).replace(/،/g, ',');
},
@@ -94,4 +130,7 @@
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return ar;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/az.js b/lib/javascripts/moment_locale/az.js
index a6a5aff964e..5ff9b088c49 100644
--- a/lib/javascripts/moment_locale/az.js
+++ b/lib/javascripts/moment_locale/az.js
@@ -1,53 +1,49 @@
-// moment.js locale configuration
-// locale : azerbaijani (az)
-// author : topchiyev : https://github.com/topchiyev
+//! moment.js locale configuration
+//! locale : azerbaijani (az)
+//! author : topchiyev : https://github.com/topchiyev
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var suffixes = {
- 1: "-inci",
- 5: "-inci",
- 8: "-inci",
- 70: "-inci",
- 80: "-inci",
-
- 2: "-nci",
- 7: "-nci",
- 20: "-nci",
- 50: "-nci",
-
- 3: "-üncü",
- 4: "-üncü",
- 100: "-üncü",
-
- 6: "-ncı",
-
- 9: "-uncu",
- 10: "-uncu",
- 30: "-uncu",
-
- 60: "-ıncı",
- 90: "-ıncı"
+ 1: '-inci',
+ 5: '-inci',
+ 8: '-inci',
+ 70: '-inci',
+ 80: '-inci',
+ 2: '-nci',
+ 7: '-nci',
+ 20: '-nci',
+ 50: '-nci',
+ 3: '-üncü',
+ 4: '-üncü',
+ 100: '-üncü',
+ 6: '-ncı',
+ 9: '-uncu',
+ 10: '-uncu',
+ 30: '-uncu',
+ 60: '-ıncı',
+ 90: '-ıncı'
};
- return moment.defineLocale('az', {
- months : "yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),
- monthsShort : "yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),
- weekdays : "Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),
- weekdaysShort : "Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),
- weekdaysMin : "Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),
+
+ var az = moment.defineLocale('az', {
+ months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
+ monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
+ weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
+ weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
+ weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay : '[bugün saat] LT',
@@ -58,39 +54,43 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s sonra",
- past : "%s əvvəl",
- s : "birneçə saniyyə",
- m : "bir dəqiqə",
- mm : "%d dəqiqə",
- h : "bir saat",
- hh : "%d saat",
- d : "bir gün",
- dd : "%d gün",
- M : "bir ay",
- MM : "%d ay",
- y : "bir il",
- yy : "%d il"
+ future : '%s sonra',
+ past : '%s əvvəl',
+ s : 'birneçə saniyyə',
+ m : 'bir dəqiqə',
+ mm : '%d dəqiqə',
+ h : 'bir saat',
+ hh : '%d saat',
+ d : 'bir gün',
+ dd : '%d gün',
+ M : 'bir ay',
+ MM : '%d ay',
+ y : 'bir il',
+ yy : '%d il'
+ },
+ meridiemParse: /gecə|səhər|gündüz|axşam/,
+ isPM : function (input) {
+ return /^(gündüz|axşam)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
- return "gecə";
+ return 'gecə';
} else if (hour < 12) {
- return "səhər";
+ return 'səhər';
} else if (hour < 17) {
- return "gündüz";
+ return 'gündüz';
} else {
- return "axşam";
+ return 'axşam';
}
},
+ ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
ordinal : function (number) {
if (number === 0) { // special case for zero
- return number + "-ıncı";
+ return number + '-ıncı';
}
var a = number % 10,
b = number % 100 - a,
c = number >= 100 ? 100 : null;
-
return number + (suffixes[a] || suffixes[b] || suffixes[c]);
},
week : {
@@ -98,4 +98,7 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return az;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/be.js b/lib/javascripts/moment_locale/be.js
index 6e0aef1b8d1..c6294b34f4d 100644
--- a/lib/javascripts/moment_locale/be.js
+++ b/lib/javascripts/moment_locale/be.js
@@ -1,23 +1,21 @@
-// moment.js locale configuration
-// locale : belarusian (be)
-// author : Dmitry Demidov : https://github.com/demidov91
-// author: Praleska: http://praleska.pro/
-// Author : Menelion Elensúle : https://github.com/Oire
+//! moment.js locale configuration
+//! locale : belarusian (be)
+//! author : Dmitry Demidov : https://github.com/demidov91
+//! author: Praleska: http://praleska.pro/
+//! Author : Menelion Elensúle : https://github.com/Oire
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function plural(word, num) {
var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
}
-
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
@@ -37,44 +35,26 @@
}
}
- function monthsCaseReplace(m, format) {
- var months = {
- 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'),
- 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_')
+ var be = moment.defineLocale('be', {
+ months : {
+ format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
+ standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
},
-
- nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return months[nounCase][m.month()];
- }
-
- function weekdaysCaseReplace(m, format) {
- var weekdays = {
- 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
- 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_')
- },
-
- nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return weekdays[nounCase][m.day()];
- }
-
- return moment.defineLocale('be', {
- months : monthsCaseReplace,
monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
- weekdays : weekdaysCaseReplace,
- weekdaysShort : "нд_пн_ат_ср_чц_пт_сб".split("_"),
- weekdaysMin : "нд_пн_ат_ср_чц_пт_сб".split("_"),
+ weekdays : {
+ format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
+ standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
+ isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
+ },
+ weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
+ weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY г.",
- LLL : "D MMMM YYYY г., LT",
- LLLL : "dddd, D MMMM YYYY г., LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY г.',
+ LLL : 'D MMMM YYYY г., HH:mm',
+ LLLL : 'dddd, D MMMM YYYY г., HH:mm'
},
calendar : {
sameDay: '[Сёння ў] LT',
@@ -99,34 +79,36 @@
sameElse: 'L'
},
relativeTime : {
- future : "праз %s",
- past : "%s таму",
- s : "некалькі секунд",
+ future : 'праз %s',
+ past : '%s таму',
+ s : 'некалькі секунд',
m : relativeTimeWithPlural,
mm : relativeTimeWithPlural,
h : relativeTimeWithPlural,
hh : relativeTimeWithPlural,
- d : "дзень",
+ d : 'дзень',
dd : relativeTimeWithPlural,
- M : "месяц",
+ M : 'месяц',
MM : relativeTimeWithPlural,
- y : "год",
+ y : 'год',
yy : relativeTimeWithPlural
},
-
-
+ meridiemParse: /ночы|раніцы|дня|вечара/,
+ isPM : function (input) {
+ return /^(дня|вечара)$/.test(input);
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
- return "ночы";
+ return 'ночы';
} else if (hour < 12) {
- return "раніцы";
+ return 'раніцы';
} else if (hour < 17) {
- return "дня";
+ return 'дня';
} else {
- return "вечара";
+ return 'вечара';
}
},
-
+ ordinalParse: /\d{1,2}-(і|ы|га)/,
ordinal: function (number, period) {
switch (period) {
case 'M':
@@ -141,10 +123,12 @@
return number;
}
},
-
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return be;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/bg.js b/lib/javascripts/moment_locale/bg.js
index b8a8c326ad0..169e1238a19 100644
--- a/lib/javascripts/moment_locale/bg.js
+++ b/lib/javascripts/moment_locale/bg.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : bulgarian (bg)
-// author : Krasen Borisov : https://github.com/kraz
+//! moment.js locale configuration
+//! locale : bulgarian (bg)
+//! author : Krasen Borisov : https://github.com/kraz
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('bg', {
- months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),
- monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),
- weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),
- weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"),
- weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var bg = moment.defineLocale('bg', {
+ months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
+ monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
+ weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
+ weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
+ weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "D.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'D.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY H:mm',
+ LLLL : 'dddd, D MMMM YYYY H:mm'
},
calendar : {
sameDay : '[Днес в] LT',
@@ -45,20 +45,21 @@
sameElse : 'L'
},
relativeTime : {
- future : "след %s",
- past : "преди %s",
- s : "няколко секунди",
- m : "минута",
- mm : "%d минути",
- h : "час",
- hh : "%d часа",
- d : "ден",
- dd : "%d дни",
- M : "месец",
- MM : "%d месеца",
- y : "година",
- yy : "%d години"
+ future : 'след %s',
+ past : 'преди %s',
+ s : 'няколко секунди',
+ m : 'минута',
+ mm : '%d минути',
+ h : 'час',
+ hh : '%d часа',
+ d : 'ден',
+ dd : '%d дни',
+ M : 'месец',
+ MM : '%d месеца',
+ y : 'година',
+ yy : '%d години'
},
+ ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
ordinal : function (number) {
var lastDigit = number % 10,
last2Digits = number % 100;
@@ -83,4 +84,7 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return bg;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/bn.js b/lib/javascripts/moment_locale/bn.js
index 8ceb8eb0a4f..4eca5ee9ebc 100644
--- a/lib/javascripts/moment_locale/bn.js
+++ b/lib/javascripts/moment_locale/bn.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : Bengali (bn)
-// author : Kaushik Gandhi : https://github.com/kaushikgandhi
+//! moment.js locale configuration
+//! locale : Bengali (bn)
+//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '১',
'2': '২',
@@ -36,18 +35,19 @@
'০': '0'
};
- return moment.defineLocale('bn', {
- months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split("_"),
- monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split("_"),
- weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split("_"),
- weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split("_"),
- weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split("_"),
+ var bn = moment.defineLocale('bn', {
+ months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
+ monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'),
+ weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রবার_শনিবার'.split('_'),
+ weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্র_শনি'.split('_'),
+ weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'),
longDateFormat : {
- LT : "A h:mm সময়",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
+ LT : 'A h:mm সময়',
+ LTS : 'A h:mm:ss সময়',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY, A h:mm সময়',
+ LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
},
calendar : {
sameDay : '[আজ] LT',
@@ -58,19 +58,19 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s পরে",
- past : "%s আগে",
- s : "কএক সেকেন্ড",
- m : "এক মিনিট",
- mm : "%d মিনিট",
- h : "এক ঘন্টা",
- hh : "%d ঘন্টা",
- d : "এক দিন",
- dd : "%d দিন",
- M : "এক মাস",
- MM : "%d মাস",
- y : "এক বছর",
- yy : "%d বছর"
+ future : '%s পরে',
+ past : '%s আগে',
+ s : 'কয়েক সেকেন্ড',
+ m : 'এক মিনিট',
+ mm : '%d মিনিট',
+ h : 'এক ঘন্টা',
+ hh : '%d ঘন্টা',
+ d : 'এক দিন',
+ dd : '%d দিন',
+ M : 'এক মাস',
+ MM : '%d মাস',
+ y : 'এক বছর',
+ yy : '%d বছর'
},
preparse: function (string) {
return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
@@ -82,20 +82,24 @@
return symbolMap[match];
});
},
+ meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
+ isPM: function (input) {
+ return /^(দুপুর|বিকাল|রাত)$/.test(input);
+ },
//Bengali is a vast language its spoken
//in different forms in various parts of the world.
//I have just generalized with most common one used
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
- return "রাত";
+ return 'রাত';
} else if (hour < 10) {
- return "শকাল";
+ return 'সকাল';
} else if (hour < 17) {
- return "দুপুর";
+ return 'দুপুর';
} else if (hour < 20) {
- return "বিকেল";
+ return 'বিকাল';
} else {
- return "রাত";
+ return 'রাত';
}
},
week : {
@@ -103,4 +107,7 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return bn;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/bo.js b/lib/javascripts/moment_locale/bo.js
index f1567abf5ee..3ab33896f0c 100644
--- a/lib/javascripts/moment_locale/bo.js
+++ b/lib/javascripts/moment_locale/bo.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : tibetan (bo)
-// author : Thupten N. Chakrishar : https://github.com/vajradog
+//! moment.js locale configuration
+//! locale : tibetan (bo)
+//! author : Thupten N. Chakrishar : https://github.com/vajradog
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '༡',
'2': '༢',
@@ -36,18 +35,19 @@
'༠': '0'
};
- return moment.defineLocale('bo', {
- months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split("_"),
- monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split("_"),
- weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split("_"),
- weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split("_"),
- weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split("_"),
+ var bo = moment.defineLocale('bo', {
+ months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
+ monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
+ weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
+ weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
+ weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
longDateFormat : {
- LT : "A h:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
+ LT : 'A h:mm',
+ LTS : 'A h:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY, A h:mm',
+ LLLL : 'dddd, D MMMM YYYY, A h:mm'
},
calendar : {
sameDay : '[དི་རིང] LT',
@@ -58,19 +58,19 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s ལ་",
- past : "%s སྔན་ལ",
- s : "ལམ་སང",
- m : "སྐར་མ་གཅིག",
- mm : "%d སྐར་མ",
- h : "ཆུ་ཚོད་གཅིག",
- hh : "%d ཆུ་ཚོད",
- d : "ཉིན་གཅིག",
- dd : "%d ཉིན་",
- M : "ཟླ་བ་གཅིག",
- MM : "%d ཟླ་བ",
- y : "ལོ་གཅིག",
- yy : "%d ལོ"
+ future : '%s ལ་',
+ past : '%s སྔན་ལ',
+ s : 'ལམ་སང',
+ m : 'སྐར་མ་གཅིག',
+ mm : '%d སྐར་མ',
+ h : 'ཆུ་ཚོད་གཅིག',
+ hh : '%d ཆུ་ཚོད',
+ d : 'ཉིན་གཅིག',
+ dd : '%d ཉིན་',
+ M : 'ཟླ་བ་གཅིག',
+ MM : '%d ཟླ་བ',
+ y : 'ལོ་གཅིག',
+ yy : '%d ལོ'
},
preparse: function (string) {
return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
@@ -82,17 +82,21 @@
return symbolMap[match];
});
},
+ meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
+ isPM: function (input) {
+ return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input);
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
- return "མཚན་མོ";
+ return 'མཚན་མོ';
} else if (hour < 10) {
- return "ཞོགས་ཀས";
+ return 'ཞོགས་ཀས';
} else if (hour < 17) {
- return "ཉིན་གུང";
+ return 'ཉིན་གུང';
} else if (hour < 20) {
- return "དགོང་དག";
+ return 'དགོང་དག';
} else {
- return "མཚན་མོ";
+ return 'མཚན་མོ';
}
},
week : {
@@ -100,4 +104,7 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return bo;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/br.js b/lib/javascripts/moment_locale/br.js
index fb11fe1e579..2896cfb6a43 100644
--- a/lib/javascripts/moment_locale/br.js
+++ b/lib/javascripts/moment_locale/br.js
@@ -1,25 +1,23 @@
-// moment.js locale configuration
-// locale : breton (br)
-// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
+//! moment.js locale configuration
+//! locale : breton (br)
+//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function relativeTimeWithMutation(number, withoutSuffix, key) {
var format = {
- 'mm': "munutenn",
- 'MM': "miz",
- 'dd': "devezh"
+ 'mm': 'munutenn',
+ 'MM': 'miz',
+ 'dd': 'devezh'
};
return number + ' ' + mutation(format[key], number);
}
-
function specialMutationForYears(number) {
switch (lastNumber(number)) {
case 1:
@@ -32,21 +30,18 @@
return number + ' vloaz';
}
}
-
function lastNumber(number) {
if (number > 9) {
return lastNumber(number % 10);
}
return number;
}
-
function mutation(text, number) {
if (number === 2) {
return softMutation(text);
}
return text;
}
-
function softMutation(text) {
var mutationTable = {
'm': 'v',
@@ -59,18 +54,19 @@
return mutationTable[text.charAt(0)] + text.substring(1);
}
- return moment.defineLocale('br', {
- months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),
- monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),
- weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),
- weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),
- weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),
+ var br = moment.defineLocale('br', {
+ months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
+ monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
+ weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
+ weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
+ weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
longDateFormat : {
- LT : "h[e]mm A",
- L : "DD/MM/YYYY",
- LL : "D [a viz] MMMM YYYY",
- LLL : "D [a viz] MMMM YYYY LT",
- LLLL : "dddd, D [a viz] MMMM YYYY LT"
+ LT : 'h[e]mm A',
+ LTS : 'h[e]mm:ss A',
+ L : 'DD/MM/YYYY',
+ LL : 'D [a viz] MMMM YYYY',
+ LLL : 'D [a viz] MMMM YYYY h[e]mm A',
+ LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
},
calendar : {
sameDay : '[Hiziv da] LT',
@@ -81,20 +77,21 @@
sameElse : 'L'
},
relativeTime : {
- future : "a-benn %s",
- past : "%s 'zo",
- s : "un nebeud segondennoù",
- m : "ur vunutenn",
+ future : 'a-benn %s',
+ past : '%s \'zo',
+ s : 'un nebeud segondennoù',
+ m : 'ur vunutenn',
mm : relativeTimeWithMutation,
- h : "un eur",
- hh : "%d eur",
- d : "un devezh",
+ h : 'un eur',
+ hh : '%d eur',
+ d : 'un devezh',
dd : relativeTimeWithMutation,
- M : "ur miz",
+ M : 'ur miz',
MM : relativeTimeWithMutation,
- y : "ur bloaz",
+ y : 'ur bloaz',
yy : specialMutationForYears
},
+ ordinalParse: /\d{1,2}(añ|vet)/,
ordinal : function (number) {
var output = (number === 1) ? 'añ' : 'vet';
return number + output;
@@ -104,4 +101,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return br;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/bs.js b/lib/javascripts/moment_locale/bs.js
index d69015abbef..e0b3dae21eb 100644
--- a/lib/javascripts/moment_locale/bs.js
+++ b/lib/javascripts/moment_locale/bs.js
@@ -1,19 +1,18 @@
-// moment.js locale configuration
-// locale : bosnian (bs)
-// author : Nedim Cholich : https://github.com/frontyard
-// based on (hr) translation by Bojan Marković
+//! moment.js locale configuration
+//! locale : bosnian (bs)
+//! author : Nedim Cholich : https://github.com/frontyard
+//! based on (hr) translation by Bojan Marković
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function translate(number, withoutSuffix, key) {
- var result = number + " ";
+ var result = number + ' ';
switch (key) {
case 'm':
return withoutSuffix ? 'jedna minuta' : 'jedne minute';
@@ -65,23 +64,23 @@
}
}
- return moment.defineLocale('bs', {
- months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),
- monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
- weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
- weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"),
- weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"),
+ var bs = moment.defineLocale('bs', {
+ months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
+ monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
+ weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
+ weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+ weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD. MM. YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD. MM. YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY H:mm',
+ LLLL : 'dddd, D. MMMM YYYY H:mm'
},
calendar : {
sameDay : '[danas u] LT',
nextDay : '[sutra u] LT',
-
nextWeek : function () {
switch (this.day()) {
case 0:
@@ -115,24 +114,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "za %s",
- past : "prije %s",
- s : "par sekundi",
+ future : 'za %s',
+ past : 'prije %s',
+ s : 'par sekundi',
m : translate,
mm : translate,
h : translate,
hh : translate,
- d : "dan",
+ d : 'dan',
dd : translate,
- M : "mjesec",
+ M : 'mjesec',
MM : translate,
- y : "godinu",
+ y : 'godinu',
yy : translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return bs;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ca.js b/lib/javascripts/moment_locale/ca.js
index 932c1cbda74..15f75fe99c9 100644
--- a/lib/javascripts/moment_locale/ca.js
+++ b/lib/javascripts/moment_locale/ca.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : catalan (ca)
-// author : Juan G. Hurtado : https://github.com/juanghurtado
+//! moment.js locale configuration
+//! locale : catalan (ca)
+//! author : Juan G. Hurtado : https://github.com/juanghurtado
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('ca', {
- months : "gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),
- monthsShort : "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),
- weekdays : "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),
- weekdaysShort : "dg._dl._dt._dc._dj._dv._ds.".split("_"),
- weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ca = moment.defineLocale('ca', {
+ months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
+ monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
+ weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
+ weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
+ weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY H:mm',
+ LLLL : 'dddd D MMMM YYYY H:mm'
},
calendar : {
sameDay : function () {
@@ -43,24 +43,37 @@
sameElse : 'L'
},
relativeTime : {
- future : "en %s",
- past : "fa %s",
- s : "uns segons",
- m : "un minut",
- mm : "%d minuts",
- h : "una hora",
- hh : "%d hores",
- d : "un dia",
- dd : "%d dies",
- M : "un mes",
- MM : "%d mesos",
- y : "un any",
- yy : "%d anys"
+ future : 'en %s',
+ past : 'fa %s',
+ s : 'uns segons',
+ m : 'un minut',
+ mm : '%d minuts',
+ h : 'una hora',
+ hh : '%d hores',
+ d : 'un dia',
+ dd : '%d dies',
+ M : 'un mes',
+ MM : '%d mesos',
+ y : 'un any',
+ yy : '%d anys'
+ },
+ ordinalParse: /\d{1,2}(r|n|t|è|a)/,
+ ordinal : function (number, period) {
+ var output = (number === 1) ? 'r' :
+ (number === 2) ? 'n' :
+ (number === 3) ? 'r' :
+ (number === 4) ? 't' : 'è';
+ if (period === 'w' || period === 'W') {
+ output = 'a';
+ }
+ return number + output;
},
- ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return ca;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/cs.js b/lib/javascripts/moment_locale/cs.js
index 085bba06f4b..5854f70e2e1 100644
--- a/lib/javascripts/moment_locale/cs.js
+++ b/lib/javascripts/moment_locale/cs.js
@@ -1,25 +1,22 @@
-// moment.js locale configuration
-// locale : czech (cs)
-// author : petrbela : https://github.com/petrbela
+//! moment.js locale configuration
+//! locale : czech (cs)
+//! author : petrbela : https://github.com/petrbela
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),
- monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+ var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
+ monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
function plural(n) {
return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
}
-
function translate(number, withoutSuffix, key, isFuture) {
- var result = number + " ";
+ var result = number + ' ';
switch (key) {
case 's': // a few seconds / in a few seconds / a few seconds ago
return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
@@ -71,7 +68,7 @@
}
}
- return moment.defineLocale('cs', {
+ var cs = moment.defineLocale('cs', {
months : months,
monthsShort : monthsShort,
monthsParse : (function (months, monthsShort) {
@@ -82,18 +79,33 @@
}
return _monthsParse;
}(months, monthsShort)),
- weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),
- weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"),
- weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"),
+ shortMonthsParse : (function (monthsShort) {
+ var i, _shortMonthsParse = [];
+ for (i = 0; i < 12; i++) {
+ _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
+ }
+ return _shortMonthsParse;
+ }(monthsShort)),
+ longMonthsParse : (function (months) {
+ var i, _longMonthsParse = [];
+ for (i = 0; i < 12; i++) {
+ _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
+ }
+ return _longMonthsParse;
+ }(months)),
+ weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
+ weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
+ weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
longDateFormat : {
- LT: "H.mm",
- L : "DD. MM. YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd D. MMMM YYYY LT"
+ LT: 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY H:mm',
+ LLLL : 'dddd D. MMMM YYYY H:mm'
},
calendar : {
- sameDay: "[dnes v] LT",
+ sameDay: '[dnes v] LT',
nextDay: '[zítra v] LT',
nextWeek: function () {
switch (this.day()) {
@@ -129,11 +141,11 @@
return '[minulou sobotu v] LT';
}
},
- sameElse: "L"
+ sameElse: 'L'
},
relativeTime : {
- future : "za %s",
- past : "před %s",
+ future : 'za %s',
+ past : 'před %s',
s : translate,
m : translate,
mm : translate,
@@ -146,10 +158,14 @@
y : translate,
yy : translate
},
+ ordinalParse : /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return cs;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/cv.js b/lib/javascripts/moment_locale/cv.js
index 0a290d8fafa..a1d87e18461 100644
--- a/lib/javascripts/moment_locale/cv.js
+++ b/lib/javascripts/moment_locale/cv.js
@@ -1,59 +1,63 @@
-// moment.js locale configuration
-// locale : chuvash (cv)
-// author : Anatoly Mironov : https://github.com/mirontoli
+//! moment.js locale configuration
+//! locale : chuvash (cv)
+//! author : Anatoly Mironov : https://github.com/mirontoli
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('cv', {
- months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),
- monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),
- weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"),
- weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"),
- weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var cv = moment.defineLocale('cv', {
+ months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
+ monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
+ weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
+ weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
+ weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD-MM-YYYY",
- LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]",
- LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT",
- LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD-MM-YYYY',
+ LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
+ LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
+ LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
},
calendar : {
sameDay: '[Паян] LT [сехетре]',
nextDay: '[Ыран] LT [сехетре]',
- lastDay: '[Ĕнер] LT [сехетре]',
- nextWeek: '[Çитес] dddd LT [сехетре]',
- lastWeek: '[Иртнĕ] dddd LT [сехетре]',
+ lastDay: '[Ӗнер] LT [сехетре]',
+ nextWeek: '[Ҫитес] dddd LT [сехетре]',
+ lastWeek: '[Иртнӗ] dddd LT [сехетре]',
sameElse: 'L'
},
relativeTime : {
future : function (output) {
- var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран";
+ var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
return output + affix;
},
- past : "%s каялла",
- s : "пĕр-ик çеккунт",
- m : "пĕр минут",
- mm : "%d минут",
- h : "пĕр сехет",
- hh : "%d сехет",
- d : "пĕр кун",
- dd : "%d кун",
- M : "пĕр уйăх",
- MM : "%d уйăх",
- y : "пĕр çул",
- yy : "%d çул"
+ past : '%s каялла',
+ s : 'пӗр-ик ҫеккунт',
+ m : 'пӗр минут',
+ mm : '%d минут',
+ h : 'пӗр сехет',
+ hh : '%d сехет',
+ d : 'пӗр кун',
+ dd : '%d кун',
+ M : 'пӗр уйӑх',
+ MM : '%d уйӑх',
+ y : 'пӗр ҫул',
+ yy : '%d ҫул'
},
- ordinal : '%d-мĕш',
+ ordinalParse: /\d{1,2}-мӗш/,
+ ordinal : '%d-мӗш',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return cv;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/cy.js b/lib/javascripts/moment_locale/cy.js
index 6231a52e51d..64dfe43f50b 100644
--- a/lib/javascripts/moment_locale/cy.js
+++ b/lib/javascripts/moment_locale/cy.js
@@ -1,29 +1,29 @@
-// moment.js locale configuration
-// locale : Welsh (cy)
-// author : Robert Allen
+//! moment.js locale configuration
+//! locale : Welsh (cy)
+//! author : Robert Allen
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale("cy", {
- months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),
- monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),
- weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),
- weekdaysShort: "Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),
- weekdaysMin: "Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var cy = moment.defineLocale('cy', {
+ months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
+ monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
+ weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
+ weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
+ weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
// time formats are the same as en-gb
longDateFormat: {
- LT: "HH:mm",
- L: "DD/MM/YYYY",
- LL: "D MMMM YYYY",
- LLL: "D MMMM YYYY LT",
- LLLL: "dddd, D MMMM YYYY LT"
+ LT: 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
},
calendar: {
sameDay: '[Heddiw am] LT',
@@ -34,20 +34,21 @@
sameElse: 'L'
},
relativeTime: {
- future: "mewn %s",
- past: "%s yn ôl",
- s: "ychydig eiliadau",
- m: "munud",
- mm: "%d munud",
- h: "awr",
- hh: "%d awr",
- d: "diwrnod",
- dd: "%d diwrnod",
- M: "mis",
- MM: "%d mis",
- y: "blwyddyn",
- yy: "%d flynedd"
+ future: 'mewn %s',
+ past: '%s yn ôl',
+ s: 'ychydig eiliadau',
+ m: 'munud',
+ mm: '%d munud',
+ h: 'awr',
+ hh: '%d awr',
+ d: 'diwrnod',
+ dd: '%d diwrnod',
+ M: 'mis',
+ MM: '%d mis',
+ y: 'blwyddyn',
+ yy: '%d flynedd'
},
+ ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
// traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
ordinal: function (number) {
var b = number,
@@ -56,7 +57,6 @@
'', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
];
-
if (b > 20) {
if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
output = 'fed'; // not 30ain, 70ain or 90ain
@@ -66,7 +66,6 @@
} else if (b > 0) {
output = lookup[b];
}
-
return number + output;
},
week : {
@@ -74,4 +73,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return cy;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/da.js b/lib/javascripts/moment_locale/da.js
index 9c1c68fab1d..70b4c0da43f 100644
--- a/lib/javascripts/moment_locale/da.js
+++ b/lib/javascripts/moment_locale/da.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : danish (da)
-// author : Ulrik Nielsen : https://github.com/mrbase
+//! moment.js locale configuration
+//! locale : danish (da)
+//! author : Ulrik Nielsen : https://github.com/mrbase
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('da', {
- months : "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),
- monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
- weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
- weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"),
- weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var da = moment.defineLocale('da', {
+ months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
+ monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+ weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+ weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
+ weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd [d.] D. MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY HH:mm',
+ LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'
},
calendar : {
sameDay : '[I dag kl.] LT',
@@ -33,24 +33,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "om %s",
- past : "%s siden",
- s : "få sekunder",
- m : "et minut",
- mm : "%d minutter",
- h : "en time",
- hh : "%d timer",
- d : "en dag",
- dd : "%d dage",
- M : "en måned",
- MM : "%d måneder",
- y : "et år",
- yy : "%d år"
+ future : 'om %s',
+ past : '%s siden',
+ s : 'få sekunder',
+ m : 'et minut',
+ mm : '%d minutter',
+ h : 'en time',
+ hh : '%d timer',
+ d : 'en dag',
+ dd : '%d dage',
+ M : 'en måned',
+ MM : '%d måneder',
+ y : 'et år',
+ yy : '%d år'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return da;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/de-at.js b/lib/javascripts/moment_locale/de-at.js
index 48d1b88135b..20da9cf613c 100644
--- a/lib/javascripts/moment_locale/de-at.js
+++ b/lib/javascripts/moment_locale/de-at.js
@@ -1,18 +1,18 @@
-// moment.js locale configuration
-// locale : austrian german (de-at)
-// author : lluchs : https://github.com/lluchs
-// author: Menelion Elensúle: https://github.com/Oire
-// author : Martin Groller : https://github.com/MadMG
+//! moment.js locale configuration
+//! locale : austrian german (de-at)
+//! author : lluchs : https://github.com/lluchs
+//! author: Menelion Elensúle: https://github.com/Oire
+//! author : Martin Groller : https://github.com/MadMG
+//! author : Mikolaj Dadela : https://github.com/mik01aj
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eine Minute', 'einer Minute'],
@@ -27,35 +27,36 @@
return withoutSuffix ? format[key][0] : format[key][1];
}
- return moment.defineLocale('de-at', {
- months : "Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
- monthsShort : "Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
- weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),
- weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),
- weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"),
+ var de_at = moment.defineLocale('de-at', {
+ months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
+ monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
+ weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
+ weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
+ weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
longDateFormat : {
- LT: "HH:mm [Uhr]",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY HH:mm',
+ LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
- sameDay: "[Heute um] LT",
- sameElse: "L",
- nextDay: '[Morgen um] LT',
- nextWeek: 'dddd [um] LT',
- lastDay: '[Gestern um] LT',
- lastWeek: '[letzten] dddd [um] LT'
+ sameDay: '[heute um] LT [Uhr]',
+ sameElse: 'L',
+ nextDay: '[morgen um] LT [Uhr]',
+ nextWeek: 'dddd [um] LT [Uhr]',
+ lastDay: '[gestern um] LT [Uhr]',
+ lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
- future : "in %s",
- past : "vor %s",
- s : "ein paar Sekunden",
+ future : 'in %s',
+ past : 'vor %s',
+ s : 'ein paar Sekunden',
m : processRelativeTime,
- mm : "%d Minuten",
+ mm : '%d Minuten',
h : processRelativeTime,
- hh : "%d Stunden",
+ hh : '%d Stunden',
d : processRelativeTime,
dd : processRelativeTime,
M : processRelativeTime,
@@ -63,10 +64,14 @@
y : processRelativeTime,
yy : processRelativeTime
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return de_at;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/de.js b/lib/javascripts/moment_locale/de.js
index 0c389f92f4d..41c81a1af63 100644
--- a/lib/javascripts/moment_locale/de.js
+++ b/lib/javascripts/moment_locale/de.js
@@ -1,17 +1,17 @@
-// moment.js locale configuration
-// locale : german (de)
-// author : lluchs : https://github.com/lluchs
-// author: Menelion Elensúle: https://github.com/Oire
+//! moment.js locale configuration
+//! locale : german (de)
+//! author : lluchs : https://github.com/lluchs
+//! author: Menelion Elensúle: https://github.com/Oire
+//! author : Mikolaj Dadela : https://github.com/mik01aj
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eine Minute', 'einer Minute'],
@@ -26,35 +26,36 @@
return withoutSuffix ? format[key][0] : format[key][1];
}
- return moment.defineLocale('de', {
- months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
- monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
- weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),
- weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),
- weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"),
+ var de = moment.defineLocale('de', {
+ months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
+ monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
+ weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
+ weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
+ weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
longDateFormat : {
- LT: "HH:mm [Uhr]",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY HH:mm',
+ LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
- sameDay: "[Heute um] LT",
- sameElse: "L",
- nextDay: '[Morgen um] LT',
- nextWeek: 'dddd [um] LT',
- lastDay: '[Gestern um] LT',
- lastWeek: '[letzten] dddd [um] LT'
+ sameDay: '[heute um] LT [Uhr]',
+ sameElse: 'L',
+ nextDay: '[morgen um] LT [Uhr]',
+ nextWeek: 'dddd [um] LT [Uhr]',
+ lastDay: '[gestern um] LT [Uhr]',
+ lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
- future : "in %s",
- past : "vor %s",
- s : "ein paar Sekunden",
+ future : 'in %s',
+ past : 'vor %s',
+ s : 'ein paar Sekunden',
m : processRelativeTime,
- mm : "%d Minuten",
+ mm : '%d Minuten',
h : processRelativeTime,
- hh : "%d Stunden",
+ hh : '%d Stunden',
d : processRelativeTime,
dd : processRelativeTime,
M : processRelativeTime,
@@ -62,10 +63,14 @@
y : processRelativeTime,
yy : processRelativeTime
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return de;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/dv.js b/lib/javascripts/moment_locale/dv.js
new file mode 100644
index 00000000000..5fc59b668b7
--- /dev/null
+++ b/lib/javascripts/moment_locale/dv.js
@@ -0,0 +1,99 @@
+//! moment.js locale configuration
+//! locale : dhivehi (dv)
+//! author : Jawish Hameed : https://github.com/jawish
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var months = [
+ 'ޖެނުއަރީ',
+ 'ފެބްރުއަރީ',
+ 'މާރިޗު',
+ 'އޭޕްރީލު',
+ 'މޭ',
+ 'ޖޫން',
+ 'ޖުލައި',
+ 'އޯގަސްޓު',
+ 'ސެޕްޓެމްބަރު',
+ 'އޮކްޓޯބަރު',
+ 'ނޮވެމްބަރު',
+ 'ޑިސެމްބަރު'
+ ], weekdays = [
+ 'އާދިއްތަ',
+ 'ހޯމަ',
+ 'އަންގާރަ',
+ 'ބުދަ',
+ 'ބުރާސްފަތި',
+ 'ހުކުރު',
+ 'ހޮނިހިރު'
+ ];
+
+ var dv = moment.defineLocale('dv', {
+ months : months,
+ monthsShort : months,
+ weekdays : weekdays,
+ weekdaysShort : weekdays,
+ weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
+ longDateFormat : {
+
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'D/M/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiemParse: /މކ|މފ/,
+ isPM : function (input) {
+ return '' === input;
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 12) {
+ return 'މކ';
+ } else {
+ return 'މފ';
+ }
+ },
+ calendar : {
+ sameDay : '[މިއަދު] LT',
+ nextDay : '[މާދަމާ] LT',
+ nextWeek : 'dddd LT',
+ lastDay : '[އިއްޔެ] LT',
+ lastWeek : '[ފާއިތުވި] dddd LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'ތެރޭގައި %s',
+ past : 'ކުރިން %s',
+ s : 'ސިކުންތުކޮޅެއް',
+ m : 'މިނިޓެއް',
+ mm : 'މިނިޓު %d',
+ h : 'ގަޑިއިރެއް',
+ hh : 'ގަޑިއިރު %d',
+ d : 'ދުވަހެއް',
+ dd : 'ދުވަސް %d',
+ M : 'މަހެއް',
+ MM : 'މަސް %d',
+ y : 'އަހަރެއް',
+ yy : 'އަހަރު %d'
+ },
+ preparse: function (string) {
+ return string.replace(/،/g, ',');
+ },
+ postformat: function (string) {
+ return string.replace(/,/g, '،');
+ },
+ week : {
+ dow : 7, // Sunday is the first day of the week.
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ return dv;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/el.js b/lib/javascripts/moment_locale/el.js
index 7f31628d360..d86666dcaf6 100644
--- a/lib/javascripts/moment_locale/el.js
+++ b/lib/javascripts/moment_locale/el.js
@@ -1,30 +1,33 @@
-// moment.js locale configuration
-// locale : modern greek (el)
-// author : Aggelos Karalias : https://github.com/mehiel
+//! moment.js locale configuration
+//! locale : modern greek (el)
+//! author : Aggelos Karalias : https://github.com/mehiel
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+ function isFunction(input) {
+ return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
}
-}(function (moment) {
- return moment.defineLocale('el', {
- monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),
- monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),
+
+
+ var el = moment.defineLocale('el', {
+ monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
+ monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
months : function (momentToFormat, format) {
- if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM'
+ if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
return this._monthsGenitiveEl[momentToFormat.month()];
} else {
return this._monthsNominativeEl[momentToFormat.month()];
}
},
- monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),
- weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),
- weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),
- weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),
+ monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
+ weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
+ weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
+ weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
meridiem : function (hours, minutes, isLower) {
if (hours > 11) {
return isLower ? 'μμ' : 'ΜΜ';
@@ -32,12 +35,17 @@
return isLower ? 'πμ' : 'ΠΜ';
}
},
+ isPM : function (input) {
+ return ((input + '').toLowerCase()[0] === 'μ');
+ },
+ meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
longDateFormat : {
- LT : "h:mm A",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY h:mm A',
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendarEl : {
sameDay : '[Σήμερα {}] LT',
@@ -57,34 +65,34 @@
calendar : function (key, mom) {
var output = this._calendarEl[key],
hours = mom && mom.hours();
-
- if (typeof output === 'function') {
+ if (isFunction(output)) {
output = output.apply(mom);
}
-
- return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις"));
+ return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
},
relativeTime : {
- future : "σε %s",
- past : "%s πριν",
- s : "δευτερόλεπτα",
- m : "ένα λεπτό",
- mm : "%d λεπτά",
- h : "μία ώρα",
- hh : "%d ώρες",
- d : "μία μέρα",
- dd : "%d μέρες",
- M : "ένας μήνας",
- MM : "%d μήνες",
- y : "ένας χρόνος",
- yy : "%d χρόνια"
- },
- ordinal : function (number) {
- return number + 'η';
+ future : 'σε %s',
+ past : '%s πριν',
+ s : 'λίγα δευτερόλεπτα',
+ m : 'ένα λεπτό',
+ mm : '%d λεπτά',
+ h : 'μία ώρα',
+ hh : '%d ώρες',
+ d : 'μία μέρα',
+ dd : '%d μέρες',
+ M : 'ένας μήνας',
+ MM : '%d μήνες',
+ y : 'ένας χρόνος',
+ yy : '%d χρόνια'
},
+ ordinalParse: /\d{1,2}η/,
+ ordinal: '%dη',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4st is the first week of the year.
}
});
-}));
+
+ return el;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/en-au.js b/lib/javascripts/moment_locale/en-au.js
index 852ecc9f033..58608c18345 100644
--- a/lib/javascripts/moment_locale/en-au.js
+++ b/lib/javascripts/moment_locale/en-au.js
@@ -1,27 +1,27 @@
-// moment.js locale configuration
-// locale : australian english (en-au)
+//! moment.js locale configuration
+//! locale : australian english (en-au)
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('en-au', {
- months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
- weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
- weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
- weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var en_au = moment.defineLocale('en-au', {
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
- LT : "h:mm A",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY h:mm A',
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendar : {
sameDay : '[Today at] LT',
@@ -32,20 +32,21 @@
sameElse : 'L'
},
relativeTime : {
- future : "in %s",
- past : "%s ago",
- s : "a few seconds",
- m : "a minute",
- mm : "%d minutes",
- h : "an hour",
- hh : "%d hours",
- d : "a day",
- dd : "%d days",
- M : "a month",
- MM : "%d months",
- y : "a year",
- yy : "%d years"
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
},
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -59,4 +60,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return en_au;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/en-ca.js b/lib/javascripts/moment_locale/en-ca.js
index ce253a83355..f0ee032e624 100644
--- a/lib/javascripts/moment_locale/en-ca.js
+++ b/lib/javascripts/moment_locale/en-ca.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : canadian english (en-ca)
-// author : Jonathan Abourbih : https://github.com/jonbca
+//! moment.js locale configuration
+//! locale : canadian english (en-ca)
+//! author : Jonathan Abourbih : https://github.com/jonbca
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('en-ca', {
- months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
- weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
- weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
- weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var en_ca = moment.defineLocale('en-ca', {
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
- LT : "h:mm A",
- L : "YYYY-MM-DD",
- LL : "D MMMM, YYYY",
- LLL : "D MMMM, YYYY LT",
- LLLL : "dddd, D MMMM, YYYY LT"
+ LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
+ L : 'YYYY-MM-DD',
+ LL : 'D MMMM, YYYY',
+ LLL : 'D MMMM, YYYY h:mm A',
+ LLLL : 'dddd, D MMMM, YYYY h:mm A'
},
calendar : {
sameDay : '[Today at] LT',
@@ -33,20 +33,21 @@
sameElse : 'L'
},
relativeTime : {
- future : "in %s",
- past : "%s ago",
- s : "a few seconds",
- m : "a minute",
- mm : "%d minutes",
- h : "an hour",
- hh : "%d hours",
- d : "a day",
- dd : "%d days",
- M : "a month",
- MM : "%d months",
- y : "a year",
- yy : "%d years"
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
},
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -56,4 +57,7 @@
return number + output;
}
});
-}));
+
+ return en_ca;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/en-gb.js b/lib/javascripts/moment_locale/en-gb.js
index 14ccbab3ed8..47b2c209b73 100644
--- a/lib/javascripts/moment_locale/en-gb.js
+++ b/lib/javascripts/moment_locale/en-gb.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : great britain english (en-gb)
-// author : Chris Gedrim : https://github.com/chrisgedrim
+//! moment.js locale configuration
+//! locale : great britain english (en-gb)
+//! author : Chris Gedrim : https://github.com/chrisgedrim
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('en-gb', {
- months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
- weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
- weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
- weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var en_gb = moment.defineLocale('en-gb', {
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay : '[Today at] LT',
@@ -33,20 +33,21 @@
sameElse : 'L'
},
relativeTime : {
- future : "in %s",
- past : "%s ago",
- s : "a few seconds",
- m : "a minute",
- mm : "%d minutes",
- h : "an hour",
- hh : "%d hours",
- d : "a day",
- dd : "%d days",
- M : "a month",
- MM : "%d months",
- y : "a year",
- yy : "%d years"
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
},
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -60,4 +61,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return en_gb;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/en-ie.js b/lib/javascripts/moment_locale/en-ie.js
new file mode 100644
index 00000000000..c0ff10c405d
--- /dev/null
+++ b/lib/javascripts/moment_locale/en-ie.js
@@ -0,0 +1,67 @@
+//! moment.js locale configuration
+//! locale : Irish english (en-ie)
+//! author : Chris Cartlidge : https://github.com/chriscartlidge
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var en_ie = moment.defineLocale('en-ie', {
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD-MM-YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
+ },
+ calendar : {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
+ },
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
+ (b === 1) ? 'st' :
+ (b === 2) ? 'nd' :
+ (b === 3) ? 'rd' : 'th';
+ return number + output;
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ return en_ie;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/en-nz.js b/lib/javascripts/moment_locale/en-nz.js
new file mode 100644
index 00000000000..14a50ea4bd2
--- /dev/null
+++ b/lib/javascripts/moment_locale/en-nz.js
@@ -0,0 +1,66 @@
+//! moment.js locale configuration
+//! locale : New Zealand english (en-nz)
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var en_nz = moment.defineLocale('en-nz', {
+ months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ longDateFormat : {
+ LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY h:mm A',
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
+ },
+ calendar : {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
+ },
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
+ (b === 1) ? 'st' :
+ (b === 2) ? 'nd' :
+ (b === 3) ? 'rd' : 'th';
+ return number + output;
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ return en_nz;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/eo.js b/lib/javascripts/moment_locale/eo.js
index 318385b9502..92772dffa4c 100644
--- a/lib/javascripts/moment_locale/eo.js
+++ b/lib/javascripts/moment_locale/eo.js
@@ -1,30 +1,34 @@
-// moment.js locale configuration
-// locale : esperanto (eo)
-// author : Colin Dean : https://github.com/colindean
-// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
-// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
+//! moment.js locale configuration
+//! locale : esperanto (eo)
+//! author : Colin Dean : https://github.com/colindean
+//! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
+//! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('eo', {
- months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),
- monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),
- weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),
- weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),
- weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var eo = moment.defineLocale('eo', {
+ months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
+ monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
+ weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
+ weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'),
+ weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "D[-an de] MMMM, YYYY",
- LLL : "D[-an de] MMMM, YYYY LT",
- LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'YYYY-MM-DD',
+ LL : 'D[-an de] MMMM, YYYY',
+ LLL : 'D[-an de] MMMM, YYYY HH:mm',
+ LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm'
+ },
+ meridiemParse: /[ap]\.t\.m/i,
+ isPM: function (input) {
+ return input.charAt(0).toLowerCase() === 'p';
},
meridiem : function (hours, minutes, isLower) {
if (hours > 11) {
@@ -42,24 +46,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "je %s",
- past : "antaŭ %s",
- s : "sekundoj",
- m : "minuto",
- mm : "%d minutoj",
- h : "horo",
- hh : "%d horoj",
- d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo
- dd : "%d tagoj",
- M : "monato",
- MM : "%d monatoj",
- y : "jaro",
- yy : "%d jaroj"
+ future : 'je %s',
+ past : 'antaŭ %s',
+ s : 'sekundoj',
+ m : 'minuto',
+ mm : '%d minutoj',
+ h : 'horo',
+ hh : '%d horoj',
+ d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
+ dd : '%d tagoj',
+ M : 'monato',
+ MM : '%d monatoj',
+ y : 'jaro',
+ yy : '%d jaroj'
},
- ordinal : "%da",
+ ordinalParse: /\d{1,2}a/,
+ ordinal : '%da',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return eo;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/es.js b/lib/javascripts/moment_locale/es.js
index ed0b5644506..efb51a31d0b 100644
--- a/lib/javascripts/moment_locale/es.js
+++ b/lib/javascripts/moment_locale/es.js
@@ -1,21 +1,20 @@
-// moment.js locale configuration
-// locale : spanish (es)
-// author : Julio Napurí : https://github.com/julionc
+//! moment.js locale configuration
+//! locale : spanish (es)
+//! author : Julio Napurí : https://github.com/julionc
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- var monthsShortDot = "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),
- monthsShort = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
- return moment.defineLocale('es', {
- months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),
+
+ var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
+ monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
+
+ var es = moment.defineLocale('es', {
+ months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
monthsShort : function (m, format) {
if (/-MMM-/.test(format)) {
return monthsShort[m.month()];
@@ -23,15 +22,16 @@
return monthsShortDot[m.month()];
}
},
- weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),
- weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"),
- weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),
+ weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+ weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D [de] MMMM [del] YYYY",
- LLL : "D [de] MMMM [del] YYYY LT",
- LLLL : "dddd, D [de] MMMM [del] YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D [de] MMMM [de] YYYY',
+ LLL : 'D [de] MMMM [de] YYYY H:mm',
+ LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
},
calendar : {
sameDay : function () {
@@ -52,24 +52,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "en %s",
- past : "hace %s",
- s : "unos segundos",
- m : "un minuto",
- mm : "%d minutos",
- h : "una hora",
- hh : "%d horas",
- d : "un día",
- dd : "%d días",
- M : "un mes",
- MM : "%d meses",
- y : "un año",
- yy : "%d años"
+ future : 'en %s',
+ past : 'hace %s',
+ s : 'unos segundos',
+ m : 'un minuto',
+ mm : '%d minutos',
+ h : 'una hora',
+ hh : '%d horas',
+ d : 'un día',
+ dd : '%d días',
+ M : 'un mes',
+ MM : '%d meses',
+ y : 'un año',
+ yy : '%d años'
},
+ ordinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return es;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/et.js b/lib/javascripts/moment_locale/et.js
index 2241529d231..09043bfad65 100644
--- a/lib/javascripts/moment_locale/et.js
+++ b/lib/javascripts/moment_locale/et.js
@@ -1,17 +1,16 @@
-// moment.js locale configuration
-// locale : estonian (et)
-// author : Henry Kehlmann : https://github.com/madhenry
-// improvements : Illimar Tambek : https://github.com/ragulka
+//! moment.js locale configuration
+//! locale : estonian (et)
+//! author : Henry Kehlmann : https://github.com/madhenry
+//! improvements : Illimar Tambek : https://github.com/ragulka
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
@@ -31,18 +30,19 @@
return isFuture ? format[key][0] : format[key][1];
}
- return moment.defineLocale('et', {
- months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),
- monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),
- weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),
- weekdaysShort : "P_E_T_K_N_R_L".split("_"),
- weekdaysMin : "P_E_T_K_N_R_L".split("_"),
+ var et = moment.defineLocale('et', {
+ months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
+ monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
+ weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
+ weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
+ weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY H:mm',
+ LLLL : 'dddd, D. MMMM YYYY H:mm'
},
calendar : {
sameDay : '[Täna,] LT',
@@ -53,8 +53,8 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s pärast",
- past : "%s tagasi",
+ future : '%s pärast',
+ past : '%s tagasi',
s : processRelativeTime,
m : processRelativeTime,
mm : processRelativeTime,
@@ -67,10 +67,14 @@
y : processRelativeTime,
yy : processRelativeTime
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return et;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/eu.js b/lib/javascripts/moment_locale/eu.js
index fe2dddb7bf6..52db117692a 100644
--- a/lib/javascripts/moment_locale/eu.js
+++ b/lib/javascripts/moment_locale/eu.js
@@ -1,32 +1,32 @@
-// moment.js locale configuration
-// locale : euskara (eu)
-// author : Eneko Illarramendi : https://github.com/eillarra
+//! moment.js locale configuration
+//! locale : euskara (eu)
+//! author : Eneko Illarramendi : https://github.com/eillarra
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('eu', {
- months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),
- monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),
- weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),
- weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"),
- weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var eu = moment.defineLocale('eu', {
+ months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
+ monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
+ weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
+ weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
+ weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "YYYY[ko] MMMM[ren] D[a]",
- LLL : "YYYY[ko] MMMM[ren] D[a] LT",
- LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT",
- l : "YYYY-M-D",
- ll : "YYYY[ko] MMM D[a]",
- lll : "YYYY[ko] MMM D[a] LT",
- llll : "ddd, YYYY[ko] MMM D[a] LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'YYYY-MM-DD',
+ LL : 'YYYY[ko] MMMM[ren] D[a]',
+ LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
+ LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
+ l : 'YYYY-M-D',
+ ll : 'YYYY[ko] MMM D[a]',
+ lll : 'YYYY[ko] MMM D[a] HH:mm',
+ llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
},
calendar : {
sameDay : '[gaur] LT[etan]',
@@ -37,24 +37,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s barru",
- past : "duela %s",
- s : "segundo batzuk",
- m : "minutu bat",
- mm : "%d minutu",
- h : "ordu bat",
- hh : "%d ordu",
- d : "egun bat",
- dd : "%d egun",
- M : "hilabete bat",
- MM : "%d hilabete",
- y : "urte bat",
- yy : "%d urte"
+ future : '%s barru',
+ past : 'duela %s',
+ s : 'segundo batzuk',
+ m : 'minutu bat',
+ mm : '%d minutu',
+ h : 'ordu bat',
+ hh : '%d ordu',
+ d : 'egun bat',
+ dd : '%d egun',
+ M : 'hilabete bat',
+ MM : '%d hilabete',
+ y : 'urte bat',
+ yy : '%d urte'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return eu;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/fa.js b/lib/javascripts/moment_locale/fa.js
index 68af5193fd0..de40e6f9374 100644
--- a/lib/javascripts/moment_locale/fa.js
+++ b/lib/javascripts/moment_locale/fa.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : Persian (fa)
-// author : Ebrahim Byagowi : https://github.com/ebraminio
+//! moment.js locale configuration
+//! locale : Persian (fa)
+//! author : Ebrahim Byagowi : https://github.com/ebraminio
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '۱',
'2': '۲',
@@ -35,7 +34,7 @@
'۰': '0'
};
- return moment.defineLocale('fa', {
+ var fa = moment.defineLocale('fa', {
months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
@@ -43,16 +42,21 @@
weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
- LLL : 'D MMMM YYYY LT',
- LLLL : 'dddd, D MMMM YYYY LT'
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
+ },
+ meridiemParse: /قبل از ظهر|بعد از ظهر/,
+ isPM: function (input) {
+ return /بعد از ظهر/.test(input);
},
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
- return "قبل از ظهر";
+ return 'قبل از ظهر';
} else {
- return "بعد از ظهر";
+ return 'بعد از ظهر';
}
},
calendar : {
@@ -88,10 +92,14 @@
return symbolMap[match];
}).replace(/,/g, '،');
},
+ ordinalParse: /\d{1,2}م/,
ordinal : '%dم',
week : {
dow : 6, // Saturday is the first day of the week.
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return fa;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/fi.js b/lib/javascripts/moment_locale/fi.js
index 2afc5e89ac6..4f9161bdd38 100644
--- a/lib/javascripts/moment_locale/fi.js
+++ b/lib/javascripts/moment_locale/fi.js
@@ -1,24 +1,22 @@
-// moment.js locale configuration
-// locale : finnish (fi)
-// author : Tarmo Aidantausta : https://github.com/bleadof
+//! moment.js locale configuration
+//! locale : finnish (fi)
+//! author : Tarmo Aidantausta : https://github.com/bleadof
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
numbersFuture = [
'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
numbersPast[7], numbersPast[8], numbersPast[9]
];
-
function translate(number, withoutSuffix, key, isFuture) {
- var result = "";
+ var result = '';
switch (key) {
case 's':
return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
@@ -48,30 +46,30 @@
result = isFuture ? 'vuoden' : 'vuotta';
break;
}
- result = verbalNumber(number, isFuture) + " " + result;
+ result = verbalNumber(number, isFuture) + ' ' + result;
return result;
}
-
function verbalNumber(number, isFuture) {
return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
}
- return moment.defineLocale('fi', {
- months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),
- monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),
- weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),
- weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"),
- weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"),
+ var fi = moment.defineLocale('fi', {
+ months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
+ monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
+ weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
+ weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
+ weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
longDateFormat : {
- LT : "HH.mm",
- L : "DD.MM.YYYY",
- LL : "Do MMMM[ta] YYYY",
- LLL : "Do MMMM[ta] YYYY, [klo] LT",
- LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT",
- l : "D.M.YYYY",
- ll : "Do MMM YYYY",
- lll : "Do MMM YYYY, [klo] LT",
- llll : "ddd, Do MMM YYYY, [klo] LT"
+ LT : 'HH.mm',
+ LTS : 'HH.mm.ss',
+ L : 'DD.MM.YYYY',
+ LL : 'Do MMMM[ta] YYYY',
+ LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
+ LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
+ l : 'D.M.YYYY',
+ ll : 'Do MMM YYYY',
+ lll : 'Do MMM YYYY, [klo] HH.mm',
+ llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
},
calendar : {
sameDay : '[tänään] [klo] LT',
@@ -82,8 +80,8 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s päästä",
- past : "%s sitten",
+ future : '%s päästä',
+ past : '%s sitten',
s : translate,
m : translate,
mm : translate,
@@ -96,10 +94,14 @@
y : translate,
yy : translate
},
- ordinal : "%d.",
+ ordinalParse: /\d{1,2}\./,
+ ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return fi;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/fo.js b/lib/javascripts/moment_locale/fo.js
index cdc9eda1647..460b6cd81c0 100644
--- a/lib/javascripts/moment_locale/fo.js
+++ b/lib/javascripts/moment_locale/fo.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : faroese (fo)
-// author : Ragnar Johannesen : https://github.com/ragnar123
+//! moment.js locale configuration
+//! locale : faroese (fo)
+//! author : Ragnar Johannesen : https://github.com/ragnar123
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('fo', {
- months : "januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),
- monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
- weekdays : "sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),
- weekdaysShort : "sun_mán_týs_mik_hós_frí_ley".split("_"),
- weekdaysMin : "su_má_tý_mi_hó_fr_le".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var fo = moment.defineLocale('fo', {
+ months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
+ monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
+ weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
+ weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
+ weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D. MMMM, YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D. MMMM, YYYY HH:mm'
},
calendar : {
sameDay : '[Í dag kl.] LT',
@@ -33,24 +33,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "um %s",
- past : "%s síðani",
- s : "fá sekund",
- m : "ein minutt",
- mm : "%d minuttir",
- h : "ein tími",
- hh : "%d tímar",
- d : "ein dagur",
- dd : "%d dagar",
- M : "ein mánaði",
- MM : "%d mánaðir",
- y : "eitt ár",
- yy : "%d ár"
+ future : 'um %s',
+ past : '%s síðani',
+ s : 'fá sekund',
+ m : 'ein minutt',
+ mm : '%d minuttir',
+ h : 'ein tími',
+ hh : '%d tímar',
+ d : 'ein dagur',
+ dd : '%d dagar',
+ M : 'ein mánaði',
+ MM : '%d mánaðir',
+ y : 'eitt ár',
+ yy : '%d ár'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return fo;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/fr-ca.js b/lib/javascripts/moment_locale/fr-ca.js
index 714b11b2bfe..f15ec8dc079 100644
--- a/lib/javascripts/moment_locale/fr-ca.js
+++ b/lib/javascripts/moment_locale/fr-ca.js
@@ -1,31 +1,31 @@
-// moment.js locale configuration
-// locale : canadian french (fr-ca)
-// author : Jonathan Abourbih : https://github.com/jonbca
+//! moment.js locale configuration
+//! locale : canadian french (fr-ca)
+//! author : Jonathan Abourbih : https://github.com/jonbca
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('fr-ca', {
- months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
- monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
- weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
- weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
- weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var fr_ca = moment.defineLocale('fr-ca', {
+ months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
+ monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
+ weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+ weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+ weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'YYYY-MM-DD',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
- sameDay: "[Aujourd'hui à] LT",
+ sameDay: '[Aujourd\'hui à] LT',
nextDay: '[Demain à] LT',
nextWeek: 'dddd [à] LT',
lastDay: '[Hier à] LT',
@@ -33,22 +33,26 @@
sameElse: 'L'
},
relativeTime : {
- future : "dans %s",
- past : "il y a %s",
- s : "quelques secondes",
- m : "une minute",
- mm : "%d minutes",
- h : "une heure",
- hh : "%d heures",
- d : "un jour",
- dd : "%d jours",
- M : "un mois",
- MM : "%d mois",
- y : "un an",
- yy : "%d ans"
+ future : 'dans %s',
+ past : 'il y a %s',
+ s : 'quelques secondes',
+ m : 'une minute',
+ mm : '%d minutes',
+ h : 'une heure',
+ hh : '%d heures',
+ d : 'un jour',
+ dd : '%d jours',
+ M : 'un mois',
+ MM : '%d mois',
+ y : 'un an',
+ yy : '%d ans'
},
+ ordinalParse: /\d{1,2}(er|e)/,
ordinal : function (number) {
- return number + (number === 1 ? 'er' : '');
+ return number + (number === 1 ? 'er' : 'e');
}
});
-}));
+
+ return fr_ca;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/fr-ch.js b/lib/javascripts/moment_locale/fr-ch.js
new file mode 100644
index 00000000000..9503d80f7d7
--- /dev/null
+++ b/lib/javascripts/moment_locale/fr-ch.js
@@ -0,0 +1,62 @@
+//! moment.js locale configuration
+//! locale : swiss french (fr)
+//! author : Gaspard Bucher : https://github.com/gaspard
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var fr_ch = moment.defineLocale('fr-ch', {
+ months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
+ monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
+ weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+ weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+ weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
+ },
+ calendar : {
+ sameDay: '[Aujourd\'hui à] LT',
+ nextDay: '[Demain à] LT',
+ nextWeek: 'dddd [à] LT',
+ lastDay: '[Hier à] LT',
+ lastWeek: 'dddd [dernier à] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : 'dans %s',
+ past : 'il y a %s',
+ s : 'quelques secondes',
+ m : 'une minute',
+ mm : '%d minutes',
+ h : 'une heure',
+ hh : '%d heures',
+ d : 'un jour',
+ dd : '%d jours',
+ M : 'un mois',
+ MM : '%d mois',
+ y : 'un an',
+ yy : '%d ans'
+ },
+ ordinalParse: /\d{1,2}(er|e)/,
+ ordinal : function (number) {
+ return number + (number === 1 ? 'er' : 'e');
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ return fr_ch;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/fr.js b/lib/javascripts/moment_locale/fr.js
index 106ab11bee4..8ef95c9fb6e 100644
--- a/lib/javascripts/moment_locale/fr.js
+++ b/lib/javascripts/moment_locale/fr.js
@@ -1,31 +1,31 @@
-// moment.js locale configuration
-// locale : french (fr)
-// author : John Fischer : https://github.com/jfroffice
+//! moment.js locale configuration
+//! locale : french (fr)
+//! author : John Fischer : https://github.com/jfroffice
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('fr', {
- months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
- monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
- weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
- weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
- weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var fr = moment.defineLocale('fr', {
+ months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
+ monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
+ weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+ weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+ weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
- sameDay: "[Aujourd'hui à] LT",
+ sameDay: '[Aujourd\'hui à] LT',
nextDay: '[Demain à] LT',
nextWeek: 'dddd [à] LT',
lastDay: '[Hier à] LT',
@@ -33,20 +33,21 @@
sameElse: 'L'
},
relativeTime : {
- future : "dans %s",
- past : "il y a %s",
- s : "quelques secondes",
- m : "une minute",
- mm : "%d minutes",
- h : "une heure",
- hh : "%d heures",
- d : "un jour",
- dd : "%d jours",
- M : "un mois",
- MM : "%d mois",
- y : "un an",
- yy : "%d ans"
+ future : 'dans %s',
+ past : 'il y a %s',
+ s : 'quelques secondes',
+ m : 'une minute',
+ mm : '%d minutes',
+ h : 'une heure',
+ hh : '%d heures',
+ d : 'un jour',
+ dd : '%d jours',
+ M : 'un mois',
+ MM : '%d mois',
+ y : 'un an',
+ yy : '%d ans'
},
+ ordinalParse: /\d{1,2}(er|)/,
ordinal : function (number) {
return number + (number === 1 ? 'er' : '');
},
@@ -55,4 +56,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return fr;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/fy.js b/lib/javascripts/moment_locale/fy.js
new file mode 100644
index 00000000000..d1b709c122b
--- /dev/null
+++ b/lib/javascripts/moment_locale/fy.js
@@ -0,0 +1,71 @@
+//! moment.js locale configuration
+//! locale : frisian (fy)
+//! author : Robin van der Vliet : https://github.com/robin0van0der0v
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
+ monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
+
+ var fy = moment.defineLocale('fy', {
+ months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
+ monthsShort : function (m, format) {
+ if (/-MMM-/.test(format)) {
+ return monthsShortWithoutDots[m.month()];
+ } else {
+ return monthsShortWithDots[m.month()];
+ }
+ },
+ weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
+ weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
+ weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD-MM-YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
+ },
+ calendar : {
+ sameDay: '[hjoed om] LT',
+ nextDay: '[moarn om] LT',
+ nextWeek: 'dddd [om] LT',
+ lastDay: '[juster om] LT',
+ lastWeek: '[ôfrûne] dddd [om] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : 'oer %s',
+ past : '%s lyn',
+ s : 'in pear sekonden',
+ m : 'ien minút',
+ mm : '%d minuten',
+ h : 'ien oere',
+ hh : '%d oeren',
+ d : 'ien dei',
+ dd : '%d dagen',
+ M : 'ien moanne',
+ MM : '%d moannen',
+ y : 'ien jier',
+ yy : '%d jierren'
+ },
+ ordinalParse: /\d{1,2}(ste|de)/,
+ ordinal : function (number) {
+ return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ return fy;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/gd.js b/lib/javascripts/moment_locale/gd.js
new file mode 100644
index 00000000000..578e5674b9e
--- /dev/null
+++ b/lib/javascripts/moment_locale/gd.js
@@ -0,0 +1,76 @@
+//! moment.js locale configuration
+//! locale : great britain scottish gealic (gd)
+//! author : Jon Ashdown : https://github.com/jonashdown
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var months = [
+ 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'
+ ];
+
+ var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
+
+ var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
+
+ var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
+
+ var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
+
+ var gd = moment.defineLocale('gd', {
+ months : months,
+ monthsShort : monthsShort,
+ monthsParseExact : true,
+ weekdays : weekdays,
+ weekdaysShort : weekdaysShort,
+ weekdaysMin : weekdaysMin,
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
+ },
+ calendar : {
+ sameDay : '[An-diugh aig] LT',
+ nextDay : '[A-màireach aig] LT',
+ nextWeek : 'dddd [aig] LT',
+ lastDay : '[An-dè aig] LT',
+ lastWeek : 'dddd [seo chaidh] [aig] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'ann an %s',
+ past : 'bho chionn %s',
+ s : 'beagan diogan',
+ m : 'mionaid',
+ mm : '%d mionaidean',
+ h : 'uair',
+ hh : '%d uairean',
+ d : 'latha',
+ dd : '%d latha',
+ M : 'mìos',
+ MM : '%d mìosan',
+ y : 'bliadhna',
+ yy : '%d bliadhna'
+ },
+ ordinalParse : /\d{1,2}(d|na|mh)/,
+ ordinal : function (number) {
+ var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
+ return number + output;
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ return gd;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/gl.js b/lib/javascripts/moment_locale/gl.js
index e82065f33dc..ef8e7043b89 100644
--- a/lib/javascripts/moment_locale/gl.js
+++ b/lib/javascripts/moment_locale/gl.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : galician (gl)
-// author : Juan G. Hurtado : https://github.com/juanghurtado
+//! moment.js locale configuration
+//! locale : galician (gl)
+//! author : Juan G. Hurtado : https://github.com/juanghurtado
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('gl', {
- months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),
- monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),
- weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),
- weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),
- weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var gl = moment.defineLocale('gl', {
+ months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'),
+ monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'),
+ weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'),
+ weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'),
+ weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY H:mm',
+ LLLL : 'dddd D MMMM YYYY H:mm'
},
calendar : {
sameDay : function () {
@@ -44,28 +44,32 @@
},
relativeTime : {
future : function (str) {
- if (str === "uns segundos") {
- return "nuns segundos";
+ if (str === 'uns segundos') {
+ return 'nuns segundos';
}
- return "en " + str;
+ return 'en ' + str;
},
- past : "hai %s",
- s : "uns segundos",
- m : "un minuto",
- mm : "%d minutos",
- h : "unha hora",
- hh : "%d horas",
- d : "un día",
- dd : "%d días",
- M : "un mes",
- MM : "%d meses",
- y : "un ano",
- yy : "%d anos"
+ past : 'hai %s',
+ s : 'uns segundos',
+ m : 'un minuto',
+ mm : '%d minutos',
+ h : 'unha hora',
+ hh : '%d horas',
+ d : 'un día',
+ dd : '%d días',
+ M : 'un mes',
+ MM : '%d meses',
+ y : 'un ano',
+ yy : '%d anos'
},
+ ordinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return gl;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/he.js b/lib/javascripts/moment_locale/he.js
index 0af4e0988d5..6a259be8b60 100644
--- a/lib/javascripts/moment_locale/he.js
+++ b/lib/javascripts/moment_locale/he.js
@@ -1,34 +1,34 @@
-// moment.js locale configuration
-// locale : Hebrew (he)
-// author : Tomer Cohen : https://github.com/tomer
-// author : Moshe Simantov : https://github.com/DevelopmentIL
-// author : Tal Ater : https://github.com/TalAter
+//! moment.js locale configuration
+//! locale : Hebrew (he)
+//! author : Tomer Cohen : https://github.com/tomer
+//! author : Moshe Simantov : https://github.com/DevelopmentIL
+//! author : Tal Ater : https://github.com/TalAter
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('he', {
- months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),
- monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),
- weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),
- weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),
- weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var he = moment.defineLocale('he', {
+ months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
+ monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
+ weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
+ weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
+ weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D [ב]MMMM YYYY",
- LLL : "D [ב]MMMM YYYY LT",
- LLLL : "dddd, D [ב]MMMM YYYY LT",
- l : "D/M/YYYY",
- ll : "D MMM YYYY",
- lll : "D MMM YYYY LT",
- llll : "ddd, D MMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D [ב]MMMM YYYY',
+ LLL : 'D [ב]MMMM YYYY HH:mm',
+ LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
+ l : 'D/M/YYYY',
+ ll : 'D MMM YYYY',
+ lll : 'D MMM YYYY HH:mm',
+ llll : 'ddd, D MMM YYYY HH:mm'
},
calendar : {
sameDay : '[היום ב־]LT',
@@ -39,39 +39,44 @@
sameElse : 'L'
},
relativeTime : {
- future : "בעוד %s",
- past : "לפני %s",
- s : "מספר שניות",
- m : "דקה",
- mm : "%d דקות",
- h : "שעה",
+ future : 'בעוד %s',
+ past : 'לפני %s',
+ s : 'מספר שניות',
+ m : 'דקה',
+ mm : '%d דקות',
+ h : 'שעה',
hh : function (number) {
if (number === 2) {
- return "שעתיים";
+ return 'שעתיים';
}
- return number + " שעות";
+ return number + ' שעות';
},
- d : "יום",
+ d : 'יום',
dd : function (number) {
if (number === 2) {
- return "יומיים";
+ return 'יומיים';
}
- return number + " ימים";
+ return number + ' ימים';
},
- M : "חודש",
+ M : 'חודש',
MM : function (number) {
if (number === 2) {
- return "חודשיים";
+ return 'חודשיים';
}
- return number + " חודשים";
+ return number + ' חודשים';
},
- y : "שנה",
+ y : 'שנה',
yy : function (number) {
if (number === 2) {
- return "שנתיים";
+ return 'שנתיים';
+ } else if (number % 10 === 0 && number !== 10) {
+ return number + ' שנה';
}
- return number + " שנים";
+ return number + ' שנים';
}
}
});
-}));
+
+ return he;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/hi.js b/lib/javascripts/moment_locale/hi.js
index 6dd7098c27d..0542ef791e2 100644
--- a/lib/javascripts/moment_locale/hi.js
+++ b/lib/javascripts/moment_locale/hi.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : hindi (hi)
-// author : Mayank Singhal : https://github.com/mayanksinghal
+//! moment.js locale configuration
+//! locale : hindi (hi)
+//! author : Mayank Singhal : https://github.com/mayanksinghal
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '१',
'2': '२',
@@ -36,18 +35,19 @@
'०': '0'
};
- return moment.defineLocale('hi', {
- months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"),
- monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"),
- weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"),
- weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"),
- weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"),
+ var hi = moment.defineLocale('hi', {
+ months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
+ monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
+ weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
+ weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
+ weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
longDateFormat : {
- LT : "A h:mm बजे",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
+ LT : 'A h:mm बजे',
+ LTS : 'A h:mm:ss बजे',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY, A h:mm बजे',
+ LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
},
calendar : {
sameDay : '[आज] LT',
@@ -58,19 +58,19 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s में",
- past : "%s पहले",
- s : "कुछ ही क्षण",
- m : "एक मिनट",
- mm : "%d मिनट",
- h : "एक घंटा",
- hh : "%d घंटे",
- d : "एक दिन",
- dd : "%d दिन",
- M : "एक महीने",
- MM : "%d महीने",
- y : "एक वर्ष",
- yy : "%d वर्ष"
+ future : '%s में',
+ past : '%s पहले',
+ s : 'कुछ ही क्षण',
+ m : 'एक मिनट',
+ mm : '%d मिनट',
+ h : 'एक घंटा',
+ hh : '%d घंटे',
+ d : 'एक दिन',
+ dd : '%d दिन',
+ M : 'एक महीने',
+ MM : '%d महीने',
+ y : 'एक वर्ष',
+ yy : '%d वर्ष'
},
preparse: function (string) {
return string.replace(/[१२३४५६७८९०]/g, function (match) {
@@ -84,17 +84,32 @@
},
// Hindi notation for meridiems are quite fuzzy in practice. While there exists
// a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
+ meridiemParse: /रात|सुबह|दोपहर|शाम/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'रात') {
+ return hour < 4 ? hour : hour + 12;
+ } else if (meridiem === 'सुबह') {
+ return hour;
+ } else if (meridiem === 'दोपहर') {
+ return hour >= 10 ? hour : hour + 12;
+ } else if (meridiem === 'शाम') {
+ return hour + 12;
+ }
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
- return "रात";
+ return 'रात';
} else if (hour < 10) {
- return "सुबह";
+ return 'सुबह';
} else if (hour < 17) {
- return "दोपहर";
+ return 'दोपहर';
} else if (hour < 20) {
- return "शाम";
+ return 'शाम';
} else {
- return "रात";
+ return 'रात';
}
},
week : {
@@ -102,4 +117,7 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return hi;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/hr.js b/lib/javascripts/moment_locale/hr.js
index 20fe8c1d662..26923838c94 100644
--- a/lib/javascripts/moment_locale/hr.js
+++ b/lib/javascripts/moment_locale/hr.js
@@ -1,20 +1,17 @@
-// moment.js locale configuration
-// locale : hrvatski (hr)
-// author : Bojan Marković : https://github.com/bmarkovic
+//! moment.js locale configuration
+//! locale : hrvatski (hr)
+//! author : Bojan Marković : https://github.com/bmarkovic
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
-// based on (sl) translation by Robert Sedovšek
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function translate(number, withoutSuffix, key) {
- var result = number + " ";
+ var result = number + ' ';
switch (key) {
case 'm':
return withoutSuffix ? 'jedna minuta' : 'jedne minute';
@@ -66,23 +63,26 @@
}
}
- return moment.defineLocale('hr', {
- months : "sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),
- monthsShort : "sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),
- weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
- weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"),
- weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"),
+ var hr = moment.defineLocale('hr', {
+ months : {
+ format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
+ standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
+ },
+ monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
+ weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
+ weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+ weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD. MM. YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD. MM. YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY H:mm',
+ LLLL : 'dddd, D. MMMM YYYY H:mm'
},
calendar : {
sameDay : '[danas u] LT',
nextDay : '[sutra u] LT',
-
nextWeek : function () {
switch (this.day()) {
case 0:
@@ -116,24 +116,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "za %s",
- past : "prije %s",
- s : "par sekundi",
+ future : 'za %s',
+ past : 'prije %s',
+ s : 'par sekundi',
m : translate,
mm : translate,
h : translate,
hh : translate,
- d : "dan",
+ d : 'dan',
dd : translate,
- M : "mjesec",
+ M : 'mjesec',
MM : translate,
- y : "godinu",
+ y : 'godinu',
yy : translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return hr;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/hu.js b/lib/javascripts/moment_locale/hu.js
index 910f0868b5a..2708672742a 100644
--- a/lib/javascripts/moment_locale/hu.js
+++ b/lib/javascripts/moment_locale/hu.js
@@ -1,22 +1,19 @@
-// moment.js locale configuration
-// locale : hungarian (hu)
-// author : Adam Brunner : https://github.com/adambrunner
+//! moment.js locale configuration
+//! locale : hungarian (hu)
+//! author : Adam Brunner : https://github.com/adambrunner
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
-
function translate(number, withoutSuffix, key, isFuture) {
var num = number,
suffix;
-
switch (key) {
case 's':
return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
@@ -41,26 +38,29 @@
case 'yy':
return num + (isFuture || withoutSuffix ? ' év' : ' éve');
}
-
return '';
}
-
function week(isFuture) {
return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
}
- return moment.defineLocale('hu', {
- months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),
- monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),
- weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),
- weekdaysShort : "vas_hét_kedd_sze_csüt_pén_szo".split("_"),
- weekdaysMin : "v_h_k_sze_cs_p_szo".split("_"),
+ var hu = moment.defineLocale('hu', {
+ months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
+ monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
+ weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
+ weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
+ weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "YYYY.MM.DD.",
- LL : "YYYY. MMMM D.",
- LLL : "YYYY. MMMM D., LT",
- LLLL : "YYYY. MMMM D., dddd LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'YYYY.MM.DD.',
+ LL : 'YYYY. MMMM D.',
+ LLL : 'YYYY. MMMM D. H:mm',
+ LLLL : 'YYYY. MMMM D., dddd H:mm'
+ },
+ meridiemParse: /de|du/i,
+ isPM: function (input) {
+ return input.charAt(1).toLowerCase() === 'u';
},
meridiem : function (hours, minutes, isLower) {
if (hours < 12) {
@@ -82,8 +82,8 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s múlva",
- past : "%s",
+ future : '%s múlva',
+ past : '%s',
s : translate,
m : translate,
mm : translate,
@@ -96,10 +96,14 @@
y : translate,
yy : translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return hu;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/hy-am.js b/lib/javascripts/moment_locale/hy-am.js
index b6984a2794a..7350bfbe457 100644
--- a/lib/javascripts/moment_locale/hy-am.js
+++ b/lib/javascripts/moment_locale/hy-am.js
@@ -1,53 +1,31 @@
-// moment.js locale configuration
-// locale : Armenian (hy-am)
-// author : Armendarabyan : https://github.com/armendarabyan
+//! moment.js locale configuration
+//! locale : Armenian (hy-am)
+//! author : Armendarabyan : https://github.com/armendarabyan
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- function monthsCaseReplace(m, format) {
- var months = {
- 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'),
- 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_')
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var hy_am = moment.defineLocale('hy-am', {
+ months : {
+ format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
+ standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
},
-
- nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return months[nounCase][m.month()];
- }
-
- function monthsShortCaseReplace(m, format) {
- var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_');
-
- return monthsShort[m.month()];
- }
-
- function weekdaysCaseReplace(m, format) {
- var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_');
-
- return weekdays[m.day()];
- }
-
- return moment.defineLocale('hy-am', {
- months : monthsCaseReplace,
- monthsShort : monthsShortCaseReplace,
- weekdays : weekdaysCaseReplace,
- weekdaysShort : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),
- weekdaysMin : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),
+ monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
+ weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
+ weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
+ weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY թ.",
- LLL : "D MMMM YYYY թ., LT",
- LLLL : "dddd, D MMMM YYYY թ., LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY թ.',
+ LLL : 'D MMMM YYYY թ., HH:mm',
+ LLLL : 'dddd, D MMMM YYYY թ., HH:mm'
},
calendar : {
sameDay: '[այսօր] LT',
@@ -62,33 +40,36 @@
sameElse: 'L'
},
relativeTime : {
- future : "%s հետո",
- past : "%s առաջ",
- s : "մի քանի վայրկյան",
- m : "րոպե",
- mm : "%d րոպե",
- h : "ժամ",
- hh : "%d ժամ",
- d : "օր",
- dd : "%d օր",
- M : "ամիս",
- MM : "%d ամիս",
- y : "տարի",
- yy : "%d տարի"
+ future : '%s հետո',
+ past : '%s առաջ',
+ s : 'մի քանի վայրկյան',
+ m : 'րոպե',
+ mm : '%d րոպե',
+ h : 'ժամ',
+ hh : '%d ժամ',
+ d : 'օր',
+ dd : '%d օր',
+ M : 'ամիս',
+ MM : '%d ամիս',
+ y : 'տարի',
+ yy : '%d տարի'
+ },
+ meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
+ isPM: function (input) {
+ return /^(ցերեկվա|երեկոյան)$/.test(input);
},
-
meridiem : function (hour) {
if (hour < 4) {
- return "գիշերվա";
+ return 'գիշերվա';
} else if (hour < 12) {
- return "առավոտվա";
+ return 'առավոտվա';
} else if (hour < 17) {
- return "ցերեկվա";
+ return 'ցերեկվա';
} else {
- return "երեկոյան";
+ return 'երեկոյան';
}
},
-
+ ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
ordinal: function (number, period) {
switch (period) {
case 'DDD':
@@ -103,10 +84,12 @@
return number;
}
},
-
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return hy_am;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/id.js b/lib/javascripts/moment_locale/id.js
index 6043f30a239..09461a5d5a6 100644
--- a/lib/javascripts/moment_locale/id.js
+++ b/lib/javascripts/moment_locale/id.js
@@ -1,29 +1,42 @@
-// moment.js locale configuration
-// locale : Bahasa Indonesia (id)
-// author : Mohammad Satrio Utomo : https://github.com/tyok
-// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
+//! moment.js locale configuration
+//! locale : Bahasa Indonesia (id)
+//! author : Mohammad Satrio Utomo : https://github.com/tyok
+//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('id', {
- months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),
- weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),
- weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),
- weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var id = moment.defineLocale('id', {
+ months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
+ weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
+ weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
+ weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
longDateFormat : {
- LT : "HH.mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY [pukul] LT",
- LLLL : "dddd, D MMMM YYYY [pukul] LT"
+ LT : 'HH.mm',
+ LTS : 'HH.mm.ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY [pukul] HH.mm',
+ LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
+ },
+ meridiemParse: /pagi|siang|sore|malam/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'pagi') {
+ return hour;
+ } else if (meridiem === 'siang') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === 'sore' || meridiem === 'malam') {
+ return hour + 12;
+ }
},
meridiem : function (hours, minutes, isLower) {
if (hours < 11) {
@@ -45,23 +58,26 @@
sameElse : 'L'
},
relativeTime : {
- future : "dalam %s",
- past : "%s yang lalu",
- s : "beberapa detik",
- m : "semenit",
- mm : "%d menit",
- h : "sejam",
- hh : "%d jam",
- d : "sehari",
- dd : "%d hari",
- M : "sebulan",
- MM : "%d bulan",
- y : "setahun",
- yy : "%d tahun"
+ future : 'dalam %s',
+ past : '%s yang lalu',
+ s : 'beberapa detik',
+ m : 'semenit',
+ mm : '%d menit',
+ h : 'sejam',
+ hh : '%d jam',
+ d : 'sehari',
+ dd : '%d hari',
+ M : 'sebulan',
+ MM : '%d bulan',
+ y : 'setahun',
+ yy : '%d tahun'
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return id;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/is.js b/lib/javascripts/moment_locale/is.js
index ed2240644f9..f1ed257a474 100644
--- a/lib/javascripts/moment_locale/is.js
+++ b/lib/javascripts/moment_locale/is.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : icelandic (is)
-// author : Hinrik Örn Sigurðsson : https://github.com/hinrik
+//! moment.js locale configuration
+//! locale : icelandic (is)
+//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function plural(n) {
if (n % 100 === 11) {
return true;
@@ -19,9 +18,8 @@
}
return true;
}
-
function translate(number, withoutSuffix, key, isFuture) {
- var result = number + " ";
+ var result = number + ' ';
switch (key) {
case 's':
return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
@@ -79,18 +77,19 @@
}
}
- return moment.defineLocale('is', {
- months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),
- monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),
- weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),
- weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"),
- weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"),
+ var is = moment.defineLocale('is', {
+ months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
+ monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
+ weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
+ weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
+ weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY [kl.] LT",
- LLLL : "dddd, D. MMMM YYYY [kl.] LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY [kl.] H:mm',
+ LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
},
calendar : {
sameDay : '[í dag kl.] LT',
@@ -101,12 +100,12 @@
sameElse : 'L'
},
relativeTime : {
- future : "eftir %s",
- past : "fyrir %s síðan",
+ future : 'eftir %s',
+ past : 'fyrir %s síðan',
s : translate,
m : translate,
mm : translate,
- h : "klukkustund",
+ h : 'klukkustund',
hh : translate,
d : translate,
dd : translate,
@@ -115,10 +114,14 @@
y : translate,
yy : translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return is;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/it.js b/lib/javascripts/moment_locale/it.js
index a151ccc62ae..e8b2c950c7f 100644
--- a/lib/javascripts/moment_locale/it.js
+++ b/lib/javascripts/moment_locale/it.js
@@ -1,59 +1,70 @@
-// moment.js locale configuration
-// locale : italian (it)
-// author : Lorenzo : https://github.com/aliem
-// author: Mattia Larentis: https://github.com/nostalgiaz
+//! moment.js locale configuration
+//! locale : italian (it)
+//! author : Lorenzo : https://github.com/aliem
+//! author: Mattia Larentis: https://github.com/nostalgiaz
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('it', {
- months : "gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),
- monthsShort : "gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),
- weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),
- weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),
- weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var it = moment.defineLocale('it', {
+ months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
+ monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
+ weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
+ weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),
+ weekdaysMin : 'Do_Lu_Ma_Me_Gi_Ve_Sa'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[Oggi alle] LT',
nextDay: '[Domani alle] LT',
nextWeek: 'dddd [alle] LT',
lastDay: '[Ieri alle] LT',
- lastWeek: '[lo scorso] dddd [alle] LT',
+ lastWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[la scorsa] dddd [alle] LT';
+ default:
+ return '[lo scorso] dddd [alle] LT';
+ }
+ },
sameElse: 'L'
},
relativeTime : {
future : function (s) {
- return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s;
+ return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
},
- past : "%s fa",
- s : "alcuni secondi",
- m : "un minuto",
- mm : "%d minuti",
- h : "un'ora",
- hh : "%d ore",
- d : "un giorno",
- dd : "%d giorni",
- M : "un mese",
- MM : "%d mesi",
- y : "un anno",
- yy : "%d anni"
+ past : '%s fa',
+ s : 'alcuni secondi',
+ m : 'un minuto',
+ mm : '%d minuti',
+ h : 'un\'ora',
+ hh : '%d ore',
+ d : 'un giorno',
+ dd : '%d giorni',
+ M : 'un mese',
+ MM : '%d mesi',
+ y : 'un anno',
+ yy : '%d anni'
},
+ ordinalParse : /\d{1,2}º/,
ordinal: '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return it;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ja.js b/lib/javascripts/moment_locale/ja.js
index 34c4b890d8e..6c6e85930cf 100644
--- a/lib/javascripts/moment_locale/ja.js
+++ b/lib/javascripts/moment_locale/ja.js
@@ -1,34 +1,38 @@
-// moment.js locale configuration
-// locale : japanese (ja)
-// author : LI Long : https://github.com/baryon
+//! moment.js locale configuration
+//! locale : japanese (ja)
+//! author : LI Long : https://github.com/baryon
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('ja', {
- months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),
- weekdaysShort : "日_月_火_水_木_金_土".split("_"),
- weekdaysMin : "日_月_火_水_木_金_土".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ja = moment.defineLocale('ja', {
+ months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
+ weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
+ weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
longDateFormat : {
- LT : "Ah時m分",
- L : "YYYY/MM/DD",
- LL : "YYYY年M月D日",
- LLL : "YYYY年M月D日LT",
- LLLL : "YYYY年M月D日LT dddd"
+ LT : 'Ah時m分',
+ LTS : 'Ah時m分s秒',
+ L : 'YYYY/MM/DD',
+ LL : 'YYYY年M月D日',
+ LLL : 'YYYY年M月D日Ah時m分',
+ LLLL : 'YYYY年M月D日Ah時m分 dddd'
+ },
+ meridiemParse: /午前|午後/i,
+ isPM : function (input) {
+ return input === '午後';
},
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
- return "午前";
+ return '午前';
} else {
- return "午後";
+ return '午後';
}
},
calendar : {
@@ -40,19 +44,22 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s後",
- past : "%s前",
- s : "数秒",
- m : "1分",
- mm : "%d分",
- h : "1時間",
- hh : "%d時間",
- d : "1日",
- dd : "%d日",
- M : "1ヶ月",
- MM : "%dヶ月",
- y : "1年",
- yy : "%d年"
+ future : '%s後',
+ past : '%s前',
+ s : '数秒',
+ m : '1分',
+ mm : '%d分',
+ h : '1時間',
+ hh : '%d時間',
+ d : '1日',
+ dd : '%d日',
+ M : '1ヶ月',
+ MM : '%dヶ月',
+ y : '1年',
+ yy : '%d年'
}
});
-}));
+
+ return ja;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/jv.js b/lib/javascripts/moment_locale/jv.js
new file mode 100644
index 00000000000..d3b85a4c06d
--- /dev/null
+++ b/lib/javascripts/moment_locale/jv.js
@@ -0,0 +1,83 @@
+//! moment.js locale configuration
+//! locale : Boso Jowo (jv)
+//! author : Rony Lantip : https://github.com/lantip
+//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var jv = moment.defineLocale('jv', {
+ months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
+ weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
+ weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
+ weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
+ longDateFormat : {
+ LT : 'HH.mm',
+ LTS : 'HH.mm.ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY [pukul] HH.mm',
+ LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
+ },
+ meridiemParse: /enjing|siyang|sonten|ndalu/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'enjing') {
+ return hour;
+ } else if (meridiem === 'siyang') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
+ return hour + 12;
+ }
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours < 11) {
+ return 'enjing';
+ } else if (hours < 15) {
+ return 'siyang';
+ } else if (hours < 19) {
+ return 'sonten';
+ } else {
+ return 'ndalu';
+ }
+ },
+ calendar : {
+ sameDay : '[Dinten puniko pukul] LT',
+ nextDay : '[Mbenjang pukul] LT',
+ nextWeek : 'dddd [pukul] LT',
+ lastDay : '[Kala wingi pukul] LT',
+ lastWeek : 'dddd [kepengker pukul] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'wonten ing %s',
+ past : '%s ingkang kepengker',
+ s : 'sawetawis detik',
+ m : 'setunggal menit',
+ mm : '%d menit',
+ h : 'setunggal jam',
+ hh : '%d jam',
+ d : 'sedinten',
+ dd : '%d dinten',
+ M : 'sewulan',
+ MM : '%d wulan',
+ y : 'setaun',
+ yy : '%d taun'
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ return jv;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ka.js b/lib/javascripts/moment_locale/ka.js
index 31345243644..f052c3ac332 100644
--- a/lib/javascripts/moment_locale/ka.js
+++ b/lib/javascripts/moment_locale/ka.js
@@ -1,54 +1,35 @@
-// moment.js locale configuration
-// locale : Georgian (ka)
-// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
+//! moment.js locale configuration
+//! locale : Georgian (ka)
+//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- function monthsCaseReplace(m, format) {
- var months = {
- 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
- 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ka = moment.defineLocale('ka', {
+ months : {
+ standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
+ format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
},
-
- nounCase = (/D[oD] *MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return months[nounCase][m.month()];
- }
-
- function weekdaysCaseReplace(m, format) {
- var weekdays = {
- 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
- 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_')
+ monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
+ weekdays : {
+ standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
+ format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
+ isFormat: /(წინა|შემდეგ)/
},
-
- nounCase = (/(წინა|შემდეგ)/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return weekdays[nounCase][m.day()];
- }
-
- return moment.defineLocale('ka', {
- months : monthsCaseReplace,
- monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),
- weekdays : weekdaysCaseReplace,
- weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),
- weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),
+ weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
+ weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
longDateFormat : {
- LT : "h:mm A",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY h:mm A',
+ LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendar : {
sameDay : '[დღეს] LT[-ზე]',
@@ -61,47 +42,48 @@
relativeTime : {
future : function (s) {
return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
- s.replace(/ი$/, "ში") :
- s + "ში";
+ s.replace(/ი$/, 'ში') :
+ s + 'ში';
},
past : function (s) {
if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
- return s.replace(/(ი|ე)$/, "ის წინ");
+ return s.replace(/(ი|ე)$/, 'ის წინ');
}
if ((/წელი/).test(s)) {
- return s.replace(/წელი$/, "წლის წინ");
+ return s.replace(/წელი$/, 'წლის წინ');
}
},
- s : "რამდენიმე წამი",
- m : "წუთი",
- mm : "%d წუთი",
- h : "საათი",
- hh : "%d საათი",
- d : "დღე",
- dd : "%d დღე",
- M : "თვე",
- MM : "%d თვე",
- y : "წელი",
- yy : "%d წელი"
+ s : 'რამდენიმე წამი',
+ m : 'წუთი',
+ mm : '%d წუთი',
+ h : 'საათი',
+ hh : '%d საათი',
+ d : 'დღე',
+ dd : '%d დღე',
+ M : 'თვე',
+ MM : '%d თვე',
+ y : 'წელი',
+ yy : '%d წელი'
},
+ ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
ordinal : function (number) {
if (number === 0) {
return number;
}
-
if (number === 1) {
- return number + "-ლი";
+ return number + '-ლი';
}
-
if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
- return "მე-" + number;
+ return 'მე-' + number;
}
-
- return number + "-ე";
+ return number + '-ე';
},
week : {
dow : 1,
doy : 7
}
});
-}));
+
+ return ka;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/kk.js b/lib/javascripts/moment_locale/kk.js
new file mode 100644
index 00000000000..81acd0bf620
--- /dev/null
+++ b/lib/javascripts/moment_locale/kk.js
@@ -0,0 +1,87 @@
+//! moment.js locale configuration
+//! locale : kazakh (kk)
+//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var suffixes = {
+ 0: '-ші',
+ 1: '-ші',
+ 2: '-ші',
+ 3: '-ші',
+ 4: '-ші',
+ 5: '-ші',
+ 6: '-шы',
+ 7: '-ші',
+ 8: '-ші',
+ 9: '-шы',
+ 10: '-шы',
+ 20: '-шы',
+ 30: '-шы',
+ 40: '-шы',
+ 50: '-ші',
+ 60: '-шы',
+ 70: '-ші',
+ 80: '-ші',
+ 90: '-шы',
+ 100: '-ші'
+ };
+
+ var kk = moment.defineLocale('kk', {
+ months : 'Қаңтар_Ақпан_Наурыз_Сәуір_Мамыр_Маусым_Шілде_Тамыз_Қыркүйек_Қазан_Қараша_Желтоқсан'.split('_'),
+ monthsShort : 'Қаң_Ақп_Нау_Сәу_Мам_Мау_Шіл_Там_Қыр_Қаз_Қар_Жел'.split('_'),
+ weekdays : 'Жексенбі_Дүйсенбі_Сейсенбі_Сәрсенбі_Бейсенбі_Жұма_Сенбі'.split('_'),
+ weekdaysShort : 'Жек_Дүй_Сей_Сәр_Бей_Жұм_Сен'.split('_'),
+ weekdaysMin : 'Жк_Дй_Сй_Ср_Бй_Жм_Сн'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
+ },
+ calendar : {
+ sameDay : '[Бүгін сағат] LT',
+ nextDay : '[Ертең сағат] LT',
+ nextWeek : 'dddd [сағат] LT',
+ lastDay : '[Кеше сағат] LT',
+ lastWeek : '[Өткен аптаның] dddd [сағат] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : '%s ішінде',
+ past : '%s бұрын',
+ s : 'бірнеше секунд',
+ m : 'бір минут',
+ mm : '%d минут',
+ h : 'бір сағат',
+ hh : '%d сағат',
+ d : 'бір күн',
+ dd : '%d күн',
+ M : 'бір ай',
+ MM : '%d ай',
+ y : 'бір жыл',
+ yy : '%d жыл'
+ },
+ ordinalParse: /\d{1,2}-(ші|шы)/,
+ ordinal : function (number) {
+ var a = number % 10,
+ b = number >= 100 ? 100 : null;
+ return number + (suffixes[number] || suffixes[a] || suffixes[b]);
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ return kk;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/km.js b/lib/javascripts/moment_locale/km.js
index f457e8d1307..56466c91383 100644
--- a/lib/javascripts/moment_locale/km.js
+++ b/lib/javascripts/moment_locale/km.js
@@ -1,31 +1,31 @@
-// moment.js locale configuration
-// locale : khmer (km)
-// author : Kruy Vanna : https://github.com/kruyvanna
+//! moment.js locale configuration
+//! locale : khmer (km)
+//! author : Kruy Vanna : https://github.com/kruyvanna
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('km', {
- months: "មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),
- monthsShort: "មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),
- weekdays: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),
- weekdaysShort: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),
- weekdaysMin: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var km = moment.defineLocale('km', {
+ months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
+ monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
+ weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
+ weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
+ weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
longDateFormat: {
- LT: "HH:mm",
- L: "DD/MM/YYYY",
- LL: "D MMMM YYYY",
- LLL: "D MMMM YYYY LT",
- LLLL: "dddd, D MMMM YYYY LT"
+ LT: 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
},
calendar: {
- sameDay: '[ថ្ងៃនៈ ម៉ោង] LT',
+ sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
nextDay: '[ស្អែក ម៉ោង] LT',
nextWeek: 'dddd [ម៉ោង] LT',
lastDay: '[ម្សិលមិញ ម៉ោង] LT',
@@ -33,23 +33,26 @@
sameElse: 'L'
},
relativeTime: {
- future: "%sទៀត",
- past: "%sមុន",
- s: "ប៉ុន្មានវិនាទី",
- m: "មួយនាទី",
- mm: "%d នាទី",
- h: "មួយម៉ោង",
- hh: "%d ម៉ោង",
- d: "មួយថ្ងៃ",
- dd: "%d ថ្ងៃ",
- M: "មួយខែ",
- MM: "%d ខែ",
- y: "មួយឆ្នាំ",
- yy: "%d ឆ្នាំ"
+ future: '%sទៀត',
+ past: '%sមុន',
+ s: 'ប៉ុន្មានវិនាទី',
+ m: 'មួយនាទី',
+ mm: '%d នាទី',
+ h: 'មួយម៉ោង',
+ hh: '%d ម៉ោង',
+ d: 'មួយថ្ងៃ',
+ dd: '%d ថ្ងៃ',
+ M: 'មួយខែ',
+ MM: '%d ខែ',
+ y: 'មួយឆ្នាំ',
+ yy: '%d ឆ្នាំ'
},
week: {
dow: 1, // Monday is the first day of the week.
doy: 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return km;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ko.js b/lib/javascripts/moment_locale/ko.js
index 7de2e51033c..151554ab39e 100644
--- a/lib/javascripts/moment_locale/ko.js
+++ b/lib/javascripts/moment_locale/ko.js
@@ -1,34 +1,32 @@
-// moment.js locale configuration
-// locale : korean (ko)
-//
-// authors
-//
-// - Kyungwook, Park : https://github.com/kyungw00k
-// - Jeeeyul Lee
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('ko', {
- months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),
- monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),
- weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),
- weekdaysShort : "일_월_화_수_목_금_토".split("_"),
- weekdaysMin : "일_월_화_수_목_금_토".split("_"),
+//! moment.js locale configuration
+//! locale : korean (ko)
+//!
+//! authors
+//!
+//! - Kyungwook, Park : https://github.com/kyungw00k
+//! - Jeeeyul Lee
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ko = moment.defineLocale('ko', {
+ months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
+ monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
+ weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
+ weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
+ weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
longDateFormat : {
- LT : "A h시 mm분",
- L : "YYYY.MM.DD",
- LL : "YYYY년 MMMM D일",
- LLL : "YYYY년 MMMM D일 LT",
- LLLL : "YYYY년 MMMM D일 dddd LT"
- },
- meridiem : function (hour, minute, isUpper) {
- return hour < 12 ? '오전' : '오후';
+ LT : 'A h시 m분',
+ LTS : 'A h시 m분 s초',
+ L : 'YYYY.MM.DD',
+ LL : 'YYYY년 MMMM D일',
+ LLL : 'YYYY년 MMMM D일 A h시 m분',
+ LLLL : 'YYYY년 MMMM D일 dddd A h시 m분'
},
calendar : {
sameDay : '오늘 LT',
@@ -39,25 +37,32 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s 후",
- past : "%s 전",
- s : "몇초",
- ss : "%d초",
- m : "일분",
- mm : "%d분",
- h : "한시간",
- hh : "%d시간",
- d : "하루",
- dd : "%d일",
- M : "한달",
- MM : "%d달",
- y : "일년",
- yy : "%d년"
+ future : '%s 후',
+ past : '%s 전',
+ s : '몇초',
+ ss : '%d초',
+ m : '일분',
+ mm : '%d분',
+ h : '한시간',
+ hh : '%d시간',
+ d : '하루',
+ dd : '%d일',
+ M : '한달',
+ MM : '%d달',
+ y : '일년',
+ yy : '%d년'
},
+ ordinalParse : /\d{1,2}일/,
ordinal : '%d일',
- meridiemParse : /(오전|오후)/,
+ meridiemParse : /오전|오후/,
isPM : function (token) {
- return token === "오후";
+ return token === '오후';
+ },
+ meridiem : function (hour, minute, isUpper) {
+ return hour < 12 ? '오전' : '오후';
}
});
-}));
+
+ return ko;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/lb.js b/lib/javascripts/moment_locale/lb.js
index c878b79c134..6713c08a9ca 100644
--- a/lib/javascripts/moment_locale/lb.js
+++ b/lib/javascripts/moment_locale/lb.js
@@ -1,20 +1,15 @@
-// moment.js locale configuration
-// locale : Luxembourgish (lb)
-// author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
+//! moment.js locale configuration
+//! locale : Luxembourgish (lb)
+//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
-// Note: Luxembourgish has a very particular phonological rule ("Eifeler Regel") that causes the
-// deletion of the final "n" in certain contexts. That's what the "eifelerRegelAppliesToWeekday"
-// and "eifelerRegelAppliesToNumber" methods are meant for
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eng Minutt', 'enger Minutt'],
@@ -25,26 +20,23 @@
};
return withoutSuffix ? format[key][0] : format[key][1];
}
-
function processFutureTime(string) {
var number = string.substr(0, string.indexOf(' '));
if (eifelerRegelAppliesToNumber(number)) {
- return "a " + string;
+ return 'a ' + string;
}
- return "an " + string;
+ return 'an ' + string;
}
-
function processPastTime(string) {
var number = string.substr(0, string.indexOf(' '));
if (eifelerRegelAppliesToNumber(number)) {
- return "viru " + string;
+ return 'viru ' + string;
}
- return "virun " + string;
+ return 'virun ' + string;
}
-
/**
- * Returns true if the word before the given number loses the "-n" ending.
- * e.g. "an 10 Deeg" but "a 5 Deeg"
+ * Returns true if the word before the given number loses the '-n' ending.
+ * e.g. 'an 10 Deeg' but 'a 5 Deeg'
*
* @param number {integer}
* @returns {boolean}
@@ -83,27 +75,28 @@
}
}
- return moment.defineLocale('lb', {
- months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
- monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
- weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),
- weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),
- weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"),
+ var lb = moment.defineLocale('lb', {
+ months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
+ monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
+ weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
+ weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
+ weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
longDateFormat: {
- LT: "H:mm [Auer]",
- L: "DD.MM.YYYY",
- LL: "D. MMMM YYYY",
- LLL: "D. MMMM YYYY LT",
- LLLL: "dddd, D. MMMM YYYY LT"
+ LT: 'H:mm [Auer]',
+ LTS: 'H:mm:ss [Auer]',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm [Auer]',
+ LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
},
calendar: {
- sameDay: "[Haut um] LT",
- sameElse: "L",
+ sameDay: '[Haut um] LT',
+ sameElse: 'L',
nextDay: '[Muer um] LT',
nextWeek: 'dddd [um] LT',
lastDay: '[Gëschter um] LT',
lastWeek: function () {
- // Different date string for "Dënschdeg" (Tuesday) and "Donneschdeg" (Thursday) due to phonological rule
+ // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
switch (this.day()) {
case 2:
case 4:
@@ -116,22 +109,26 @@
relativeTime : {
future : processFutureTime,
past : processPastTime,
- s : "e puer Sekonnen",
+ s : 'e puer Sekonnen',
m : processRelativeTime,
- mm : "%d Minutten",
+ mm : '%d Minutten',
h : processRelativeTime,
- hh : "%d Stonnen",
+ hh : '%d Stonnen',
d : processRelativeTime,
- dd : "%d Deeg",
+ dd : '%d Deeg',
M : processRelativeTime,
- MM : "%d Méint",
+ MM : '%d Méint',
y : processRelativeTime,
- yy : "%d Joer"
+ yy : '%d Joer'
},
+ ordinalParse: /\d{1,2}\./,
ordinal: '%d.',
week: {
dow: 1, // Monday is the first day of the week.
doy: 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return lb;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/lo.js b/lib/javascripts/moment_locale/lo.js
new file mode 100644
index 00000000000..7475f273840
--- /dev/null
+++ b/lib/javascripts/moment_locale/lo.js
@@ -0,0 +1,69 @@
+//! moment.js locale configuration
+//! locale : lao (lo)
+//! author : Ryan Hart : https://github.com/ryanhart2
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var lo = moment.defineLocale('lo', {
+ months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
+ monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
+ weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+ weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+ weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
+ },
+ meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
+ isPM: function (input) {
+ return input === 'ຕອນແລງ';
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 12) {
+ return 'ຕອນເຊົ້າ';
+ } else {
+ return 'ຕອນແລງ';
+ }
+ },
+ calendar : {
+ sameDay : '[ມື້ນີ້ເວລາ] LT',
+ nextDay : '[ມື້ອື່ນເວລາ] LT',
+ nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
+ lastDay : '[ມື້ວານນີ້ເວລາ] LT',
+ lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'ອີກ %s',
+ past : '%sຜ່ານມາ',
+ s : 'ບໍ່ເທົ່າໃດວິນາທີ',
+ m : '1 ນາທີ',
+ mm : '%d ນາທີ',
+ h : '1 ຊົ່ວໂມງ',
+ hh : '%d ຊົ່ວໂມງ',
+ d : '1 ມື້',
+ dd : '%d ມື້',
+ M : '1 ເດືອນ',
+ MM : '%d ເດືອນ',
+ y : '1 ປີ',
+ yy : '%d ປີ'
+ },
+ ordinalParse: /(ທີ່)\d{1,2}/,
+ ordinal : function (number) {
+ return 'ທີ່' + number;
+ }
+ });
+
+ return lo;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/lt.js b/lib/javascripts/moment_locale/lt.js
index 7d7b93f10a9..72566bfee99 100644
--- a/lib/javascripts/moment_locale/lt.js
+++ b/lib/javascripts/moment_locale/lt.js
@@ -1,52 +1,45 @@
-// moment.js locale configuration
-// locale : Lithuanian (lt)
-// author : Mindaugas Mozūras : https://github.com/mmozuras
+//! moment.js locale configuration
+//! locale : Lithuanian (lt)
+//! author : Mindaugas Mozūras : https://github.com/mmozuras
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var units = {
- "m" : "minutė_minutės_minutę",
- "mm": "minutės_minučių_minutes",
- "h" : "valanda_valandos_valandą",
- "hh": "valandos_valandų_valandas",
- "d" : "diena_dienos_dieną",
- "dd": "dienos_dienų_dienas",
- "M" : "mėnuo_mėnesio_mėnesį",
- "MM": "mėnesiai_mėnesių_mėnesius",
- "y" : "metai_metų_metus",
- "yy": "metai_metų_metus"
- },
- weekDays = "sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_");
-
+ 'm' : 'minutė_minutės_minutę',
+ 'mm': 'minutės_minučių_minutes',
+ 'h' : 'valanda_valandos_valandą',
+ 'hh': 'valandos_valandų_valandas',
+ 'd' : 'diena_dienos_dieną',
+ 'dd': 'dienos_dienų_dienas',
+ 'M' : 'mėnuo_mėnesio_mėnesį',
+ 'MM': 'mėnesiai_mėnesių_mėnesius',
+ 'y' : 'metai_metų_metus',
+ 'yy': 'metai_metų_metus'
+ };
function translateSeconds(number, withoutSuffix, key, isFuture) {
if (withoutSuffix) {
- return "kelios sekundės";
+ return 'kelios sekundės';
} else {
- return isFuture ? "kelių sekundžių" : "kelias sekundes";
+ return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
}
}
-
function translateSingular(number, withoutSuffix, key, isFuture) {
return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
}
-
function special(number) {
return number % 10 === 0 || (number > 10 && number < 20);
}
-
function forms(key) {
- return units[key].split("_");
+ return units[key].split('_');
}
-
function translate(number, withoutSuffix, key, isFuture) {
- var result = number + " ";
+ var result = number + ' ';
if (number === 1) {
return result + translateSingular(number, withoutSuffix, key[0], isFuture);
} else if (withoutSuffix) {
@@ -59,42 +52,42 @@
}
}
}
-
- function relativeWeekDay(moment, format) {
- var nominative = format.indexOf('dddd HH:mm') === -1,
- weekDay = weekDays[moment.day()];
-
- return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į";
- }
-
- return moment.defineLocale("lt", {
- months : "sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),
- monthsShort : "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),
- weekdays : relativeWeekDay,
- weekdaysShort : "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),
- weekdaysMin : "S_P_A_T_K_Pn_Š".split("_"),
+ var lt = moment.defineLocale('lt', {
+ months : {
+ format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
+ standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_')
+ },
+ monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
+ weekdays : {
+ format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
+ standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
+ isFormat: /dddd HH:mm/
+ },
+ weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
+ weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "YYYY [m.] MMMM D [d.]",
- LLL : "YYYY [m.] MMMM D [d.], LT [val.]",
- LLLL : "YYYY [m.] MMMM D [d.], dddd, LT [val.]",
- l : "YYYY-MM-DD",
- ll : "YYYY [m.] MMMM D [d.]",
- lll : "YYYY [m.] MMMM D [d.], LT [val.]",
- llll : "YYYY [m.] MMMM D [d.], ddd, LT [val.]"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'YYYY-MM-DD',
+ LL : 'YYYY [m.] MMMM D [d.]',
+ LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
+ l : 'YYYY-MM-DD',
+ ll : 'YYYY [m.] MMMM D [d.]',
+ lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
},
calendar : {
- sameDay : "[Šiandien] LT",
- nextDay : "[Rytoj] LT",
- nextWeek : "dddd LT",
- lastDay : "[Vakar] LT",
- lastWeek : "[Praėjusį] dddd LT",
- sameElse : "L"
+ sameDay : '[Šiandien] LT',
+ nextDay : '[Rytoj] LT',
+ nextWeek : 'dddd LT',
+ lastDay : '[Vakar] LT',
+ lastWeek : '[Praėjusį] dddd LT',
+ sameElse : 'L'
},
relativeTime : {
- future : "po %s",
- past : "prieš %s",
+ future : 'po %s',
+ past : 'prieš %s',
s : translateSeconds,
m : translateSingular,
mm : translate,
@@ -107,6 +100,7 @@
y : translateSingular,
yy : translate
},
+ ordinalParse: /\d{1,2}-oji/,
ordinal : function (number) {
return number + '-oji';
},
@@ -115,4 +109,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return lt;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/lv.js b/lib/javascripts/moment_locale/lv.js
index 0df007d7480..d1864a187e5 100644
--- a/lib/javascripts/moment_locale/lv.js
+++ b/lib/javascripts/moment_locale/lv.js
@@ -1,49 +1,64 @@
-// moment.js locale configuration
-// locale : latvian (lv)
-// author : Kristaps Karlsons : https://github.com/skakri
+//! moment.js locale configuration
+//! locale : latvian (lv)
+//! author : Kristaps Karlsons : https://github.com/skakri
+//! author : Jānis Elmeris : https://github.com/JanisE
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var units = {
- 'mm': 'minūti_minūtes_minūte_minūtes',
- 'hh': 'stundu_stundas_stunda_stundas',
- 'dd': 'dienu_dienas_diena_dienas',
- 'MM': 'mēnesi_mēnešus_mēnesis_mēneši',
- 'yy': 'gadu_gadus_gads_gadi'
+ 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
+ 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
+ 'h': 'stundas_stundām_stunda_stundas'.split('_'),
+ 'hh': 'stundas_stundām_stunda_stundas'.split('_'),
+ 'd': 'dienas_dienām_diena_dienas'.split('_'),
+ 'dd': 'dienas_dienām_diena_dienas'.split('_'),
+ 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
+ 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
+ 'y': 'gada_gadiem_gads_gadi'.split('_'),
+ 'yy': 'gada_gadiem_gads_gadi'.split('_')
};
-
- function format(word, number, withoutSuffix) {
- var forms = word.split('_');
+ /**
+ * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
+ */
+ function format(forms, number, withoutSuffix) {
if (withoutSuffix) {
+ // E.g. "21 minūte", "3 minūtes".
return number % 10 === 1 && number !== 11 ? forms[2] : forms[3];
} else {
+ // E.g. "21 minūtes" as in "pēc 21 minūtes".
+ // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
return number % 10 === 1 && number !== 11 ? forms[0] : forms[1];
}
}
-
function relativeTimeWithPlural(number, withoutSuffix, key) {
return number + ' ' + format(units[key], number, withoutSuffix);
}
+ function relativeTimeWithSingular(number, withoutSuffix, key) {
+ return format(units[key], number, withoutSuffix);
+ }
+ function relativeSeconds(number, withoutSuffix) {
+ return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
+ }
- return moment.defineLocale('lv', {
- months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),
- monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),
- weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),
- weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"),
- weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"),
+ var lv = moment.defineLocale('lv', {
+ months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
+ monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
+ weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
+ weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
+ weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "YYYY. [gada] D. MMMM",
- LLL : "YYYY. [gada] D. MMMM, LT",
- LLLL : "YYYY. [gada] D. MMMM, dddd, LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY.',
+ LL : 'YYYY. [gada] D. MMMM',
+ LLL : 'YYYY. [gada] D. MMMM, HH:mm',
+ LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
},
calendar : {
sameDay : '[Šodien pulksten] LT',
@@ -54,24 +69,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s vēlāk",
- past : "%s agrāk",
- s : "dažas sekundes",
- m : "minūti",
+ future : 'pēc %s',
+ past : 'pirms %s',
+ s : relativeSeconds,
+ m : relativeTimeWithSingular,
mm : relativeTimeWithPlural,
- h : "stundu",
+ h : relativeTimeWithSingular,
hh : relativeTimeWithPlural,
- d : "dienu",
+ d : relativeTimeWithSingular,
dd : relativeTimeWithPlural,
- M : "mēnesi",
+ M : relativeTimeWithSingular,
MM : relativeTimeWithPlural,
- y : "gadu",
+ y : relativeTimeWithSingular,
yy : relativeTimeWithPlural
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return lv;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/me.js b/lib/javascripts/moment_locale/me.js
new file mode 100644
index 00000000000..e2c1f750e13
--- /dev/null
+++ b/lib/javascripts/moment_locale/me.js
@@ -0,0 +1,109 @@
+//! moment.js locale configuration
+//! locale : Montenegrin (me)
+//! author : Miodrag Nikač : https://github.com/miodragnikac
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var translator = {
+ words: { //Different grammatical cases
+ m: ['jedan minut', 'jednog minuta'],
+ mm: ['minut', 'minuta', 'minuta'],
+ h: ['jedan sat', 'jednog sata'],
+ hh: ['sat', 'sata', 'sati'],
+ dd: ['dan', 'dana', 'dana'],
+ MM: ['mjesec', 'mjeseca', 'mjeseci'],
+ yy: ['godina', 'godine', 'godina']
+ },
+ correctGrammaticalCase: function (number, wordKey) {
+ return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
+ },
+ translate: function (number, withoutSuffix, key) {
+ var wordKey = translator.words[key];
+ if (key.length === 1) {
+ return withoutSuffix ? wordKey[0] : wordKey[1];
+ } else {
+ return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
+ }
+ }
+ };
+
+ var me = moment.defineLocale('me', {
+ months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
+ monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
+ weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
+ weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
+ weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
+ longDateFormat: {
+ LT: 'H:mm',
+ LTS : 'H:mm:ss',
+ L: 'DD. MM. YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
+ },
+ calendar: {
+ sameDay: '[danas u] LT',
+ nextDay: '[sjutra u] LT',
+
+ nextWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[u] [nedjelju] [u] LT';
+ case 3:
+ return '[u] [srijedu] [u] LT';
+ case 6:
+ return '[u] [subotu] [u] LT';
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return '[u] dddd [u] LT';
+ }
+ },
+ lastDay : '[juče u] LT',
+ lastWeek : function () {
+ var lastWeekDays = [
+ '[prošle] [nedjelje] [u] LT',
+ '[prošlog] [ponedjeljka] [u] LT',
+ '[prošlog] [utorka] [u] LT',
+ '[prošle] [srijede] [u] LT',
+ '[prošlog] [četvrtka] [u] LT',
+ '[prošlog] [petka] [u] LT',
+ '[prošle] [subote] [u] LT'
+ ];
+ return lastWeekDays[this.day()];
+ },
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'za %s',
+ past : 'prije %s',
+ s : 'nekoliko sekundi',
+ m : translator.translate,
+ mm : translator.translate,
+ h : translator.translate,
+ hh : translator.translate,
+ d : 'dan',
+ dd : translator.translate,
+ M : 'mjesec',
+ MM : translator.translate,
+ y : 'godinu',
+ yy : translator.translate
+ },
+ ordinalParse: /\d{1,2}\./,
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ return me;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/mk.js b/lib/javascripts/moment_locale/mk.js
index 2d8a739abb1..89b5414c115 100644
--- a/lib/javascripts/moment_locale/mk.js
+++ b/lib/javascripts/moment_locale/mk.js
@@ -1,64 +1,65 @@
-// moment.js locale configuration
-// locale : macedonian (mk)
-// author : Borislav Mickov : https://github.com/B0k0
+//! moment.js locale configuration
+//! locale : macedonian (mk)
+//! author : Borislav Mickov : https://github.com/B0k0
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('mk', {
- months : "јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),
- monthsShort : "јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),
- weekdays : "недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),
- weekdaysShort : "нед_пон_вто_сре_чет_пет_саб".split("_"),
- weekdaysMin : "нe_пo_вт_ср_че_пе_сa".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var mk = moment.defineLocale('mk', {
+ months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
+ monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
+ weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
+ weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
+ weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "D.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'D.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY H:mm',
+ LLLL : 'dddd, D MMMM YYYY H:mm'
},
calendar : {
sameDay : '[Денес во] LT',
nextDay : '[Утре во] LT',
- nextWeek : 'dddd [во] LT',
+ nextWeek : '[Во] dddd [во] LT',
lastDay : '[Вчера во] LT',
lastWeek : function () {
switch (this.day()) {
case 0:
case 3:
case 6:
- return '[Во изминатата] dddd [во] LT';
+ return '[Изминатата] dddd [во] LT';
case 1:
case 2:
case 4:
case 5:
- return '[Во изминатиот] dddd [во] LT';
+ return '[Изминатиот] dddd [во] LT';
}
},
sameElse : 'L'
},
relativeTime : {
- future : "после %s",
- past : "пред %s",
- s : "неколку секунди",
- m : "минута",
- mm : "%d минути",
- h : "час",
- hh : "%d часа",
- d : "ден",
- dd : "%d дена",
- M : "месец",
- MM : "%d месеци",
- y : "година",
- yy : "%d години"
+ future : 'после %s',
+ past : 'пред %s',
+ s : 'неколку секунди',
+ m : 'минута',
+ mm : '%d минути',
+ h : 'час',
+ hh : '%d часа',
+ d : 'ден',
+ dd : '%d дена',
+ M : 'месец',
+ MM : '%d месеци',
+ y : 'година',
+ yy : '%d години'
},
+ ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
ordinal : function (number) {
var lastDigit = number % 10,
last2Digits = number % 100;
@@ -83,4 +84,7 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return mk;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ml.js b/lib/javascripts/moment_locale/ml.js
index d3cee1d3f30..9e241f26912 100644
--- a/lib/javascripts/moment_locale/ml.js
+++ b/lib/javascripts/moment_locale/ml.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : malayalam (ml)
-// author : Floyd Pink : https://github.com/floydpink
+//! moment.js locale configuration
+//! locale : malayalam (ml)
+//! author : Floyd Pink : https://github.com/floydpink
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('ml', {
- months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split("_"),
- monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split("_"),
- weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split("_"),
- weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split("_"),
- weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ml = moment.defineLocale('ml', {
+ months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
+ monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
+ weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
+ weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
+ weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
longDateFormat : {
- LT : "A h:mm -നു",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
+ LT : 'A h:mm -നു',
+ LTS : 'A h:mm:ss -നു',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY, A h:mm -നു',
+ LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
},
calendar : {
sameDay : '[ഇന്ന്] LT',
@@ -33,32 +33,39 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s കഴിഞ്ഞ്",
- past : "%s മുൻപ്",
- s : "അൽപ നിമിഷങ്ങൾ",
- m : "ഒരു മിനിറ്റ്",
- mm : "%d മിനിറ്റ്",
- h : "ഒരു മണിക്കൂർ",
- hh : "%d മണിക്കൂർ",
- d : "ഒരു ദിവസം",
- dd : "%d ദിവസം",
- M : "ഒരു മാസം",
- MM : "%d മാസം",
- y : "ഒരു വർഷം",
- yy : "%d വർഷം"
+ future : '%s കഴിഞ്ഞ്',
+ past : '%s മുൻപ്',
+ s : 'അൽപ നിമിഷങ്ങൾ',
+ m : 'ഒരു മിനിറ്റ്',
+ mm : '%d മിനിറ്റ്',
+ h : 'ഒരു മണിക്കൂർ',
+ hh : '%d മണിക്കൂർ',
+ d : 'ഒരു ദിവസം',
+ dd : '%d ദിവസം',
+ M : 'ഒരു മാസം',
+ MM : '%d മാസം',
+ y : 'ഒരു വർഷം',
+ yy : '%d വർഷം'
+ },
+ meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
+ isPM : function (input) {
+ return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
- return "രാത്രി";
+ return 'രാത്രി';
} else if (hour < 12) {
- return "രാവിലെ";
+ return 'രാവിലെ';
} else if (hour < 17) {
- return "ഉച്ച കഴിഞ്ഞ്";
+ return 'ഉച്ച കഴിഞ്ഞ്';
} else if (hour < 20) {
- return "വൈകുന്നേരം";
+ return 'വൈകുന്നേരം';
} else {
- return "രാത്രി";
+ return 'രാത്രി';
}
}
});
-}));
+
+ return ml;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/mr.js b/lib/javascripts/moment_locale/mr.js
index 8cbfe7cf97d..77a3fa2f06c 100644
--- a/lib/javascripts/moment_locale/mr.js
+++ b/lib/javascripts/moment_locale/mr.js
@@ -1,16 +1,16 @@
-// moment.js locale configuration
-// locale : Marathi (mr)
-// author : Harshad Kale : https://github.com/kalehv
+//! moment.js locale configuration
+//! locale : Marathi (mr)
+//! author : Harshad Kale : https://github.com/kalehv
+//! author : Vivek Athalye : https://github.com/vnathalye
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '१',
'2': '२',
@@ -36,18 +36,55 @@
'०': '0'
};
- return moment.defineLocale('mr', {
- months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split("_"),
- monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split("_"),
- weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"),
- weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split("_"),
- weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"),
+ function relativeTimeMr(number, withoutSuffix, string, isFuture)
+ {
+ var output = '';
+ if (withoutSuffix) {
+ switch (string) {
+ case 's': output = 'काही सेकंद'; break;
+ case 'm': output = 'एक मिनिट'; break;
+ case 'mm': output = '%d मिनिटे'; break;
+ case 'h': output = 'एक तास'; break;
+ case 'hh': output = '%d तास'; break;
+ case 'd': output = 'एक दिवस'; break;
+ case 'dd': output = '%d दिवस'; break;
+ case 'M': output = 'एक महिना'; break;
+ case 'MM': output = '%d महिने'; break;
+ case 'y': output = 'एक वर्ष'; break;
+ case 'yy': output = '%d वर्षे'; break;
+ }
+ }
+ else {
+ switch (string) {
+ case 's': output = 'काही सेकंदां'; break;
+ case 'm': output = 'एका मिनिटा'; break;
+ case 'mm': output = '%d मिनिटां'; break;
+ case 'h': output = 'एका तासा'; break;
+ case 'hh': output = '%d तासां'; break;
+ case 'd': output = 'एका दिवसा'; break;
+ case 'dd': output = '%d दिवसां'; break;
+ case 'M': output = 'एका महिन्या'; break;
+ case 'MM': output = '%d महिन्यां'; break;
+ case 'y': output = 'एका वर्षा'; break;
+ case 'yy': output = '%d वर्षां'; break;
+ }
+ }
+ return output.replace(/%d/i, number);
+ }
+
+ var mr = moment.defineLocale('mr', {
+ months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
+ monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
+ weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
+ weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
+ weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
longDateFormat : {
- LT : "A h:mm वाजता",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
+ LT : 'A h:mm वाजता',
+ LTS : 'A h:mm:ss वाजता',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY, A h:mm वाजता',
+ LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
},
calendar : {
sameDay : '[आज] LT',
@@ -58,19 +95,19 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s नंतर",
- past : "%s पूर्वी",
- s : "सेकंद",
- m: "एक मिनिट",
- mm: "%d मिनिटे",
- h : "एक तास",
- hh : "%d तास",
- d : "एक दिवस",
- dd : "%d दिवस",
- M : "एक महिना",
- MM : "%d महिने",
- y : "एक वर्ष",
- yy : "%d वर्षे"
+ future: '%sमध्ये',
+ past: '%sपूर्वी',
+ s: relativeTimeMr,
+ m: relativeTimeMr,
+ mm: relativeTimeMr,
+ h: relativeTimeMr,
+ hh: relativeTimeMr,
+ d: relativeTimeMr,
+ dd: relativeTimeMr,
+ M: relativeTimeMr,
+ MM: relativeTimeMr,
+ y: relativeTimeMr,
+ yy: relativeTimeMr
},
preparse: function (string) {
return string.replace(/[१२३४५६७८९०]/g, function (match) {
@@ -82,18 +119,32 @@
return symbolMap[match];
});
},
- meridiem: function (hour, minute, isLower)
- {
+ meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'रात्री') {
+ return hour < 4 ? hour : hour + 12;
+ } else if (meridiem === 'सकाळी') {
+ return hour;
+ } else if (meridiem === 'दुपारी') {
+ return hour >= 10 ? hour : hour + 12;
+ } else if (meridiem === 'सायंकाळी') {
+ return hour + 12;
+ }
+ },
+ meridiem: function (hour, minute, isLower) {
if (hour < 4) {
- return "रात्री";
+ return 'रात्री';
} else if (hour < 10) {
- return "सकाळी";
+ return 'सकाळी';
} else if (hour < 17) {
- return "दुपारी";
+ return 'दुपारी';
} else if (hour < 20) {
- return "सायंकाळी";
+ return 'सायंकाळी';
} else {
- return "रात्री";
+ return 'रात्री';
}
},
week : {
@@ -101,4 +152,7 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return mr;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ms-my.js b/lib/javascripts/moment_locale/ms-my.js
index eee412f6bcd..38c31387806 100644
--- a/lib/javascripts/moment_locale/ms-my.js
+++ b/lib/javascripts/moment_locale/ms-my.js
@@ -1,28 +1,41 @@
-// moment.js locale configuration
-// locale : Bahasa Malaysia (ms-MY)
-// author : Weldan Jamili : https://github.com/weldan
+//! moment.js locale configuration
+//! locale : Bahasa Malaysia (ms-MY)
+//! author : Weldan Jamili : https://github.com/weldan
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('ms-my', {
- months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),
- monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),
- weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),
- weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),
- weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ms_my = moment.defineLocale('ms-my', {
+ months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
+ monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
+ weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
+ weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
+ weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
longDateFormat : {
- LT : "HH.mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY [pukul] LT",
- LLLL : "dddd, D MMMM YYYY [pukul] LT"
+ LT : 'HH.mm',
+ LTS : 'HH.mm.ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY [pukul] HH.mm',
+ LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
+ },
+ meridiemParse: /pagi|tengahari|petang|malam/,
+ meridiemHour: function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'pagi') {
+ return hour;
+ } else if (meridiem === 'tengahari') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === 'petang' || meridiem === 'malam') {
+ return hour + 12;
+ }
},
meridiem : function (hours, minutes, isLower) {
if (hours < 11) {
@@ -44,23 +57,26 @@
sameElse : 'L'
},
relativeTime : {
- future : "dalam %s",
- past : "%s yang lepas",
- s : "beberapa saat",
- m : "seminit",
- mm : "%d minit",
- h : "sejam",
- hh : "%d jam",
- d : "sehari",
- dd : "%d hari",
- M : "sebulan",
- MM : "%d bulan",
- y : "setahun",
- yy : "%d tahun"
+ future : 'dalam %s',
+ past : '%s yang lepas',
+ s : 'beberapa saat',
+ m : 'seminit',
+ mm : '%d minit',
+ h : 'sejam',
+ hh : '%d jam',
+ d : 'sehari',
+ dd : '%d hari',
+ M : 'sebulan',
+ MM : '%d bulan',
+ y : 'setahun',
+ yy : '%d tahun'
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return ms_my;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ms.js b/lib/javascripts/moment_locale/ms.js
new file mode 100644
index 00000000000..fbbb734d1d5
--- /dev/null
+++ b/lib/javascripts/moment_locale/ms.js
@@ -0,0 +1,82 @@
+//! moment.js locale configuration
+//! locale : Bahasa Malaysia (ms-MY)
+//! author : Weldan Jamili : https://github.com/weldan
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var ms = moment.defineLocale('ms', {
+ months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
+ monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
+ weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
+ weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
+ weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
+ longDateFormat : {
+ LT : 'HH.mm',
+ LTS : 'HH.mm.ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY [pukul] HH.mm',
+ LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
+ },
+ meridiemParse: /pagi|tengahari|petang|malam/,
+ meridiemHour: function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'pagi') {
+ return hour;
+ } else if (meridiem === 'tengahari') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === 'petang' || meridiem === 'malam') {
+ return hour + 12;
+ }
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours < 11) {
+ return 'pagi';
+ } else if (hours < 15) {
+ return 'tengahari';
+ } else if (hours < 19) {
+ return 'petang';
+ } else {
+ return 'malam';
+ }
+ },
+ calendar : {
+ sameDay : '[Hari ini pukul] LT',
+ nextDay : '[Esok pukul] LT',
+ nextWeek : 'dddd [pukul] LT',
+ lastDay : '[Kelmarin pukul] LT',
+ lastWeek : 'dddd [lepas pukul] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'dalam %s',
+ past : '%s yang lepas',
+ s : 'beberapa saat',
+ m : 'seminit',
+ mm : '%d minit',
+ h : 'sejam',
+ hh : '%d jam',
+ d : 'sehari',
+ dd : '%d hari',
+ M : 'sebulan',
+ MM : '%d bulan',
+ y : 'setahun',
+ yy : '%d tahun'
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ return ms;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/my.js b/lib/javascripts/moment_locale/my.js
index 442d5693c1e..71e99f0ed80 100644
--- a/lib/javascripts/moment_locale/my.js
+++ b/lib/javascripts/moment_locale/my.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : Burmese (my)
-// author : Squar team, mysquar.com
+//! moment.js locale configuration
+//! locale : Burmese (my)
+//! author : Squar team, mysquar.com
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '၁',
'2': '၂',
@@ -34,18 +33,21 @@
'၉': '9',
'၀': '0'
};
- return moment.defineLocale('my', {
- months: "ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),
- monthsShort: "ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),
- weekdays: "တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),
- weekdaysShort: "နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),
- weekdaysMin: "နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),
+
+ var my = moment.defineLocale('my', {
+ months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
+ monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
+ weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
+ weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+ weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+
longDateFormat: {
- LT: "HH:mm",
- L: "DD/MM/YYYY",
- LL: "D MMMM YYYY",
- LLL: "D MMMM YYYY LT",
- LLLL: "dddd D MMMM YYYY LT"
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
},
calendar: {
sameDay: '[ယနေ.] LT [မှာ]',
@@ -56,19 +58,19 @@
sameElse: 'L'
},
relativeTime: {
- future: "လာမည့် %s မှာ",
- past: "လွန်ခဲ့သော %s က",
- s: "စက္ကန်.အနည်းငယ်",
- m: "တစ်မိနစ်",
- mm: "%d မိနစ်",
- h: "တစ်နာရီ",
- hh: "%d နာရီ",
- d: "တစ်ရက်",
- dd: "%d ရက်",
- M: "တစ်လ",
- MM: "%d လ",
- y: "တစ်နှစ်",
- yy: "%d နှစ်"
+ future: 'လာမည့် %s မှာ',
+ past: 'လွန်ခဲ့သော %s က',
+ s: 'စက္ကန်.အနည်းငယ်',
+ m: 'တစ်မိနစ်',
+ mm: '%d မိနစ်',
+ h: 'တစ်နာရီ',
+ hh: '%d နာရီ',
+ d: 'တစ်ရက်',
+ dd: '%d ရက်',
+ M: 'တစ်လ',
+ MM: '%d လ',
+ y: 'တစ်နှစ်',
+ yy: '%d နှစ်'
},
preparse: function (string) {
return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
@@ -85,4 +87,7 @@
doy: 4 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return my;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/nb.js b/lib/javascripts/moment_locale/nb.js
index 5e4a511a37f..b8d76c63150 100644
--- a/lib/javascripts/moment_locale/nb.js
+++ b/lib/javascripts/moment_locale/nb.js
@@ -1,29 +1,29 @@
-// moment.js locale configuration
-// locale : norwegian bokmål (nb)
-// authors : Espen Hovlandsdal : https://github.com/rexxars
-// Sigurd Gartmann : https://github.com/sigurdga
+//! moment.js locale configuration
+//! locale : norwegian bokmål (nb)
+//! authors : Espen Hovlandsdal : https://github.com/rexxars
+//! Sigurd Gartmann : https://github.com/sigurdga
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('nb', {
- months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
- monthsShort : "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),
- weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
- weekdaysShort : "sø._ma._ti._on._to._fr._lø.".split("_"),
- weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var nb = moment.defineLocale('nb', {
+ months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
+ monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
+ weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+ weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
+ weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
longDateFormat : {
- LT : "H.mm",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY [kl.] LT",
- LLLL : "dddd D. MMMM YYYY [kl.] LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY [kl.] HH:mm',
+ LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
},
calendar : {
sameDay: '[i dag kl.] LT',
@@ -34,24 +34,28 @@
sameElse: 'L'
},
relativeTime : {
- future : "om %s",
- past : "for %s siden",
- s : "noen sekunder",
- m : "ett minutt",
- mm : "%d minutter",
- h : "en time",
- hh : "%d timer",
- d : "en dag",
- dd : "%d dager",
- M : "en måned",
- MM : "%d måneder",
- y : "ett år",
- yy : "%d år"
+ future : 'om %s',
+ past : 'for %s siden',
+ s : 'noen sekunder',
+ m : 'ett minutt',
+ mm : '%d minutter',
+ h : 'en time',
+ hh : '%d timer',
+ d : 'en dag',
+ dd : '%d dager',
+ M : 'en måned',
+ MM : '%d måneder',
+ y : 'ett år',
+ yy : '%d år'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return nb;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/nb_NO.js b/lib/javascripts/moment_locale/nb_NO.js
deleted file mode 100644
index faa1aa2378e..00000000000
--- a/lib/javascripts/moment_locale/nb_NO.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// moment.js language configuration
-// language : norwegian bokmål (nb)
-// author : Espen Hovlandsdal : https://github.com/rexxars
-
-moment.lang('nb_NO', {
- months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
- monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
- weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
- weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"),
- weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: '[I dag klokken] LT',
- nextDay: '[I morgen klokken] LT',
- nextWeek: 'dddd [klokken] LT',
- lastDay: '[I går klokken] LT',
- lastWeek: '[Forrige] dddd [klokken] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "om %s",
- past : "for %s siden",
- s : "noen sekunder",
- m : "ett minutt",
- mm : "%d minutter",
- h : "en time",
- hh : "%d timer",
- d : "en dag",
- dd : "%d dager",
- M : "en måned",
- MM : "%d måneder",
- y : "ett år",
- yy : "%d år"
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
-});
diff --git a/lib/javascripts/moment_locale/ne.js b/lib/javascripts/moment_locale/ne.js
index 836fb4d476f..347640156b6 100644
--- a/lib/javascripts/moment_locale/ne.js
+++ b/lib/javascripts/moment_locale/ne.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : nepali/nepalese
-// author : suvash : https://github.com/suvash
+//! moment.js locale configuration
+//! locale : nepali/nepalese
+//! author : suvash : https://github.com/suvash
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var symbolMap = {
'1': '१',
'2': '२',
@@ -36,18 +35,19 @@
'०': '0'
};
- return moment.defineLocale('ne', {
- months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"),
- monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"),
- weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"),
- weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"),
- weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"),
+ var ne = moment.defineLocale('ne', {
+ months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
+ monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
+ weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
+ weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
+ weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
longDateFormat : {
- LT : "Aको h:mm बजे",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
+ LT : 'Aको h:mm बजे',
+ LTS : 'Aको h:mm:ss बजे',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY, Aको h:mm बजे',
+ LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
},
preparse: function (string) {
return string.replace(/[१२३४५६७८९०]/g, function (match) {
@@ -59,47 +59,63 @@
return symbolMap[match];
});
},
+ meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'राति') {
+ return hour < 4 ? hour : hour + 12;
+ } else if (meridiem === 'बिहान') {
+ return hour;
+ } else if (meridiem === 'दिउँसो') {
+ return hour >= 10 ? hour : hour + 12;
+ } else if (meridiem === 'साँझ') {
+ return hour + 12;
+ }
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 3) {
- return "राती";
- } else if (hour < 10) {
- return "बिहान";
- } else if (hour < 15) {
- return "दिउँसो";
- } else if (hour < 18) {
- return "बेलुका";
+ return 'राति';
+ } else if (hour < 12) {
+ return 'बिहान';
+ } else if (hour < 16) {
+ return 'दिउँसो';
} else if (hour < 20) {
- return "साँझ";
+ return 'साँझ';
} else {
- return "राती";
+ return 'राति';
}
},
calendar : {
sameDay : '[आज] LT',
- nextDay : '[भोली] LT',
+ nextDay : '[भोलि] LT',
nextWeek : '[आउँदो] dddd[,] LT',
lastDay : '[हिजो] LT',
lastWeek : '[गएको] dddd[,] LT',
sameElse : 'L'
},
relativeTime : {
- future : "%sमा",
- past : "%s अगाडी",
- s : "केही समय",
- m : "एक मिनेट",
- mm : "%d मिनेट",
- h : "एक घण्टा",
- hh : "%d घण्टा",
- d : "एक दिन",
- dd : "%d दिन",
- M : "एक महिना",
- MM : "%d महिना",
- y : "एक बर्ष",
- yy : "%d बर्ष"
+ future : '%sमा',
+ past : '%s अगाडि',
+ s : 'केही क्षण',
+ m : 'एक मिनेट',
+ mm : '%d मिनेट',
+ h : 'एक घण्टा',
+ hh : '%d घण्टा',
+ d : 'एक दिन',
+ dd : '%d दिन',
+ M : 'एक महिना',
+ MM : '%d महिना',
+ y : 'एक बर्ष',
+ yy : '%d बर्ष'
},
week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return ne;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/nl.js b/lib/javascripts/moment_locale/nl.js
index 15776736ca8..1ae4700d6a9 100644
--- a/lib/javascripts/moment_locale/nl.js
+++ b/lib/javascripts/moment_locale/nl.js
@@ -1,21 +1,20 @@
-// moment.js locale configuration
-// locale : dutch (nl)
-// author : Joris Röling : https://github.com/jjupiter
+//! moment.js locale configuration
+//! locale : dutch (nl)
+//! author : Joris Röling : https://github.com/jjupiter
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),
- monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
- return moment.defineLocale('nl', {
- months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),
+
+ var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
+ monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
+
+ var nl = moment.defineLocale('nl', {
+ months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
monthsShort : function (m, format) {
if (/-MMM-/.test(format)) {
return monthsShortWithoutDots[m.month()];
@@ -23,15 +22,16 @@
return monthsShortWithDots[m.month()];
}
},
- weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),
- weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"),
- weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),
+ weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
+ weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
+ weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD-MM-YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD-MM-YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[vandaag om] LT',
@@ -42,20 +42,21 @@
sameElse: 'L'
},
relativeTime : {
- future : "over %s",
- past : "%s geleden",
- s : "een paar seconden",
- m : "één minuut",
- mm : "%d minuten",
- h : "één uur",
- hh : "%d uur",
- d : "één dag",
- dd : "%d dagen",
- M : "één maand",
- MM : "%d maanden",
- y : "één jaar",
- yy : "%d jaar"
+ future : 'over %s',
+ past : '%s geleden',
+ s : 'een paar seconden',
+ m : 'één minuut',
+ mm : '%d minuten',
+ h : 'één uur',
+ hh : '%d uur',
+ d : 'één dag',
+ dd : '%d dagen',
+ M : 'één maand',
+ MM : '%d maanden',
+ y : 'één jaar',
+ yy : '%d jaar'
},
+ ordinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
},
@@ -64,4 +65,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return nl;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/nn.js b/lib/javascripts/moment_locale/nn.js
index e479b4582cc..3910bb9be6e 100644
--- a/lib/javascripts/moment_locale/nn.js
+++ b/lib/javascripts/moment_locale/nn.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : norwegian nynorsk (nn)
-// author : https://github.com/mechuwind
+//! moment.js locale configuration
+//! locale : norwegian nynorsk (nn)
+//! author : https://github.com/mechuwind
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('nn', {
- months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
- monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
- weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),
- weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"),
- weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var nn = moment.defineLocale('nn', {
+ months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
+ monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
+ weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
+ weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
+ weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY [kl.] H:mm',
+ LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
},
calendar : {
sameDay: '[I dag klokka] LT',
@@ -33,24 +33,28 @@
sameElse: 'L'
},
relativeTime : {
- future : "om %s",
- past : "for %s sidan",
- s : "nokre sekund",
- m : "eit minutt",
- mm : "%d minutt",
- h : "ein time",
- hh : "%d timar",
- d : "ein dag",
- dd : "%d dagar",
- M : "ein månad",
- MM : "%d månader",
- y : "eit år",
- yy : "%d år"
+ future : 'om %s',
+ past : 'for %s sidan',
+ s : 'nokre sekund',
+ m : 'eit minutt',
+ mm : '%d minutt',
+ h : 'ein time',
+ hh : '%d timar',
+ d : 'ein dag',
+ dd : '%d dagar',
+ M : 'ein månad',
+ MM : '%d månader',
+ y : 'eit år',
+ yy : '%d år'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return nn;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/pl.js b/lib/javascripts/moment_locale/pl.js
index 75e978bd239..fa8157943b4 100644
--- a/lib/javascripts/moment_locale/pl.js
+++ b/lib/javascripts/moment_locale/pl.js
@@ -1,25 +1,22 @@
-// moment.js locale configuration
-// locale : polish (pl)
-// author : Rafal Hirsz : https://github.com/evoL
+//! moment.js locale configuration
+//! locale : polish (pl)
+//! author : Rafal Hirsz : https://github.com/evoL
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),
- monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+ var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
+ monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
function plural(n) {
return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
}
-
function translate(number, withoutSuffix, key) {
- var result = number + " ";
+ var result = number + ' ';
switch (key) {
case 'm':
return withoutSuffix ? 'minuta' : 'minutę';
@@ -36,24 +33,30 @@
}
}
- return moment.defineLocale('pl', {
+ var pl = moment.defineLocale('pl', {
months : function (momentToFormat, format) {
- if (/D MMMM/.test(format)) {
+ if (format === '') {
+ // Hack: if format empty we know this is used to generate
+ // RegExp by moment. Give then back both valid forms of months
+ // in RegExp ready format.
+ return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
+ } else if (/D MMMM/.test(format)) {
return monthsSubjective[momentToFormat.month()];
} else {
return monthsNominative[momentToFormat.month()];
}
},
- monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),
- weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),
- weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"),
- weekdaysMin : "N_Pn_Wt_Śr_Cz_Pt_So".split("_"),
+ monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
+ weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
+ weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'),
+ weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[Dziś o] LT',
@@ -75,24 +78,28 @@
sameElse: 'L'
},
relativeTime : {
- future : "za %s",
- past : "%s temu",
- s : "kilka sekund",
+ future : 'za %s',
+ past : '%s temu',
+ s : 'kilka sekund',
m : translate,
mm : translate,
h : translate,
hh : translate,
- d : "1 dzień",
+ d : '1 dzień',
dd : '%d dni',
- M : "miesiąc",
+ M : 'miesiąc',
MM : translate,
- y : "rok",
+ y : 'rok',
yy : translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return pl;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/pt-br.js b/lib/javascripts/moment_locale/pt-br.js
index d577018facc..06747f6fda0 100644
--- a/lib/javascripts/moment_locale/pt-br.js
+++ b/lib/javascripts/moment_locale/pt-br.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : brazilian portuguese (pt-br)
-// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
+//! moment.js locale configuration
+//! locale : brazilian portuguese (pt-br)
+//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('pt-br', {
- months : "janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),
- monthsShort : "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),
- weekdays : "domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),
- weekdaysShort : "dom_seg_ter_qua_qui_sex_sáb".split("_"),
- weekdaysMin : "dom_2ª_3ª_4ª_5ª_6ª_sáb".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var pt_br = moment.defineLocale('pt-br', {
+ months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
+ monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
+ weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
+ weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
+ weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D [de] MMMM [de] YYYY",
- LLL : "D [de] MMMM [de] YYYY [às] LT",
- LLLL : "dddd, D [de] MMMM [de] YYYY [às] LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D [de] MMMM [de] YYYY',
+ LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
+ LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
},
calendar : {
sameDay: '[Hoje às] LT',
@@ -37,20 +37,24 @@
sameElse: 'L'
},
relativeTime : {
- future : "em %s",
- past : "%s atrás",
- s : "segundos",
- m : "um minuto",
- mm : "%d minutos",
- h : "uma hora",
- hh : "%d horas",
- d : "um dia",
- dd : "%d dias",
- M : "um mês",
- MM : "%d meses",
- y : "um ano",
- yy : "%d anos"
+ future : 'em %s',
+ past : '%s atrás',
+ s : 'poucos segundos',
+ m : 'um minuto',
+ mm : '%d minutos',
+ h : 'uma hora',
+ hh : '%d horas',
+ d : 'um dia',
+ dd : '%d dias',
+ M : 'um mês',
+ MM : '%d meses',
+ y : 'um ano',
+ yy : '%d anos'
},
+ ordinalParse: /\d{1,2}º/,
ordinal : '%dº'
});
-}));
+
+ return pt_br;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/pt.js b/lib/javascripts/moment_locale/pt.js
index 808641483df..bdb913fc0f7 100644
--- a/lib/javascripts/moment_locale/pt.js
+++ b/lib/javascripts/moment_locale/pt.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : portuguese (pt)
-// author : Jefferson : https://github.com/jalex79
+//! moment.js locale configuration
+//! locale : portuguese (pt)
+//! author : Jefferson : https://github.com/jalex79
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('pt', {
- months : "janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),
- monthsShort : "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),
- weekdays : "domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),
- weekdaysShort : "dom_seg_ter_qua_qui_sex_sáb".split("_"),
- weekdaysMin : "dom_2ª_3ª_4ª_5ª_6ª_sáb".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var pt = moment.defineLocale('pt', {
+ months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
+ monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
+ weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
+ weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
+ weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D [de] MMMM [de] YYYY",
- LLL : "D [de] MMMM [de] YYYY LT",
- LLLL : "dddd, D [de] MMMM [de] YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D [de] MMMM [de] YYYY',
+ LLL : 'D [de] MMMM [de] YYYY HH:mm',
+ LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
},
calendar : {
sameDay: '[Hoje às] LT',
@@ -37,24 +37,28 @@
sameElse: 'L'
},
relativeTime : {
- future : "em %s",
- past : "há %s",
- s : "segundos",
- m : "um minuto",
- mm : "%d minutos",
- h : "uma hora",
- hh : "%d horas",
- d : "um dia",
- dd : "%d dias",
- M : "um mês",
- MM : "%d meses",
- y : "um ano",
- yy : "%d anos"
+ future : 'em %s',
+ past : 'há %s',
+ s : 'segundos',
+ m : 'um minuto',
+ mm : '%d minutos',
+ h : 'uma hora',
+ hh : '%d horas',
+ d : 'um dia',
+ dd : '%d dias',
+ M : 'um mês',
+ MM : '%d meses',
+ y : 'um ano',
+ yy : '%d anos'
},
+ ordinalParse: /\d{1,2}º/,
ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return pt;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/pt_BR.js b/lib/javascripts/moment_locale/pt_BR.js
deleted file mode 100644
index 5ffc39ee587..00000000000
--- a/lib/javascripts/moment_locale/pt_BR.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// moment.js language configuration
-// language : brazilian portuguese (pt-br)
-// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-
-moment.lang('pt_BR', {
- months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),
- monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),
- weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),
- weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),
- weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D [de] MMMM [de] YYYY",
- LLL : "D [de] MMMM [de] YYYY LT",
- LLLL : "dddd, D [de] MMMM [de] YYYY LT"
- },
- calendar : {
- sameDay: '[Hoje às] LT',
- nextDay: '[Amanhã às] LT',
- nextWeek: 'dddd [às] LT',
- lastDay: '[Ontem às] LT',
- lastWeek: function () {
- return (this.day() === 0 || this.day() === 6) ?
- '[Último] dddd [às] LT' : // Saturday + Sunday
- '[Última] dddd [às] LT'; // Monday - Friday
- },
- sameElse: 'L'
- },
- relativeTime : {
- future : "em %s",
- past : "%s atrás",
- s : "segundos",
- m : "um minuto",
- mm : "%d minutos",
- h : "uma hora",
- hh : "%d horas",
- d : "um dia",
- dd : "%d dias",
- M : "um mês",
- MM : "%d meses",
- y : "um ano",
- yy : "%d anos"
- },
- ordinal : '%dº'
-});
diff --git a/lib/javascripts/moment_locale/ro.js b/lib/javascripts/moment_locale/ro.js
index 21a3293191a..fb9226758ca 100644
--- a/lib/javascripts/moment_locale/ro.js
+++ b/lib/javascripts/moment_locale/ro.js
@@ -1,17 +1,16 @@
-// moment.js locale configuration
-// locale : romanian (ro)
-// author : Vlad Gurdiga : https://github.com/gurdiga
-// author : Valentin Agachi : https://github.com/avaly
+//! moment.js locale configuration
+//! locale : romanian (ro)
+//! author : Vlad Gurdiga : https://github.com/gurdiga
+//! author : Valentin Agachi : https://github.com/avaly
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': 'minute',
@@ -24,25 +23,25 @@
if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
separator = ' de ';
}
-
return number + separator + format[key];
}
- return moment.defineLocale('ro', {
- months : "ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),
- monthsShort : "ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),
- weekdays : "duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),
- weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),
- weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),
+ var ro = moment.defineLocale('ro', {
+ months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
+ monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
+ weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
+ weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
+ weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY H:mm",
- LLLL : "dddd, D MMMM YYYY H:mm"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY H:mm',
+ LLLL : 'dddd, D MMMM YYYY H:mm'
},
calendar : {
- sameDay: "[azi la] LT",
+ sameDay: '[azi la] LT',
nextDay: '[mâine la] LT',
nextWeek: 'dddd [la] LT',
lastDay: '[ieri la] LT',
@@ -50,18 +49,18 @@
sameElse: 'L'
},
relativeTime : {
- future : "peste %s",
- past : "%s în urmă",
- s : "câteva secunde",
- m : "un minut",
+ future : 'peste %s',
+ past : '%s în urmă',
+ s : 'câteva secunde',
+ m : 'un minut',
mm : relativeTimeWithPlural,
- h : "o oră",
+ h : 'o oră',
hh : relativeTimeWithPlural,
- d : "o zi",
+ d : 'o zi',
dd : relativeTimeWithPlural,
- M : "o lună",
+ M : 'o lună',
MM : relativeTimeWithPlural,
- y : "un an",
+ y : 'un an',
yy : relativeTimeWithPlural
},
week : {
@@ -69,4 +68,7 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return ro;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ru.js b/lib/javascripts/moment_locale/ru.js
index 3ae8d23b7c8..442ddf80031 100644
--- a/lib/javascripts/moment_locale/ru.js
+++ b/lib/javascripts/moment_locale/ru.js
@@ -1,22 +1,20 @@
-// moment.js locale configuration
-// locale : russian (ru)
-// author : Viktorminator : https://github.com/Viktorminator
-// Author : Menelion Elensúle : https://github.com/Oire
+//! moment.js locale configuration
+//! locale : russian (ru)
+//! author : Viktorminator : https://github.com/Viktorminator
+//! Author : Menelion Elensúle : https://github.com/Oire
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function plural(word, num) {
var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
}
-
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
@@ -32,116 +30,116 @@
return number + ' ' + plural(format[key], +number);
}
}
+ var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
- function monthsCaseReplace(m, format) {
- var months = {
- 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
- 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
+ var ru = moment.defineLocale('ru', {
+ months : {
+ format: 'Января_Февраля_Марта_Апреля_Мая_Июня_Июля_Августа_Сентября_Октября_Ноября_Декабря'.split('_'),
+ standalone: 'Январь_Февраль_Март_Апрель_Май_Июнь_Июль_Август_Сентябрь_Октябрь_Ноябрь_Декабрь'.split('_')
},
-
- nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return months[nounCase][m.month()];
- }
-
- function monthsShortCaseReplace(m, format) {
- var monthsShort = {
- 'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
- 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_')
+ monthsShort : {
+ format: 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_'),
+ standalone: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_')
},
-
- nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return monthsShort[nounCase][m.month()];
- }
-
- function weekdaysCaseReplace(m, format) {
- var weekdays = {
- 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
- 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_')
+ weekdays : {
+ standalone: 'Воскресенье_Понедельник_Вторник_Среда_Четверг_Пятница_Суббота'.split('_'),
+ format: 'Воскресенье_Понедельник_Вторник_Среду_Четверг_Пятницу_Субботу'.split('_'),
+ isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
},
-
- nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return weekdays[nounCase][m.day()];
- }
-
- return moment.defineLocale('ru', {
- months : monthsCaseReplace,
- monthsShort : monthsShortCaseReplace,
- weekdays : weekdaysCaseReplace,
- weekdaysShort : "вс_пн_вт_ср_чт_пт_сб".split("_"),
- weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"),
- monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i],
+ weekdaysShort : 'Вс_Пн_Вт_Ср_Чт_Пт_Сб'.split('_'),
+ weekdaysMin : 'Вс_Пн_Вт_Ср_Чт_Пт_Сб'.split('_'),
+ monthsParse : monthsParse,
+ longMonthsParse : monthsParse,
+ shortMonthsParse : monthsParse,
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY г.",
- LLL : "D MMMM YYYY г., LT",
- LLLL : "dddd, D MMMM YYYY г., LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY г.',
+ LLL : 'D MMMM YYYY г., HH:mm',
+ LLLL : 'dddd, D MMMM YYYY г., HH:mm'
},
calendar : {
sameDay: '[Сегодня в] LT',
nextDay: '[Завтра в] LT',
lastDay: '[Вчера в] LT',
- nextWeek: function () {
- return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
+ nextWeek: function (now) {
+ if (now.week() !== this.week()) {
+ switch (this.day()) {
+ case 0:
+ return '[В следующее] dddd [в] LT';
+ case 1:
+ case 2:
+ case 4:
+ return '[В следующий] dddd [в] LT';
+ case 3:
+ case 5:
+ case 6:
+ return '[В следующую] dddd [в] LT';
+ }
+ } else {
+ if (this.day() === 2) {
+ return '[Во] dddd [в] LT';
+ } else {
+ return '[В] dddd [в] LT';
+ }
+ }
},
- lastWeek: function () {
- switch (this.day()) {
- case 0:
- return '[В прошлое] dddd [в] LT';
- case 1:
- case 2:
- case 4:
- return '[В прошлый] dddd [в] LT';
- case 3:
- case 5:
- case 6:
- return '[В прошлую] dddd [в] LT';
+ lastWeek: function (now) {
+ if (now.week() !== this.week()) {
+ switch (this.day()) {
+ case 0:
+ return '[В прошлое] dddd [в] LT';
+ case 1:
+ case 2:
+ case 4:
+ return '[В прошлый] dddd [в] LT';
+ case 3:
+ case 5:
+ case 6:
+ return '[В прошлую] dddd [в] LT';
+ }
+ } else {
+ if (this.day() === 2) {
+ return '[Во] dddd [в] LT';
+ } else {
+ return '[В] dddd [в] LT';
+ }
}
},
sameElse: 'L'
},
relativeTime : {
- future : "через %s",
- past : "%s назад",
- s : "несколько секунд",
+ future : 'через %s',
+ past : '%s назад',
+ s : 'несколько секунд',
m : relativeTimeWithPlural,
mm : relativeTimeWithPlural,
- h : "час",
+ h : 'час',
hh : relativeTimeWithPlural,
- d : "день",
+ d : 'день',
dd : relativeTimeWithPlural,
- M : "месяц",
+ M : 'месяц',
MM : relativeTimeWithPlural,
- y : "год",
+ y : 'год',
yy : relativeTimeWithPlural
},
-
meridiemParse: /ночи|утра|дня|вечера/i,
isPM : function (input) {
return /^(дня|вечера)$/.test(input);
},
-
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
- return "ночи";
+ return 'ночи';
} else if (hour < 12) {
- return "утра";
+ return 'утра';
} else if (hour < 17) {
- return "дня";
+ return 'дня';
} else {
- return "вечера";
+ return 'вечера';
}
},
-
+ ordinalParse: /\d{1,2}-(й|го|я)/,
ordinal: function (number, period) {
switch (period) {
case 'M':
@@ -157,10 +155,12 @@
return number;
}
},
-
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return ru;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/se.js b/lib/javascripts/moment_locale/se.js
new file mode 100644
index 00000000000..06be0d6ba13
--- /dev/null
+++ b/lib/javascripts/moment_locale/se.js
@@ -0,0 +1,61 @@
+//! moment.js locale configuration
+//! locale : Northern Sami (se)
+//! authors : Bård Rolstad Henriksen : https://github.com/karamell
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+
+ var se = moment.defineLocale('se', {
+ months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
+ monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
+ weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
+ weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
+ weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'MMMM D. [b.] YYYY',
+ LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
+ LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
+ },
+ calendar : {
+ sameDay: '[otne ti] LT',
+ nextDay: '[ihttin ti] LT',
+ nextWeek: 'dddd [ti] LT',
+ lastDay: '[ikte ti] LT',
+ lastWeek: '[ovddit] dddd [ti] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : '%s geažes',
+ past : 'maŋit %s',
+ s : 'moadde sekunddat',
+ m : 'okta minuhta',
+ mm : '%d minuhtat',
+ h : 'okta diimmu',
+ hh : '%d diimmut',
+ d : 'okta beaivi',
+ dd : '%d beaivvit',
+ M : 'okta mánnu',
+ MM : '%d mánut',
+ y : 'okta jahki',
+ yy : '%d jagit'
+ },
+ ordinalParse: /\d{1,2}\./,
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ return se;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/si.js b/lib/javascripts/moment_locale/si.js
new file mode 100644
index 00000000000..d86c9e3b8e2
--- /dev/null
+++ b/lib/javascripts/moment_locale/si.js
@@ -0,0 +1,66 @@
+//! moment.js locale configuration
+//! locale : Sinhalese (si)
+//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ /*jshint -W100*/
+ var si = moment.defineLocale('si', {
+ months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
+ monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
+ weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
+ weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'),
+ weekdaysMin : 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'),
+ longDateFormat : {
+ LT : 'a h:mm',
+ LTS : 'a h:mm:ss',
+ L : 'YYYY/MM/DD',
+ LL : 'YYYY MMMM D',
+ LLL : 'YYYY MMMM D, a h:mm',
+ LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
+ },
+ calendar : {
+ sameDay : '[අද] LT[ට]',
+ nextDay : '[හෙට] LT[ට]',
+ nextWeek : 'dddd LT[ට]',
+ lastDay : '[ඊයේ] LT[ට]',
+ lastWeek : '[පසුගිය] dddd LT[ට]',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : '%sකින්',
+ past : '%sකට පෙර',
+ s : 'තත්පර කිහිපය',
+ m : 'මිනිත්තුව',
+ mm : 'මිනිත්තු %d',
+ h : 'පැය',
+ hh : 'පැය %d',
+ d : 'දිනය',
+ dd : 'දින %d',
+ M : 'මාසය',
+ MM : 'මාස %d',
+ y : 'වසර',
+ yy : 'වසර %d'
+ },
+ ordinalParse: /\d{1,2} වැනි/,
+ ordinal : function (number) {
+ return number + ' වැනි';
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'ප.ව.' : 'පස් වරු';
+ } else {
+ return isLower ? 'පෙ.ව.' : 'පෙර වරු';
+ }
+ }
+ });
+
+ return si;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/sk.js b/lib/javascripts/moment_locale/sk.js
index d03fff875b4..52838a3a626 100644
--- a/lib/javascripts/moment_locale/sk.js
+++ b/lib/javascripts/moment_locale/sk.js
@@ -1,26 +1,23 @@
-// moment.js locale configuration
-// locale : slovak (sk)
-// author : Martin Minka : https://github.com/k2s
-// based on work of petrbela : https://github.com/petrbela
+//! moment.js locale configuration
+//! locale : slovak (sk)
+//! author : Martin Minka : https://github.com/k2s
+//! based on work of petrbela : https://github.com/petrbela
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),
- monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+ var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
+ monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
function plural(n) {
return (n > 1) && (n < 5);
}
-
function translate(number, withoutSuffix, key, isFuture) {
- var result = number + " ";
+ var result = number + ' ';
switch (key) {
case 's': // a few seconds / in a few seconds / a few seconds ago
return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
@@ -72,29 +69,22 @@
}
}
- return moment.defineLocale('sk', {
+ var sk = moment.defineLocale('sk', {
months : months,
monthsShort : monthsShort,
- monthsParse : (function (months, monthsShort) {
- var i, _monthsParse = [];
- for (i = 0; i < 12; i++) {
- // use custom parser to solve problem with July (červenec)
- _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
- }
- return _monthsParse;
- }(months, monthsShort)),
- weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),
- weekdaysShort : "ne_po_ut_st_št_pi_so".split("_"),
- weekdaysMin : "ne_po_ut_st_št_pi_so".split("_"),
+ weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
+ weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
+ weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
longDateFormat : {
- LT: "H:mm",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd D. MMMM YYYY LT"
+ LT: 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY H:mm',
+ LLLL : 'dddd D. MMMM YYYY H:mm'
},
calendar : {
- sameDay: "[dnes o] LT",
+ sameDay: '[dnes o] LT',
nextDay: '[zajtra o] LT',
nextWeek: function () {
switch (this.day()) {
@@ -130,11 +120,11 @@
return '[minulú sobotu o] LT';
}
},
- sameElse: "L"
+ sameElse: 'L'
},
relativeTime : {
- future : "za %s",
- past : "pred %s",
+ future : 'za %s',
+ past : 'pred %s',
s : translate,
m : translate,
mm : translate,
@@ -147,10 +137,14 @@
y : translate,
yy : translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return sk;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/sl.js b/lib/javascripts/moment_locale/sl.js
index 6174ae63e2e..68d261e271c 100644
--- a/lib/javascripts/moment_locale/sl.js
+++ b/lib/javascripts/moment_locale/sl.js
@@ -1,89 +1,99 @@
-// moment.js locale configuration
-// locale : slovenian (sl)
-// author : Robert Sedovšek : https://github.com/sedovsek
+//! moment.js locale configuration
+//! locale : slovenian (sl)
+//! author : Robert Sedovšek : https://github.com/sedovsek
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- function translate(number, withoutSuffix, key) {
- var result = number + " ";
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
+ var result = number + ' ';
switch (key) {
+ case 's':
+ return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
case 'm':
return withoutSuffix ? 'ena minuta' : 'eno minuto';
case 'mm':
if (number === 1) {
- result += 'minuta';
+ result += withoutSuffix ? 'minuta' : 'minuto';
} else if (number === 2) {
- result += 'minuti';
- } else if (number === 3 || number === 4) {
- result += 'minute';
+ result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
+ } else if (number < 5) {
+ result += withoutSuffix || isFuture ? 'minute' : 'minutami';
} else {
- result += 'minut';
+ result += withoutSuffix || isFuture ? 'minut' : 'minutami';
}
return result;
case 'h':
return withoutSuffix ? 'ena ura' : 'eno uro';
case 'hh':
if (number === 1) {
- result += 'ura';
+ result += withoutSuffix ? 'ura' : 'uro';
} else if (number === 2) {
- result += 'uri';
- } else if (number === 3 || number === 4) {
- result += 'ure';
+ result += withoutSuffix || isFuture ? 'uri' : 'urama';
+ } else if (number < 5) {
+ result += withoutSuffix || isFuture ? 'ure' : 'urami';
} else {
- result += 'ur';
+ result += withoutSuffix || isFuture ? 'ur' : 'urami';
}
return result;
+ case 'd':
+ return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
case 'dd':
if (number === 1) {
- result += 'dan';
+ result += withoutSuffix || isFuture ? 'dan' : 'dnem';
+ } else if (number === 2) {
+ result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
} else {
- result += 'dni';
+ result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
}
return result;
+ case 'M':
+ return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
case 'MM':
if (number === 1) {
- result += 'mesec';
+ result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
} else if (number === 2) {
- result += 'meseca';
- } else if (number === 3 || number === 4) {
- result += 'mesece';
+ result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
+ } else if (number < 5) {
+ result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
} else {
- result += 'mesecev';
+ result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
}
return result;
+ case 'y':
+ return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
case 'yy':
if (number === 1) {
- result += 'leto';
+ result += withoutSuffix || isFuture ? 'leto' : 'letom';
} else if (number === 2) {
- result += 'leti';
- } else if (number === 3 || number === 4) {
- result += 'leta';
+ result += withoutSuffix || isFuture ? 'leti' : 'letoma';
+ } else if (number < 5) {
+ result += withoutSuffix || isFuture ? 'leta' : 'leti';
} else {
- result += 'let';
+ result += withoutSuffix || isFuture ? 'let' : 'leti';
}
return result;
}
}
- return moment.defineLocale('sl', {
- months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),
- monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
- weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),
- weekdaysShort : "ned._pon._tor._sre._čet._pet._sob.".split("_"),
- weekdaysMin : "ne_po_to_sr_če_pe_so".split("_"),
+ var sl = moment.defineLocale('sl', {
+ months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
+ monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
+ weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
+ weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
+ weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
longDateFormat : {
- LT : "H:mm",
- L : "DD. MM. YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
+ LT : 'H:mm',
+ LTS : 'H:mm:ss',
+ L : 'DD. MM. YYYY',
+ LL : 'D. MMMM YYYY',
+ LLL : 'D. MMMM YYYY H:mm',
+ LLLL : 'dddd, D. MMMM YYYY H:mm'
},
calendar : {
sameDay : '[danes ob] LT',
@@ -108,9 +118,11 @@
lastWeek : function () {
switch (this.day()) {
case 0:
+ return '[prejšnjo] [nedeljo] [ob] LT';
case 3:
+ return '[prejšnjo] [sredo] [ob] LT';
case 6:
- return '[prejšnja] dddd [ob] LT';
+ return '[prejšnjo] [soboto] [ob] LT';
case 1:
case 2:
case 4:
@@ -121,24 +133,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "čez %s",
- past : "%s nazaj",
- s : "nekaj sekund",
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : "en dan",
- dd : translate,
- M : "en mesec",
- MM : translate,
- y : "eno leto",
- yy : translate
+ future : 'čez %s',
+ past : 'pred %s',
+ s : processRelativeTime,
+ m : processRelativeTime,
+ mm : processRelativeTime,
+ h : processRelativeTime,
+ hh : processRelativeTime,
+ d : processRelativeTime,
+ dd : processRelativeTime,
+ M : processRelativeTime,
+ MM : processRelativeTime,
+ y : processRelativeTime,
+ yy : processRelativeTime
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return sl;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/sq.js b/lib/javascripts/moment_locale/sq.js
index 4a3dfea725a..69dca2017cc 100644
--- a/lib/javascripts/moment_locale/sq.js
+++ b/lib/javascripts/moment_locale/sq.js
@@ -1,33 +1,37 @@
-// moment.js locale configuration
-// locale : Albanian (sq)
-// author : Flakërim Ismani : https://github.com/flakerimi
-// author: Menelion Elensúle: https://github.com/Oire (tests)
-// author : Oerd Cukalla : https://github.com/oerd (fixes)
+//! moment.js locale configuration
+//! locale : Albanian (sq)
+//! author : Flakërim Ismani : https://github.com/flakerimi
+//! author: Menelion Elensúle: https://github.com/Oire (tests)
+//! author : Oerd Cukalla : https://github.com/oerd (fixes)
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('sq', {
- months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),
- monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),
- weekdays : "E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),
- weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),
- weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var sq = moment.defineLocale('sq', {
+ months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
+ monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
+ weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
+ weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
+ weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
+ meridiemParse: /PD|MD/,
+ isPM: function (input) {
+ return input.charAt(0) === 'M';
+ },
meridiem : function (hours, minutes, isLower) {
return hours < 12 ? 'PD' : 'MD';
},
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay : '[Sot në] LT',
@@ -38,24 +42,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "në %s",
- past : "%s më parë",
- s : "disa sekonda",
- m : "një minutë",
- mm : "%d minuta",
- h : "një orë",
- hh : "%d orë",
- d : "një ditë",
- dd : "%d ditë",
- M : "një muaj",
- MM : "%d muaj",
- y : "një vit",
- yy : "%d vite"
+ future : 'në %s',
+ past : '%s më parë',
+ s : 'disa sekonda',
+ m : 'një minutë',
+ mm : '%d minuta',
+ h : 'një orë',
+ hh : '%d orë',
+ d : 'një ditë',
+ dd : '%d ditë',
+ M : 'një muaj',
+ MM : '%d muaj',
+ y : 'një vit',
+ yy : '%d vite'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return sq;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/sr-cyrl.js b/lib/javascripts/moment_locale/sr-cyrl.js
index ef6e7ce4bbc..c72cca77076 100644
--- a/lib/javascripts/moment_locale/sr-cyrl.js
+++ b/lib/javascripts/moment_locale/sr-cyrl.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : Serbian-cyrillic (sr-cyrl)
-// author : Milan Janačković : https://github.com/milan-j
+//! moment.js locale configuration
+//! locale : Serbian-cyrillic (sr-cyrl)
+//! author : Milan Janačković : https://github.com/milan-j
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var translator = {
words: { //Different grammatical cases
m: ['један минут', 'једне минуте'],
@@ -34,23 +33,23 @@
}
};
- return moment.defineLocale('sr-cyrl', {
+ var sr_cyrl = moment.defineLocale('sr-cyrl', {
months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
longDateFormat: {
- LT: "H:mm",
- L: "DD. MM. YYYY",
- LL: "D. MMMM YYYY",
- LLL: "D. MMMM YYYY LT",
- LLLL: "dddd, D. MMMM YYYY LT"
+ LT: 'H:mm',
+ LTS : 'H:mm:ss',
+ L: 'DD. MM. YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
},
calendar: {
sameDay: '[данас у] LT',
nextDay: '[сутра у] LT',
-
nextWeek: function () {
switch (this.day()) {
case 0:
@@ -82,24 +81,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "за %s",
- past : "пре %s",
- s : "неколико секунди",
+ future : 'за %s',
+ past : 'пре %s',
+ s : 'неколико секунди',
m : translator.translate,
mm : translator.translate,
h : translator.translate,
hh : translator.translate,
- d : "дан",
+ d : 'дан',
dd : translator.translate,
- M : "месец",
+ M : 'месец',
MM : translator.translate,
- y : "годину",
+ y : 'годину',
yy : translator.translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return sr_cyrl;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/sr.js b/lib/javascripts/moment_locale/sr.js
index 86e8e84a6bf..4dab6f48ce3 100644
--- a/lib/javascripts/moment_locale/sr.js
+++ b/lib/javascripts/moment_locale/sr.js
@@ -1,16 +1,15 @@
-// moment.js locale configuration
-// locale : Serbian-latin (sr)
-// author : Milan Janačković : https://github.com/milan-j
+//! moment.js locale configuration
+//! locale : Serbian-latin (sr)
+//! author : Milan Janačković : https://github.com/milan-j
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var translator = {
words: { //Different grammatical cases
m: ['jedan minut', 'jedne minute'],
@@ -34,23 +33,23 @@
}
};
- return moment.defineLocale('sr', {
+ var sr = moment.defineLocale('sr', {
months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'],
weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
longDateFormat: {
- LT: "H:mm",
- L: "DD. MM. YYYY",
- LL: "D. MMMM YYYY",
- LLL: "D. MMMM YYYY LT",
- LLLL: "dddd, D. MMMM YYYY LT"
+ LT: 'H:mm',
+ LTS : 'H:mm:ss',
+ L: 'DD. MM. YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
},
calendar: {
sameDay: '[danas u] LT',
nextDay: '[sutra u] LT',
-
nextWeek: function () {
switch (this.day()) {
case 0:
@@ -82,24 +81,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "za %s",
- past : "pre %s",
- s : "nekoliko sekundi",
+ future : 'za %s',
+ past : 'pre %s',
+ s : 'nekoliko sekundi',
m : translator.translate,
mm : translator.translate,
h : translator.translate,
hh : translator.translate,
- d : "dan",
+ d : 'dan',
dd : translator.translate,
- M : "mesec",
+ M : 'mesec',
MM : translator.translate,
- y : "godinu",
+ y : 'godinu',
yy : translator.translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return sr;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/sv.js b/lib/javascripts/moment_locale/sv.js
index 9e39a30109a..5af3bb72c46 100644
--- a/lib/javascripts/moment_locale/sv.js
+++ b/lib/javascripts/moment_locale/sv.js
@@ -1,52 +1,53 @@
-// moment.js locale configuration
-// locale : swedish (sv)
-// author : Jens Alm : https://github.com/ulmus
+//! moment.js locale configuration
+//! locale : swedish (sv)
+//! author : Jens Alm : https://github.com/ulmus
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('sv', {
- months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),
- monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
- weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),
- weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"),
- weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var sv = moment.defineLocale('sv', {
+ months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
+ monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+ weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
+ weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
+ weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'YYYY-MM-DD',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[Idag] LT',
nextDay: '[Imorgon] LT',
lastDay: '[Igår] LT',
- nextWeek: 'dddd LT',
- lastWeek: '[Förra] dddd[en] LT',
+ nextWeek: '[På] dddd LT',
+ lastWeek: '[I] dddd[s] LT',
sameElse: 'L'
},
relativeTime : {
- future : "om %s",
- past : "för %s sedan",
- s : "några sekunder",
- m : "en minut",
- mm : "%d minuter",
- h : "en timme",
- hh : "%d timmar",
- d : "en dag",
- dd : "%d dagar",
- M : "en månad",
- MM : "%d månader",
- y : "ett år",
- yy : "%d år"
+ future : 'om %s',
+ past : 'för %s sedan',
+ s : 'några sekunder',
+ m : 'en minut',
+ mm : '%d minuter',
+ h : 'en timme',
+ hh : '%d timmar',
+ d : 'en dag',
+ dd : '%d dagar',
+ M : 'en månad',
+ MM : '%d månader',
+ y : 'ett år',
+ yy : '%d år'
},
+ ordinalParse: /\d{1,2}(e|a)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'e' :
@@ -60,4 +61,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return sv;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/sw.js b/lib/javascripts/moment_locale/sw.js
new file mode 100644
index 00000000000..8017f7d4736
--- /dev/null
+++ b/lib/javascripts/moment_locale/sw.js
@@ -0,0 +1,58 @@
+//! moment.js locale configuration
+//! locale : swahili (sw)
+//! author : Fahad Kassim : https://github.com/fadsel
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var sw = moment.defineLocale('sw', {
+ months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
+ monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
+ weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
+ weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
+ weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
+ },
+ calendar : {
+ sameDay : '[leo saa] LT',
+ nextDay : '[kesho saa] LT',
+ nextWeek : '[wiki ijayo] dddd [saat] LT',
+ lastDay : '[jana] LT',
+ lastWeek : '[wiki iliyopita] dddd [saat] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : '%s baadaye',
+ past : 'tokea %s',
+ s : 'hivi punde',
+ m : 'dakika moja',
+ mm : 'dakika %d',
+ h : 'saa limoja',
+ hh : 'masaa %d',
+ d : 'siku moja',
+ dd : 'masiku %d',
+ M : 'mwezi mmoja',
+ MM : 'miezi %d',
+ y : 'mwaka mmoja',
+ yy : 'miaka %d'
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ return sw;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/ta.js b/lib/javascripts/moment_locale/ta.js
index 963d40349f4..27665095542 100644
--- a/lib/javascripts/moment_locale/ta.js
+++ b/lib/javascripts/moment_locale/ta.js
@@ -1,53 +1,52 @@
-// moment.js locale configuration
-// locale : tamil (ta)
-// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
+//! moment.js locale configuration
+//! locale : tamil (ta)
+//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- /*var symbolMap = {
- '1': '௧',
- '2': '௨',
- '3': '௩',
- '4': '௪',
- '5': '௫',
- '6': '௬',
- '7': '௭',
- '8': '௮',
- '9': '௯',
- '0': '௦'
- },
- numberMap = {
- '௧': '1',
- '௨': '2',
- '௩': '3',
- '௪': '4',
- '௫': '5',
- '௬': '6',
- '௭': '7',
- '௮': '8',
- '௯': '9',
- '௦': '0'
- }; */
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
- return moment.defineLocale('ta', {
- months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"),
- monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"),
- weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split("_"),
- weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split("_"),
- weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split("_"),
+
+ var symbolMap = {
+ '1': '௧',
+ '2': '௨',
+ '3': '௩',
+ '4': '௪',
+ '5': '௫',
+ '6': '௬',
+ '7': '௭',
+ '8': '௮',
+ '9': '௯',
+ '0': '௦'
+ }, numberMap = {
+ '௧': '1',
+ '௨': '2',
+ '௩': '3',
+ '௪': '4',
+ '௫': '5',
+ '௬': '6',
+ '௭': '7',
+ '௮': '8',
+ '௯': '9',
+ '௦': '0'
+ };
+
+ var ta = moment.defineLocale('ta', {
+ months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
+ monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
+ weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
+ weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
+ weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY, HH:mm',
+ LLLL : 'dddd, D MMMM YYYY, HH:mm'
},
calendar : {
sameDay : '[இன்று] LT',
@@ -58,21 +57,25 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s இல்",
- past : "%s முன்",
- s : "ஒரு சில விநாடிகள்",
- m : "ஒரு நிமிடம்",
- mm : "%d நிமிடங்கள்",
- h : "ஒரு மணி நேரம்",
- hh : "%d மணி நேரம்",
- d : "ஒரு நாள்",
- dd : "%d நாட்கள்",
- M : "ஒரு மாதம்",
- MM : "%d மாதங்கள்",
- y : "ஒரு வருடம்",
- yy : "%d ஆண்டுகள்"
+ future : '%s இல்',
+ past : '%s முன்',
+ s : 'ஒரு சில விநாடிகள்',
+ m : 'ஒரு நிமிடம்',
+ mm : '%d நிமிடங்கள்',
+ h : 'ஒரு மணி நேரம்',
+ hh : '%d மணி நேரம்',
+ d : 'ஒரு நாள்',
+ dd : '%d நாட்கள்',
+ M : 'ஒரு மாதம்',
+ MM : '%d மாதங்கள்',
+ y : 'ஒரு வருடம்',
+ yy : '%d ஆண்டுகள்'
},
-/* preparse: function (string) {
+ ordinalParse: /\d{1,2}வது/,
+ ordinal : function (number) {
+ return number + 'வது';
+ },
+ preparse: function (string) {
return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
return numberMap[match];
});
@@ -81,27 +84,38 @@
return string.replace(/\d/g, function (match) {
return symbolMap[match];
});
- },*/
- ordinal : function (number) {
- return number + 'வது';
},
-
-
// refer http://ta.wikipedia.org/s/1er1
-
+ meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
meridiem : function (hour, minute, isLower) {
- if (hour >= 6 && hour <= 10) {
- return " காலை";
- } else if (hour >= 10 && hour <= 14) {
- return " நண்பகல்";
- } else if (hour >= 14 && hour <= 18) {
- return " எற்பாடு";
- } else if (hour >= 18 && hour <= 20) {
- return " மாலை";
- } else if (hour >= 20 && hour <= 24) {
- return " இரவு";
- } else if (hour >= 0 && hour <= 6) {
- return " வைகறை";
+ if (hour < 2) {
+ return ' யாமம்';
+ } else if (hour < 6) {
+ return ' வைகறை'; // வைகறை
+ } else if (hour < 10) {
+ return ' காலை'; // காலை
+ } else if (hour < 14) {
+ return ' நண்பகல்'; // நண்பகல்
+ } else if (hour < 18) {
+ return ' எற்பாடு'; // எற்பாடு
+ } else if (hour < 22) {
+ return ' மாலை'; // மாலை
+ } else {
+ return ' யாமம்';
+ }
+ },
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'யாமம்') {
+ return hour < 2 ? hour : hour + 12;
+ } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
+ return hour;
+ } else if (meridiem === 'நண்பகல்') {
+ return hour >= 10 ? hour : hour + 12;
+ } else {
+ return hour + 12;
}
},
week : {
@@ -109,4 +123,7 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return ta;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/te.js b/lib/javascripts/moment_locale/te.js
new file mode 100644
index 00000000000..775651df177
--- /dev/null
+++ b/lib/javascripts/moment_locale/te.js
@@ -0,0 +1,88 @@
+//! moment.js locale configuration
+//! locale : telugu (te)
+//! author : Krishna Chaitanya Thota : https://github.com/kcthota
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var te = moment.defineLocale('te', {
+ months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
+ monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
+ weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
+ weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
+ weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
+ longDateFormat : {
+ LT : 'A h:mm',
+ LTS : 'A h:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY, A h:mm',
+ LLLL : 'dddd, D MMMM YYYY, A h:mm'
+ },
+ calendar : {
+ sameDay : '[నేడు] LT',
+ nextDay : '[రేపు] LT',
+ nextWeek : 'dddd, LT',
+ lastDay : '[నిన్న] LT',
+ lastWeek : '[గత] dddd, LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : '%s లో',
+ past : '%s క్రితం',
+ s : 'కొన్ని క్షణాలు',
+ m : 'ఒక నిమిషం',
+ mm : '%d నిమిషాలు',
+ h : 'ఒక గంట',
+ hh : '%d గంటలు',
+ d : 'ఒక రోజు',
+ dd : '%d రోజులు',
+ M : 'ఒక నెల',
+ MM : '%d నెలలు',
+ y : 'ఒక సంవత్సరం',
+ yy : '%d సంవత్సరాలు'
+ },
+ ordinalParse : /\d{1,2}వ/,
+ ordinal : '%dవ',
+ meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'రాత్రి') {
+ return hour < 4 ? hour : hour + 12;
+ } else if (meridiem === 'ఉదయం') {
+ return hour;
+ } else if (meridiem === 'మధ్యాహ్నం') {
+ return hour >= 10 ? hour : hour + 12;
+ } else if (meridiem === 'సాయంత్రం') {
+ return hour + 12;
+ }
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 4) {
+ return 'రాత్రి';
+ } else if (hour < 10) {
+ return 'ఉదయం';
+ } else if (hour < 17) {
+ return 'మధ్యాహ్నం';
+ } else if (hour < 20) {
+ return 'సాయంత్రం';
+ } else {
+ return 'రాత్రి';
+ }
+ },
+ week : {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ return te;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/th.js b/lib/javascripts/moment_locale/th.js
index 30b41e69aa0..ac325429dfb 100644
--- a/lib/javascripts/moment_locale/th.js
+++ b/lib/javascripts/moment_locale/th.js
@@ -1,34 +1,38 @@
-// moment.js locale configuration
-// locale : thai (th)
-// author : Kridsada Thanabulpong : https://github.com/sirn
+//! moment.js locale configuration
+//! locale : thai (th)
+//! author : Kridsada Thanabulpong : https://github.com/sirn
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('th', {
- months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),
- monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),
- weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),
- weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), // yes, three characters difference
- weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var th = moment.defineLocale('th', {
+ months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
+ monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'),
+ weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
+ weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
+ weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
longDateFormat : {
- LT : "H นาฬิกา m นาที",
- L : "YYYY/MM/DD",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY เวลา LT",
- LLLL : "วันddddที่ D MMMM YYYY เวลา LT"
+ LT : 'H นาฬิกา m นาที',
+ LTS : 'H นาฬิกา m นาที s วินาที',
+ L : 'YYYY/MM/DD',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที',
+ LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที'
+ },
+ meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
+ isPM: function (input) {
+ return input === 'หลังเที่ยง';
},
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
- return "ก่อนเที่ยง";
+ return 'ก่อนเที่ยง';
} else {
- return "หลังเที่ยง";
+ return 'หลังเที่ยง';
}
},
calendar : {
@@ -40,19 +44,22 @@
sameElse : 'L'
},
relativeTime : {
- future : "อีก %s",
- past : "%sที่แล้ว",
- s : "ไม่กี่วินาที",
- m : "1 นาที",
- mm : "%d นาที",
- h : "1 ชั่วโมง",
- hh : "%d ชั่วโมง",
- d : "1 วัน",
- dd : "%d วัน",
- M : "1 เดือน",
- MM : "%d เดือน",
- y : "1 ปี",
- yy : "%d ปี"
+ future : 'อีก %s',
+ past : '%sที่แล้ว',
+ s : 'ไม่กี่วินาที',
+ m : '1 นาที',
+ mm : '%d นาที',
+ h : '1 ชั่วโมง',
+ hh : '%d ชั่วโมง',
+ d : '1 วัน',
+ dd : '%d วัน',
+ M : '1 เดือน',
+ MM : '%d เดือน',
+ y : '1 ปี',
+ yy : '%d ปี'
}
});
-}));
+
+ return th;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/tl-ph.js b/lib/javascripts/moment_locale/tl-ph.js
index dfacf18df33..d101fd92567 100644
--- a/lib/javascripts/moment_locale/tl-ph.js
+++ b/lib/javascripts/moment_locale/tl-ph.js
@@ -1,31 +1,31 @@
-// moment.js locale configuration
-// locale : Tagalog/Filipino (tl-ph)
-// author : Dan Hagman
+//! moment.js locale configuration
+//! locale : Tagalog/Filipino (tl-ph)
+//! author : Dan Hagman
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('tl-ph', {
- months : "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),
- monthsShort : "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),
- weekdays : "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),
- weekdaysShort : "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),
- weekdaysMin : "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var tl_ph = moment.defineLocale('tl-ph', {
+ months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
+ monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
+ weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
+ weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
+ weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "MM/D/YYYY",
- LL : "MMMM D, YYYY",
- LLL : "MMMM D, YYYY LT",
- LLLL : "dddd, MMMM DD, YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'MM/D/YYYY',
+ LL : 'MMMM D, YYYY',
+ LLL : 'MMMM D, YYYY HH:mm',
+ LLLL : 'dddd, MMMM DD, YYYY HH:mm'
},
calendar : {
- sameDay: "[Ngayon sa] LT",
+ sameDay: '[Ngayon sa] LT',
nextDay: '[Bukas sa] LT',
nextWeek: 'dddd [sa] LT',
lastDay: '[Kahapon sa] LT',
@@ -33,20 +33,21 @@
sameElse: 'L'
},
relativeTime : {
- future : "sa loob ng %s",
- past : "%s ang nakalipas",
- s : "ilang segundo",
- m : "isang minuto",
- mm : "%d minuto",
- h : "isang oras",
- hh : "%d oras",
- d : "isang araw",
- dd : "%d araw",
- M : "isang buwan",
- MM : "%d buwan",
- y : "isang taon",
- yy : "%d taon"
+ future : 'sa loob ng %s',
+ past : '%s ang nakalipas',
+ s : 'ilang segundo',
+ m : 'isang minuto',
+ mm : '%d minuto',
+ h : 'isang oras',
+ hh : '%d oras',
+ d : 'isang araw',
+ dd : '%d araw',
+ M : 'isang buwan',
+ MM : '%d buwan',
+ y : 'isang taon',
+ yy : '%d taon'
},
+ ordinalParse: /\d{1,2}/,
ordinal : function (number) {
return number;
},
@@ -55,4 +56,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return tl_ph;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/tlh.js b/lib/javascripts/moment_locale/tlh.js
new file mode 100644
index 00000000000..4ae53ef719d
--- /dev/null
+++ b/lib/javascripts/moment_locale/tlh.js
@@ -0,0 +1,119 @@
+//! moment.js locale configuration
+//! locale : Klingon (tlh)
+//! author : Dominika Kruk : https://github.com/amaranthrose
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
+
+ function translateFuture(output) {
+ var time = output;
+ time = (output.indexOf('jaj') !== -1) ?
+ time.slice(0, -3) + 'leS' :
+ (output.indexOf('jar') !== -1) ?
+ time.slice(0, -3) + 'waQ' :
+ (output.indexOf('DIS') !== -1) ?
+ time.slice(0, -3) + 'nem' :
+ time + ' pIq';
+ return time;
+ }
+
+ function translatePast(output) {
+ var time = output;
+ time = (output.indexOf('jaj') !== -1) ?
+ time.slice(0, -3) + 'Hu’' :
+ (output.indexOf('jar') !== -1) ?
+ time.slice(0, -3) + 'wen' :
+ (output.indexOf('DIS') !== -1) ?
+ time.slice(0, -3) + 'ben' :
+ time + ' ret';
+ return time;
+ }
+
+ function translate(number, withoutSuffix, string, isFuture) {
+ var numberNoun = numberAsNoun(number);
+ switch (string) {
+ case 'mm':
+ return numberNoun + ' tup';
+ case 'hh':
+ return numberNoun + ' rep';
+ case 'dd':
+ return numberNoun + ' jaj';
+ case 'MM':
+ return numberNoun + ' jar';
+ case 'yy':
+ return numberNoun + ' DIS';
+ }
+ }
+
+ function numberAsNoun(number) {
+ var hundred = Math.floor((number % 1000) / 100),
+ ten = Math.floor((number % 100) / 10),
+ one = number % 10,
+ word = '';
+ if (hundred > 0) {
+ word += numbersNouns[hundred] + 'vatlh';
+ }
+ if (ten > 0) {
+ word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
+ }
+ if (one > 0) {
+ word += ((word !== '') ? ' ' : '') + numbersNouns[one];
+ }
+ return (word === '') ? 'pagh' : word;
+ }
+
+ var tlh = moment.defineLocale('tlh', {
+ months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),
+ monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),
+ weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
+ weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
+ weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
+ },
+ calendar : {
+ sameDay: '[DaHjaj] LT',
+ nextDay: '[wa’leS] LT',
+ nextWeek: 'LLL',
+ lastDay: '[wa’Hu’] LT',
+ lastWeek: 'LLL',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : translateFuture,
+ past : translatePast,
+ s : 'puS lup',
+ m : 'wa’ tup',
+ mm : translate,
+ h : 'wa’ rep',
+ hh : translate,
+ d : 'wa’ jaj',
+ dd : translate,
+ M : 'wa’ jar',
+ MM : translate,
+ y : 'wa’ DIS',
+ yy : translate
+ },
+ ordinalParse: /\d{1,2}\./,
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ return tlh;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/tr.js b/lib/javascripts/moment_locale/tr.js
index e6c2adab7cf..638edbb0252 100644
--- a/lib/javascripts/moment_locale/tr.js
+++ b/lib/javascripts/moment_locale/tr.js
@@ -1,55 +1,50 @@
-// moment.js locale configuration
-// locale : turkish (tr)
-// authors : Erhan Gundogan : https://github.com/erhangundogan,
-// Burak Yiğit Kaya: https://github.com/BYK
+//! moment.js locale configuration
+//! locale : turkish (tr)
+//! authors : Erhan Gundogan : https://github.com/erhangundogan,
+//! Burak Yiğit Kaya: https://github.com/BYK
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
var suffixes = {
- 1: "'inci",
- 5: "'inci",
- 8: "'inci",
- 70: "'inci",
- 80: "'inci",
-
- 2: "'nci",
- 7: "'nci",
- 20: "'nci",
- 50: "'nci",
-
- 3: "'üncü",
- 4: "'üncü",
- 100: "'üncü",
-
- 6: "'ncı",
-
- 9: "'uncu",
- 10: "'uncu",
- 30: "'uncu",
-
- 60: "'ıncı",
- 90: "'ıncı"
+ 1: '\'inci',
+ 5: '\'inci',
+ 8: '\'inci',
+ 70: '\'inci',
+ 80: '\'inci',
+ 2: '\'nci',
+ 7: '\'nci',
+ 20: '\'nci',
+ 50: '\'nci',
+ 3: '\'üncü',
+ 4: '\'üncü',
+ 100: '\'üncü',
+ 6: '\'ncı',
+ 9: '\'uncu',
+ 10: '\'uncu',
+ 30: '\'uncu',
+ 60: '\'ıncı',
+ 90: '\'ıncı'
};
- return moment.defineLocale('tr', {
- months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),
- monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),
- weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),
- weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),
- weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),
+ var tr = moment.defineLocale('tr', {
+ months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
+ monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
+ weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
+ weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
+ weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay : '[bugün saat] LT',
@@ -60,28 +55,28 @@
sameElse : 'L'
},
relativeTime : {
- future : "%s sonra",
- past : "%s önce",
- s : "birkaç saniye",
- m : "bir dakika",
- mm : "%d dakika",
- h : "bir saat",
- hh : "%d saat",
- d : "bir gün",
- dd : "%d gün",
- M : "bir ay",
- MM : "%d ay",
- y : "bir yıl",
- yy : "%d yıl"
+ future : '%s sonra',
+ past : '%s önce',
+ s : 'birkaç saniye',
+ m : 'bir dakika',
+ mm : '%d dakika',
+ h : 'bir saat',
+ hh : '%d saat',
+ d : 'bir gün',
+ dd : '%d gün',
+ M : 'bir ay',
+ MM : '%d ay',
+ y : 'bir yıl',
+ yy : '%d yıl'
},
+ ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
ordinal : function (number) {
if (number === 0) { // special case for zero
- return number + "'ıncı";
+ return number + '\'ıncı';
}
var a = number % 10,
b = number % 100 - a,
c = number >= 100 ? 100 : null;
-
return number + (suffixes[a] || suffixes[b] || suffixes[c]);
},
week : {
@@ -89,4 +84,7 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return tr;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/tzl.js b/lib/javascripts/moment_locale/tzl.js
new file mode 100644
index 00000000000..498f7c040ef
--- /dev/null
+++ b/lib/javascripts/moment_locale/tzl.js
@@ -0,0 +1,87 @@
+//! moment.js locale configuration
+//! locale : talossan (tzl)
+//! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+
+ // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
+ // This is currently too difficult (maybe even impossible) to add.
+ var tzl = moment.defineLocale('tzl', {
+ months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
+ monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
+ weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
+ weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
+ weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
+ longDateFormat : {
+ LT : 'HH.mm',
+ LTS : 'HH.mm.ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D. MMMM [dallas] YYYY',
+ LLL : 'D. MMMM [dallas] YYYY HH.mm',
+ LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'd\'o' : 'D\'O';
+ } else {
+ return isLower ? 'd\'a' : 'D\'A';
+ }
+ },
+ calendar : {
+ sameDay : '[oxhi à] LT',
+ nextDay : '[demà à] LT',
+ nextWeek : 'dddd [à] LT',
+ lastDay : '[ieiri à] LT',
+ lastWeek : '[sür el] dddd [lasteu à] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'osprei %s',
+ past : 'ja%s',
+ s : processRelativeTime,
+ m : processRelativeTime,
+ mm : processRelativeTime,
+ h : processRelativeTime,
+ hh : processRelativeTime,
+ d : processRelativeTime,
+ dd : processRelativeTime,
+ M : processRelativeTime,
+ MM : processRelativeTime,
+ y : processRelativeTime,
+ yy : processRelativeTime
+ },
+ ordinalParse: /\d{1,2}\./,
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
+ var format = {
+ 's': ['viensas secunds', '\'iensas secunds'],
+ 'm': ['\'n míut', '\'iens míut'],
+ 'mm': [number + ' míuts', '' + number + ' míuts'],
+ 'h': ['\'n þora', '\'iensa þora'],
+ 'hh': [number + ' þoras', '' + number + ' þoras'],
+ 'd': ['\'n ziua', '\'iensa ziua'],
+ 'dd': [number + ' ziuas', '' + number + ' ziuas'],
+ 'M': ['\'n mes', '\'iens mes'],
+ 'MM': [number + ' mesen', '' + number + ' mesen'],
+ 'y': ['\'n ar', '\'iens ar'],
+ 'yy': [number + ' ars', '' + number + ' ars']
+ };
+ return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
+ }
+
+ return tzl;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/tzm-latn.js b/lib/javascripts/moment_locale/tzm-latn.js
index 1411e161b3c..712f5f5e418 100644
--- a/lib/javascripts/moment_locale/tzm-latn.js
+++ b/lib/javascripts/moment_locale/tzm-latn.js
@@ -1,31 +1,31 @@
-// moment.js locale configuration
-// locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
-// author : Abdel Said : https://github.com/abdelsaid
+//! moment.js locale configuration
+//! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
+//! author : Abdel Said : https://github.com/abdelsaid
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('tzm-latn', {
- months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
- monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
- weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
- weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
- weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var tzm_latn = moment.defineLocale('tzm-latn', {
+ months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
+ monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
+ weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+ weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+ weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
- sameDay: "[asdkh g] LT",
+ sameDay: '[asdkh g] LT',
nextDay: '[aska g] LT',
nextWeek: 'dddd [g] LT',
lastDay: '[assant g] LT',
@@ -33,23 +33,26 @@
sameElse: 'L'
},
relativeTime : {
- future : "dadkh s yan %s",
- past : "yan %s",
- s : "imik",
- m : "minuḍ",
- mm : "%d minuḍ",
- h : "saɛa",
- hh : "%d tassaɛin",
- d : "ass",
- dd : "%d ossan",
- M : "ayowr",
- MM : "%d iyyirn",
- y : "asgas",
- yy : "%d isgasn"
+ future : 'dadkh s yan %s',
+ past : 'yan %s',
+ s : 'imik',
+ m : 'minuḍ',
+ mm : '%d minuḍ',
+ h : 'saɛa',
+ hh : '%d tassaɛin',
+ d : 'ass',
+ dd : '%d ossan',
+ M : 'ayowr',
+ MM : '%d iyyirn',
+ y : 'asgas',
+ yy : '%d isgasn'
},
week : {
dow : 6, // Saturday is the first day of the week.
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return tzm_latn;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/tzm.js b/lib/javascripts/moment_locale/tzm.js
index 615eb979cda..6b8acc08ee4 100644
--- a/lib/javascripts/moment_locale/tzm.js
+++ b/lib/javascripts/moment_locale/tzm.js
@@ -1,31 +1,31 @@
-// moment.js locale configuration
-// locale : Morocco Central Atlas Tamaziɣt (tzm)
-// author : Abdel Said : https://github.com/abdelsaid
+//! moment.js locale configuration
+//! locale : Morocco Central Atlas Tamaziɣt (tzm)
+//! author : Abdel Said : https://github.com/abdelsaid
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('tzm', {
- months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),
- monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),
- weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
- weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
- weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var tzm = moment.defineLocale('tzm', {
+ months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
+ monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
+ weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+ weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+ weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
+ LT : 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
- sameDay: "[ⴰⵙⴷⵅ ⴴ] LT",
+ sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
nextWeek: 'dddd [ⴴ] LT',
lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
@@ -33,23 +33,26 @@
sameElse: 'L'
},
relativeTime : {
- future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",
- past : "ⵢⴰⵏ %s",
- s : "ⵉⵎⵉⴽ",
- m : "ⵎⵉⵏⵓⴺ",
- mm : "%d ⵎⵉⵏⵓⴺ",
- h : "ⵙⴰⵄⴰ",
- hh : "%d ⵜⴰⵙⵙⴰⵄⵉⵏ",
- d : "ⴰⵙⵙ",
- dd : "%d oⵙⵙⴰⵏ",
- M : "ⴰⵢoⵓⵔ",
- MM : "%d ⵉⵢⵢⵉⵔⵏ",
- y : "ⴰⵙⴳⴰⵙ",
- yy : "%d ⵉⵙⴳⴰⵙⵏ"
+ future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
+ past : 'ⵢⴰⵏ %s',
+ s : 'ⵉⵎⵉⴽ',
+ m : 'ⵎⵉⵏⵓⴺ',
+ mm : '%d ⵎⵉⵏⵓⴺ',
+ h : 'ⵙⴰⵄⴰ',
+ hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
+ d : 'ⴰⵙⵙ',
+ dd : '%d oⵙⵙⴰⵏ',
+ M : 'ⴰⵢoⵓⵔ',
+ MM : '%d ⵉⵢⵢⵉⵔⵏ',
+ y : 'ⴰⵙⴳⴰⵙ',
+ yy : '%d ⵉⵙⴳⴰⵙⵏ'
},
week : {
dow : 6, // Saturday is the first day of the week.
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return tzm;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/uk.js b/lib/javascripts/moment_locale/uk.js
index f27d9f3e311..80c34973c55 100644
--- a/lib/javascripts/moment_locale/uk.js
+++ b/lib/javascripts/moment_locale/uk.js
@@ -1,26 +1,24 @@
-// moment.js locale configuration
-// locale : ukrainian (uk)
-// author : zemlanin : https://github.com/zemlanin
-// Author : Menelion Elensúle : https://github.com/Oire
+//! moment.js locale configuration
+//! locale : ukrainian (uk)
+//! author : zemlanin : https://github.com/zemlanin
+//! Author : Menelion Elensúle : https://github.com/Oire
+
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
function plural(word, num) {
var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
}
-
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
- 'mm': 'хвилина_хвилини_хвилин',
- 'hh': 'година_години_годин',
+ 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
+ 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
'dd': 'день_дні_днів',
'MM': 'місяць_місяці_місяців',
'yy': 'рік_роки_років'
@@ -35,54 +33,41 @@
return number + ' ' + plural(format[key], +number);
}
}
-
- function monthsCaseReplace(m, format) {
- var months = {
- 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'),
- 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_')
- },
-
- nounCase = (/D[oD]? *MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return months[nounCase][m.month()];
- }
-
function weekdaysCaseReplace(m, format) {
var weekdays = {
'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
},
-
nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
'accusative' :
((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
'genitive' :
'nominative');
-
return weekdays[nounCase][m.day()];
}
-
function processHoursFunction(str) {
return function () {
return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
};
}
- return moment.defineLocale('uk', {
- months : monthsCaseReplace,
- monthsShort : "січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),
+ var uk = moment.defineLocale('uk', {
+ months : {
+ 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
+ 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
+ },
+ monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
weekdays : weekdaysCaseReplace,
- weekdaysShort : "нд_пн_вт_ср_чт_пт_сб".split("_"),
- weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"),
+ weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+ weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY р.",
- LLL : "D MMMM YYYY р., LT",
- LLLL : "dddd, D MMMM YYYY р., LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD.MM.YYYY',
+ LL : 'D MMMM YYYY р.',
+ LLL : 'D MMMM YYYY р., HH:mm',
+ LLLL : 'dddd, D MMMM YYYY р., HH:mm'
},
calendar : {
sameDay: processHoursFunction('[Сьогодні '),
@@ -105,35 +90,37 @@
sameElse: 'L'
},
relativeTime : {
- future : "за %s",
- past : "%s тому",
- s : "декілька секунд",
+ future : 'за %s',
+ past : '%s тому',
+ s : 'декілька секунд',
m : relativeTimeWithPlural,
mm : relativeTimeWithPlural,
- h : "годину",
+ h : 'годину',
hh : relativeTimeWithPlural,
- d : "день",
+ d : 'день',
dd : relativeTimeWithPlural,
- M : "місяць",
+ M : 'місяць',
MM : relativeTimeWithPlural,
- y : "рік",
+ y : 'рік',
yy : relativeTimeWithPlural
},
-
// M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-
+ meridiemParse: /ночі|ранку|дня|вечора/,
+ isPM: function (input) {
+ return /^(дня|вечора)$/.test(input);
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
- return "ночі";
+ return 'ночі';
} else if (hour < 12) {
- return "ранку";
+ return 'ранку';
} else if (hour < 17) {
- return "дня";
+ return 'дня';
} else {
- return "вечора";
+ return 'вечора';
}
},
-
+ ordinalParse: /\d{1,2}-(й|го)/,
ordinal: function (number, period) {
switch (period) {
case 'M':
@@ -148,10 +135,12 @@
return number;
}
},
-
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
+
+ return uk;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/uz.js b/lib/javascripts/moment_locale/uz.js
index 7cf541c5279..fcf594e6a77 100644
--- a/lib/javascripts/moment_locale/uz.js
+++ b/lib/javascripts/moment_locale/uz.js
@@ -1,28 +1,28 @@
-// moment.js locale configuration
-// locale : uzbek (uz)
-// author : Sardor Muminov : https://github.com/muminoff
+//! moment.js locale configuration
+//! locale : uzbek (uz)
+//! author : Sardor Muminov : https://github.com/muminoff
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('uz', {
- months : "январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),
- monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),
- weekdays : "Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),
- weekdaysShort : "Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),
- weekdaysMin : "Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var uz = moment.defineLocale('uz', {
+ months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
+ monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
+ weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
+ weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
+ weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "D MMMM YYYY, dddd LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY HH:mm',
+ LLLL : 'D MMMM YYYY, dddd HH:mm'
},
calendar : {
sameDay : '[Бугун соат] LT [да]',
@@ -33,23 +33,26 @@
sameElse : 'L'
},
relativeTime : {
- future : "Якин %s ичида",
- past : "Бир неча %s олдин",
- s : "фурсат",
- m : "бир дакика",
- mm : "%d дакика",
- h : "бир соат",
- hh : "%d соат",
- d : "бир кун",
- dd : "%d кун",
- M : "бир ой",
- MM : "%d ой",
- y : "бир йил",
- yy : "%d йил"
+ future : 'Якин %s ичида',
+ past : 'Бир неча %s олдин',
+ s : 'фурсат',
+ m : 'бир дакика',
+ mm : '%d дакика',
+ h : 'бир соат',
+ hh : '%d соат',
+ d : 'бир кун',
+ dd : '%d кун',
+ M : 'бир ой',
+ MM : '%d ой',
+ y : 'бир йил',
+ yy : '%d йил'
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return uz;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/vi.js b/lib/javascripts/moment_locale/vi.js
index 3f8f5f5afc0..0e7ba8c353f 100644
--- a/lib/javascripts/moment_locale/vi.js
+++ b/lib/javascripts/moment_locale/vi.js
@@ -1,35 +1,35 @@
-// moment.js locale configuration
-// locale : vietnamese (vi)
-// author : Bang Nguyen : https://github.com/bangnk
+//! moment.js locale configuration
+//! locale : vietnamese (vi)
+//! author : Bang Nguyen : https://github.com/bangnk
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('vi', {
- months : "tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),
- monthsShort : "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),
- weekdays : "chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),
- weekdaysShort : "CN_T2_T3_T4_T5_T6_T7".split("_"),
- weekdaysMin : "CN_T2_T3_T4_T5_T6_T7".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var vi = moment.defineLocale('vi', {
+ months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
+ monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
+ weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
+ weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
+ weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM [năm] YYYY",
- LLL : "D MMMM [năm] YYYY LT",
- LLLL : "dddd, D MMMM [năm] YYYY LT",
- l : "DD/M/YYYY",
- ll : "D MMM YYYY",
- lll : "D MMM YYYY LT",
- llll : "ddd, D MMM YYYY LT"
+ LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM [năm] YYYY',
+ LLL : 'D MMMM [năm] YYYY HH:mm',
+ LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
+ l : 'DD/M/YYYY',
+ ll : 'D MMM YYYY',
+ lll : 'D MMM YYYY HH:mm',
+ llll : 'ddd, D MMM YYYY HH:mm'
},
calendar : {
- sameDay: "[Hôm nay lúc] LT",
+ sameDay: '[Hôm nay lúc] LT',
nextDay: '[Ngày mai lúc] LT',
nextWeek: 'dddd [tuần tới lúc] LT',
lastDay: '[Hôm qua lúc] LT',
@@ -37,20 +37,21 @@
sameElse: 'L'
},
relativeTime : {
- future : "%s tới",
- past : "%s trước",
- s : "vài giây",
- m : "một phút",
- mm : "%d phút",
- h : "một giờ",
- hh : "%d giờ",
- d : "một ngày",
- dd : "%d ngày",
- M : "một tháng",
- MM : "%d tháng",
- y : "một năm",
- yy : "%d năm"
+ future : '%s tới',
+ past : '%s trước',
+ s : 'vài giây',
+ m : 'một phút',
+ mm : '%d phút',
+ h : 'một giờ',
+ hh : '%d giờ',
+ d : 'một ngày',
+ dd : '%d ngày',
+ M : 'một tháng',
+ MM : '%d tháng',
+ y : 'một năm',
+ yy : '%d năm'
},
+ ordinalParse: /\d{1,2}/,
ordinal : function (number) {
return number;
},
@@ -59,4 +60,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return vi;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/zh-cn.js b/lib/javascripts/moment_locale/zh-cn.js
index 78ea965b8f3..aec5ede49e1 100644
--- a/lib/javascripts/moment_locale/zh-cn.js
+++ b/lib/javascripts/moment_locale/zh-cn.js
@@ -1,103 +1,119 @@
-// moment.js locale configuration
-// locale : chinese (zh-cn)
-// author : suupic : https://github.com/suupic
-// author : Zeno Zeng : https://github.com/zenozeng
+//! moment.js locale configuration
+//! locale : chinese (zh-cn)
+//! author : suupic : https://github.com/suupic
+//! author : Zeno Zeng : https://github.com/zenozeng
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('zh-cn', {
- months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
- monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
- weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"),
- weekdaysMin : "日_一_二_三_四_五_六".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var zh_cn = moment.defineLocale('zh-cn', {
+ months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
+ monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+ weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
+ weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
- LT : "Ah点mm",
- L : "YYYY-MM-DD",
- LL : "YYYY年MMMD日",
- LLL : "YYYY年MMMD日LT",
- LLLL : "YYYY年MMMD日ddddLT",
- l : "YYYY-MM-DD",
- ll : "YYYY年MMMD日",
- lll : "YYYY年MMMD日LT",
- llll : "YYYY年MMMD日ddddLT"
+ LT : 'Ah点mm分',
+ LTS : 'Ah点m分s秒',
+ L : 'YYYY-MM-DD',
+ LL : 'YYYY年MMMD日',
+ LLL : 'YYYY年MMMD日Ah点mm分',
+ LLLL : 'YYYY年MMMD日ddddAh点mm分',
+ l : 'YYYY-MM-DD',
+ ll : 'YYYY年MMMD日',
+ lll : 'YYYY年MMMD日Ah点mm分',
+ llll : 'YYYY年MMMD日ddddAh点mm分'
+ },
+ meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+ meridiemHour: function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === '凌晨' || meridiem === '早上' ||
+ meridiem === '上午') {
+ return hour;
+ } else if (meridiem === '下午' || meridiem === '晚上') {
+ return hour + 12;
+ } else {
+ // '中午'
+ return hour >= 11 ? hour : hour + 12;
+ }
},
meridiem : function (hour, minute, isLower) {
var hm = hour * 100 + minute;
if (hm < 600) {
- return "凌晨";
+ return '凌晨';
} else if (hm < 900) {
- return "早上";
+ return '早上';
} else if (hm < 1130) {
- return "上午";
+ return '上午';
} else if (hm < 1230) {
- return "中午";
+ return '中午';
} else if (hm < 1800) {
- return "下午";
+ return '下午';
} else {
- return "晚上";
+ return '晚上';
}
},
calendar : {
sameDay : function () {
- return this.minutes() === 0 ? "[今天]Ah[点整]" : "[今天]LT";
+ return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
},
nextDay : function () {
- return this.minutes() === 0 ? "[明天]Ah[点整]" : "[明天]LT";
+ return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
},
lastDay : function () {
- return this.minutes() === 0 ? "[昨天]Ah[点整]" : "[昨天]LT";
+ return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
},
nextWeek : function () {
var startOfWeek, prefix;
startOfWeek = moment().startOf('week');
prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
- return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm";
+ return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
},
lastWeek : function () {
var startOfWeek, prefix;
startOfWeek = moment().startOf('week');
prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
- return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm";
+ return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
},
sameElse : 'LL'
},
+ ordinalParse: /\d{1,2}(日|月|周)/,
ordinal : function (number, period) {
switch (period) {
- case "d":
- case "D":
- case "DDD":
- return number + "日";
- case "M":
- return number + "月";
- case "w":
- case "W":
- return number + "周";
+ case 'd':
+ case 'D':
+ case 'DDD':
+ return number + '日';
+ case 'M':
+ return number + '月';
+ case 'w':
+ case 'W':
+ return number + '周';
default:
return number;
}
},
relativeTime : {
- future : "%s内",
- past : "%s前",
- s : "几秒",
- m : "1分钟",
- mm : "%d分钟",
- h : "1小时",
- hh : "%d小时",
- d : "1天",
- dd : "%d天",
- M : "1个月",
- MM : "%d个月",
- y : "1年",
- yy : "%d年"
+ future : '%s内',
+ past : '%s前',
+ s : '几秒',
+ m : '1 分钟',
+ mm : '%d 分钟',
+ h : '1 小时',
+ hh : '%d 小时',
+ d : '1 天',
+ dd : '%d 天',
+ M : '1 个月',
+ MM : '%d 个月',
+ y : '1 年',
+ yy : '%d 年'
},
week : {
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
@@ -105,4 +121,7 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
+
+ return zh_cn;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/zh-tw.js b/lib/javascripts/moment_locale/zh-tw.js
index edb1fb9879c..bf3a333c41e 100644
--- a/lib/javascripts/moment_locale/zh-tw.js
+++ b/lib/javascripts/moment_locale/zh-tw.js
@@ -1,45 +1,58 @@
-// moment.js locale configuration
-// locale : traditional chinese (zh-tw)
-// author : Ben : https://github.com/ben-lin
+//! moment.js locale configuration
+//! locale : traditional chinese (zh-tw)
+//! author : Ben : https://github.com/ben-lin
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- define(['moment'], factory); // AMD
- } else if (typeof exports === 'object') {
- module.exports = factory(require('../moment')); // Node
- } else {
- factory(window.moment); // Browser global
- }
-}(function (moment) {
- return moment.defineLocale('zh-tw', {
- months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
- monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
- weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"),
- weekdaysMin : "日_一_二_三_四_五_六".split("_"),
+;(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined'
+ && typeof require === 'function' ? factory(require('../moment')) :
+ typeof define === 'function' && define.amd ? define(['moment'], factory) :
+ factory(global.moment)
+}(this, function (moment) { 'use strict';
+
+
+ var zh_tw = moment.defineLocale('zh-tw', {
+ months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
+ monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+ weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+ weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
- LT : "Ah點mm",
- L : "YYYY年MMMD日",
- LL : "YYYY年MMMD日",
- LLL : "YYYY年MMMD日LT",
- LLLL : "YYYY年MMMD日ddddLT",
- l : "YYYY年MMMD日",
- ll : "YYYY年MMMD日",
- lll : "YYYY年MMMD日LT",
- llll : "YYYY年MMMD日ddddLT"
+ LT : 'Ah點mm分',
+ LTS : 'Ah點m分s秒',
+ L : 'YYYY年MMMD日',
+ LL : 'YYYY年MMMD日',
+ LLL : 'YYYY年MMMD日Ah點mm分',
+ LLLL : 'YYYY年MMMD日ddddAh點mm分',
+ l : 'YYYY年MMMD日',
+ ll : 'YYYY年MMMD日',
+ lll : 'YYYY年MMMD日Ah點mm分',
+ llll : 'YYYY年MMMD日ddddAh點mm分'
+ },
+ meridiemParse: /早上|上午|中午|下午|晚上/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === '早上' || meridiem === '上午') {
+ return hour;
+ } else if (meridiem === '中午') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === '下午' || meridiem === '晚上') {
+ return hour + 12;
+ }
},
meridiem : function (hour, minute, isLower) {
var hm = hour * 100 + minute;
if (hm < 900) {
- return "早上";
+ return '早上';
} else if (hm < 1130) {
- return "上午";
+ return '上午';
} else if (hm < 1230) {
- return "中午";
+ return '中午';
} else if (hm < 1800) {
- return "下午";
+ return '下午';
} else {
- return "晚上";
+ return '晚上';
}
},
calendar : {
@@ -50,35 +63,39 @@
lastWeek : '[上]ddddLT',
sameElse : 'L'
},
+ ordinalParse: /\d{1,2}(日|月|週)/,
ordinal : function (number, period) {
switch (period) {
- case "d" :
- case "D" :
- case "DDD" :
- return number + "日";
- case "M" :
- return number + "月";
- case "w" :
- case "W" :
- return number + "週";
+ case 'd' :
+ case 'D' :
+ case 'DDD' :
+ return number + '日';
+ case 'M' :
+ return number + '月';
+ case 'w' :
+ case 'W' :
+ return number + '週';
default :
return number;
}
},
relativeTime : {
- future : "%s內",
- past : "%s前",
- s : "幾秒",
- m : "一分鐘",
- mm : "%d分鐘",
- h : "一小時",
- hh : "%d小時",
- d : "一天",
- dd : "%d天",
- M : "一個月",
- MM : "%d個月",
- y : "一年",
- yy : "%d年"
+ future : '%s內',
+ past : '%s前',
+ s : '幾秒',
+ m : '一分鐘',
+ mm : '%d分鐘',
+ h : '一小時',
+ hh : '%d小時',
+ d : '一天',
+ dd : '%d天',
+ M : '一個月',
+ MM : '%d個月',
+ y : '一年',
+ yy : '%d年'
}
});
-}));
+
+ return zh_tw;
+
+}));
\ No newline at end of file
diff --git a/lib/javascripts/moment_locale/zh_CN.js b/lib/javascripts/moment_locale/zh_CN.js
deleted file mode 100644
index 11fc0342efd..00000000000
--- a/lib/javascripts/moment_locale/zh_CN.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// moment.js language configuration
-// language : chinese
-// author : suupic : https://github.com/suupic
-
-moment.lang('zh-cn', {
- months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
- monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
- weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"),
- weekdaysMin : "日_一_二_三_四_五_六".split("_"),
- longDateFormat : {
- LT : "Ah点mm",
- L : "YYYY年MMMD日",
- LL : "YYYY年MMMD日",
- LLL : "YYYY年MMMD日LT",
- LLLL : "YYYY年MMMD日ddddLT",
- l : "YYYY年MMMD日",
- ll : "YYYY年MMMD日",
- lll : "YYYY年MMMD日LT",
- llll : "YYYY年MMMD日ddddLT"
- },
- meridiem : function (hour, minute, isLower) {
- if (hour < 9) {
- return "早上";
- } else if (hour < 11 && minute < 30) {
- return "上午";
- } else if (hour < 13 && minute < 30) {
- return "中午";
- } else if (hour < 18) {
- return "下午";
- } else {
- return "晚上";
- }
- },
- calendar : {
- sameDay : '[今天]LT',
- nextDay : '[明天]LT',
- nextWeek : '[下]ddddLT',
- lastDay : '[昨天]LT',
- lastWeek : '[上]ddddLT',
- sameElse : 'L'
- },
- ordinal : function (number, period) {
- switch (period) {
- case "d" :
- case "D" :
- case "DDD" :
- return number + "日";
- case "M" :
- return number + "月";
- case "w" :
- case "W" :
- return number + "周";
- default :
- return number;
- }
- },
- relativeTime : {
- future : "%s内",
- past : "%s前",
- s : "几秒",
- m : "1分钟",
- mm : "%d分钟",
- h : "1小时",
- hh : "%d小时",
- d : "1天",
- dd : "%d天",
- M : "1个月",
- MM : "%d个月",
- y : "1年",
- yy : "%d年"
- }
-});
diff --git a/lib/javascripts/moment_locale/zh_TW.js b/lib/javascripts/moment_locale/zh_TW.js
deleted file mode 100644
index 8ac45323aeb..00000000000
--- a/lib/javascripts/moment_locale/zh_TW.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// moment.js language configuration
-// language : traditional chinese (zh-tw)
-// author : Ben : https://github.com/ben-lin
-
-moment.lang('zh-tw', {
- months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
- monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
- weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"),
- weekdaysMin : "日_一_二_三_四_五_六".split("_"),
- longDateFormat : {
- LT : "Ah點mm",
- L : "YYYY年MMMD日",
- LL : "YYYY年MMMD日",
- LLL : "YYYY年MMMD日LT",
- LLLL : "YYYY年MMMD日ddddLT",
- l : "YYYY年MMMD日",
- ll : "YYYY年MMMD日",
- lll : "YYYY年MMMD日LT",
- llll : "YYYY年MMMD日ddddLT"
- },
- meridiem : function (hour, minute, isLower) {
- if (hour < 9) {
- return "早上";
- } else if (hour < 11 && minute < 30) {
- return "上午";
- } else if (hour < 13 && minute < 30) {
- return "中午";
- } else if (hour < 18) {
- return "下午";
- } else {
- return "晚上";
- }
- },
- calendar : {
- sameDay : '[今天]LT',
- nextDay : '[明天]LT',
- nextWeek : '[下]ddddLT',
- lastDay : '[昨天]LT',
- lastWeek : '[上]ddddLT',
- sameElse : 'L'
- },
- ordinal : function (number, period) {
- switch (period) {
- case "d" :
- case "D" :
- case "DDD" :
- return number + "日";
- case "M" :
- return number + "月";
- case "w" :
- case "W" :
- return number + "週";
- default :
- return number;
- }
- },
- relativeTime : {
- future : "%s內",
- past : "%s前",
- s : "幾秒",
- m : "一分鐘",
- mm : "%d分鐘",
- h : "一小時",
- hh : "%d小時",
- d : "一天",
- dd : "%d天",
- M : "一個月",
- MM : "%d個月",
- y : "一年",
- yy : "%d年"
- }
-});
diff --git a/lib/js_locale_helper.rb b/lib/js_locale_helper.rb
index af06c334092..1374235eb4f 100644
--- a/lib/js_locale_helper.rb
+++ b/lib/js_locale_helper.rb
@@ -123,7 +123,16 @@ module JsLocaleHelper
end
def self.moment_locale(locale_str)
+ # moment.js uses a different naming scheme for locale files
+ locale_str = locale_str.tr('_', '-').downcase
filename = Rails.root + "lib/javascripts/moment_locale/#{locale_str}.js"
+
+ unless File.exists?(filename)
+ # try the language without the territory
+ locale_str = locale_str.partition('-').first
+ filename = Rails.root + "lib/javascripts/moment_locale/#{locale_str}.js"
+ end
+
if File.exists?(filename)
File.read(filename) << "\n"
end || ""
diff --git a/lib/letter_avatar.rb b/lib/letter_avatar.rb
index abde76ec080..7c79c033e9d 100644
--- a/lib/letter_avatar.rb
+++ b/lib/letter_avatar.rb
@@ -1,5 +1,18 @@
class LetterAvatar
+ class Identity
+ attr_accessor :color, :letter
+
+ def self.from_username(username)
+ identity = new
+ identity.color = LetterAvatar::COLORS[
+ Digest::MD5.hexdigest(username)[0...15].to_i(16) % LetterAvatar::COLORS.length
+ ]
+ identity.letter = username[0].upcase
+ identity
+ end
+ end
+
# BUMP UP if avatar algorithm changes
VERSION = 5
@@ -9,19 +22,6 @@ class LetterAvatar
class << self
- class Identity
- attr_accessor :color, :letter
-
- def self.from_username(username)
- identity = new
- identity.color = LetterAvatar::COLORS[
- Digest::MD5.hexdigest(username)[0...15].to_i(16) % LetterAvatar::COLORS.length
- ]
- identity.letter = username[0].upcase
- identity
- end
- end
-
def version
"#{VERSION}_#{image_magick_version}"
end
@@ -32,7 +32,7 @@ class LetterAvatar
def generate(username, size, opts = nil)
DistributedMutex.synchronize("letter_avatar_#{version}_#{username}") do
- identity = Identity.from_username(username)
+ identity = (opts && opts[:identity]) || LetterAvatar::Identity.from_username(username)
cache = true
cache = false if opts && opts[:cache] == false
diff --git a/lib/locale_file_walker.rb b/lib/locale_file_walker.rb
new file mode 100644
index 00000000000..4f11ea9ff86
--- /dev/null
+++ b/lib/locale_file_walker.rb
@@ -0,0 +1,49 @@
+require 'psych'
+require 'set'
+
+class LocaleFileWalker
+ protected
+
+ def handle_document(document)
+ # we want to ignore the language (first key), so let's start at -1
+ handle_nodes(document.root.children, -1, [])
+ end
+
+ def handle_nodes(nodes, depth, parents)
+ if nodes
+ consecutive_scalars = 0
+ nodes.each do |node|
+ consecutive_scalars = handle_node(node, depth, parents, consecutive_scalars)
+ end
+ end
+ end
+
+ def handle_node(node, depth, parents, consecutive_scalars)
+ node_is_scalar = node.is_a?(Psych::Nodes::Scalar)
+
+ if node_is_scalar
+ handle_scalar(node, depth, parents) if valid_scalar?(depth, consecutive_scalars)
+ elsif node.is_a?(Psych::Nodes::Alias)
+ handle_alias(node, depth, parents)
+ elsif node.is_a?(Psych::Nodes::Mapping)
+ handle_mapping(node, depth, parents)
+ handle_nodes(node.children, depth + 1, parents.dup)
+ end
+
+ node_is_scalar ? consecutive_scalars + 1 : 0
+ end
+
+ def valid_scalar?(depth, consecutive_scalars)
+ depth >= 0 && consecutive_scalars.even?
+ end
+
+ def handle_scalar(node, depth, parents)
+ parents[depth] = node.value
+ end
+
+ def handle_alias(node, depth, parents)
+ end
+
+ def handle_mapping(node, depth, parents)
+ end
+end
diff --git a/lib/memory_diagnostics.rb b/lib/memory_diagnostics.rb
index d79d84407be..a49480677a9 100644
--- a/lib/memory_diagnostics.rb
+++ b/lib/memory_diagnostics.rb
@@ -21,7 +21,8 @@ module MemoryDiagnostics
require 'objspace'
diff = diff.map do |id|
ObjectSpace._id2ref(id) rescue nil
- end.compact!
+ end
+ diff.compact!
report = "#{diff.length} objects have leaked\n"
diff --git a/lib/middleware/anonymous_cache.rb b/lib/middleware/anonymous_cache.rb
index a65eb2df1a4..a79b4225663 100644
--- a/lib/middleware/anonymous_cache.rb
+++ b/lib/middleware/anonymous_cache.rb
@@ -64,8 +64,13 @@ module Middleware
CurrentUser.has_auth_cookie?(@env)
end
+ def no_cache_bypass
+ request = Rack::Request.new(@env)
+ request.cookies['_bypass_cache'].nil?
+ end
+
def cacheable?
- !!(!has_auth_cookie? && get?)
+ !!(!has_auth_cookie? && get? && no_cache_bypass)
end
def cached
diff --git a/lib/mobile_detection.rb b/lib/mobile_detection.rb
index 0e00bb876bc..a9e2702de1b 100644
--- a/lib/mobile_detection.rb
+++ b/lib/mobile_detection.rb
@@ -1,6 +1,6 @@
module MobileDetection
def self.mobile_device?(user_agent)
- user_agent =~ /Mobile|webOS|Nexus 7/ && !(user_agent =~ /iPad/)
+ user_agent =~ /Mobile/ && !(user_agent =~ /iPad/)
end
# we need this as a reusable chunk that is called from the cache
diff --git a/lib/new_post_manager.rb b/lib/new_post_manager.rb
index 901e7417e6f..f354a277ad1 100644
--- a/lib/new_post_manager.rb
+++ b/lib/new_post_manager.rb
@@ -69,9 +69,9 @@ class NewPostManager
def self.user_needs_approval?(manager)
user = manager.user
- return false if user.staff?
+ return false if user.staff? || user.staged
- (user.post_count < SiteSetting.approve_post_count) ||
+ (user.trust_level <= TrustLevel.levels[:basic] && user.post_count < SiteSetting.approve_post_count) ||
(user.trust_level < SiteSetting.approve_unless_trust_level.to_i) ||
is_fast_typer?(manager) ||
matches_auto_block_regex?(manager)
@@ -82,14 +82,11 @@ class NewPostManager
result = manager.enqueue('default')
- block = is_fast_typer?(manager)
-
- block ||= matches_auto_block_regex?(manager)
-
- manager.user.update_columns(blocked: true) if block
+ if is_fast_typer?(manager) || matches_auto_block_regex?(manager)
+ UserBlocker.block(manager.user, Discourse.system_user, keep_posts: true)
+ end
result
-
end
end
@@ -105,7 +102,6 @@ class NewPostManager
end
def perform
-
# We never queue private messages
return perform_create_post if @args[:archetype] == Archetype.private_message
if args[:topic_id] && Topic.where(id: args[:topic_id], archetype: Archetype.private_message).exists?
@@ -145,7 +141,6 @@ class NewPostManager
def perform_create_post
result = NewPostResult.new(:create_post)
-
creator = PostCreator.new(@user, @args)
post = creator.create
result.check_errors_from(creator)
diff --git a/lib/onebox/engine/discourse_local_onebox.rb b/lib/onebox/engine/discourse_local_onebox.rb
index db4075b43e2..9ac748e27fd 100644
--- a/lib/onebox/engine/discourse_local_onebox.rb
+++ b/lib/onebox/engine/discourse_local_onebox.rb
@@ -14,8 +14,10 @@ module Onebox
if other.kind_of?(URI)
uri = other
begin
- route = Rails.application.routes.recognize_path(uri.path)
+ route = Rails.application.routes.recognize_path(uri.path.sub(Discourse.base_uri, ""))
case route[:controller]
+ when 'uploads'
+ super
when 'topics'
# super will use matches_regexp to match the domain name
super
@@ -32,14 +34,25 @@ module Onebox
def to_html
uri = URI::parse(@url)
- route = Rails.application.routes.recognize_path(uri.path)
-
+ route = Rails.application.routes.recognize_path(uri.path.sub(Discourse.base_uri, ""))
+ url = @url.sub(/[&?]source_topic_id=(\d+)/, "")
+ source_topic_id = $1.to_i
# Figure out what kind of onebox to show based on the URL
case route[:controller]
+ when 'uploads'
+
+ url.gsub!("http:", "https:") if SiteSetting.use_https
+ if File.extname(uri.path) =~ /^.(mov|mp4|webm|ogv)$/
+ return ""
+ elsif File.extname(uri.path) =~ /^.(mp3|ogg|wav)$/
+ return ""
+ else
+ return false
+ end
when 'topics'
- linked = "#{@url}"
+ linked = "#{url}"
if route[:post_number].present? && route[:post_number].to_i > 1
# Post Link
post = Post.find_by(topic_id: route[:topic_id], post_number: route[:post_number].to_i)
@@ -50,13 +63,15 @@ module Onebox
topic = post.topic
slug = Slug.for(topic.title)
- excerpt = post.excerpt(SiteSetting.post_onebox_maxlength)
+ excerpt = post.excerpt(SiteSetting.post_onebox_maxlength, { keep_emoji_codes: true })
excerpt.gsub!("\n"," ")
# hack to make it render for now
excerpt.gsub!("[/quote]", "[quote]")
quote = "[quote=\"#{post.user.username}, topic:#{topic.id}, slug:#{slug}, post:#{post.post_number}\"]#{excerpt}[/quote]"
- cooked = PrettyText.cook(quote)
+ args = {}
+ args[:topic_id] = source_topic_id if source_topic_id > 0
+ cooked = PrettyText.cook(quote, args)
return cooked
else
@@ -77,8 +92,8 @@ module Onebox
end
quote = post.excerpt(SiteSetting.post_onebox_maxlength)
- args = { original_url: @url,
- title: topic.title,
+ args = { original_url: url,
+ title: PrettyText.unescape_emoji(topic.title),
avatar: PrettyText.avatar_img(topic.user.avatar_template, 'tiny'),
posts_count: topic.posts_count,
last_post: FreedomPatches::Rails4.time_ago_in_words(topic.last_posted_at, false, scope: :'datetime.distance_in_words_verbose'),
diff --git a/lib/onebox/templates/discourse_topic_onebox.hbs b/lib/onebox/templates/discourse_topic_onebox.hbs
index a070f974f1f..b9ca0aff51b 100644
--- a/lib/onebox/templates/discourse_topic_onebox.hbs
+++ b/lib/onebox/templates/discourse_topic_onebox.hbs
@@ -2,7 +2,7 @@
{{{avatar}}}
- {{title}} {{{category_html}}}
+ {{{title}}} {{{category_html}}}
{{{quote}}}
diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb
index 50aa8bc7b06..a2152e2d8a6 100644
--- a/lib/oneboxer.rb
+++ b/lib/oneboxer.rb
@@ -76,12 +76,30 @@ module Oneboxer
doc
end
- def self.apply(string_or_doc)
+ def self.append_source_topic_id(url, topic_id)
+ # hack urls to create proper expansions
+ if url =~ Regexp.new("^#{Discourse.base_url.gsub(".","\\.")}.*$", true)
+ uri = URI.parse(url) rescue nil
+ if uri && uri.path
+ route = Rails.application.routes.recognize_path(uri.path) rescue nil
+ if route && route[:controller] == 'topics'
+ url += (url =~ /\?/ ? "&" : "?") + "source_topic_id=#{topic_id}"
+ end
+ end
+ end
+ url
+ end
+
+ def self.apply(string_or_doc, args=nil)
doc = string_or_doc
doc = Nokogiri::HTML::fragment(doc) if doc.is_a?(String)
changed = false
Oneboxer.each_onebox_link(doc) do |url, element|
+
+ if args && args[:topic_id]
+ url = append_source_topic_id(url, args[:topic_id])
+ end
onebox, _preview = yield(url,element)
if onebox
parsed_onebox = Nokogiri::HTML::fragment(onebox)
@@ -138,4 +156,3 @@ module Oneboxer
end
end
-
diff --git a/lib/plugin/auth_provider.rb b/lib/plugin/auth_provider.rb
index 367f9a65164..cbc12c6f450 100644
--- a/lib/plugin/auth_provider.rb
+++ b/lib/plugin/auth_provider.rb
@@ -1,9 +1,26 @@
class Plugin::AuthProvider
- attr_accessor :glyph, :background_color, :title,
- :message, :frame_width, :frame_height, :authenticator
+
+ def self.auth_attributes
+ [:glyph, :background_color, :title, :message, :frame_width, :frame_height, :authenticator,
+ :title_setting, :enabled_setting, :full_screen_login]
+ end
+
+ attr_accessor(*auth_attributes)
def name
authenticator.name
end
+ def to_json
+ result = {name: name}
+ result['titleOverride'] = title if title
+ result['titleSetting'] = title_setting if title_setting
+ result['enabledSetting'] = enabled_setting if enabled_setting
+ result['messageOverride'] = message if message
+ result['frameWidth'] = frame_width if frame_width
+ result['frameHeight'] = frame_height if frame_height
+ result['fullScreenLogin'] = full_screen_login if full_screen_login
+ result.to_json
+ end
+
end
diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb
index d51adc4f139..7fb3735de1d 100644
--- a/lib/plugin/instance.rb
+++ b/lib/plugin/instance.rb
@@ -17,8 +17,13 @@ class Plugin::Instance
}
end
- def seed_data
- @seed_data ||= {}
+ # Memoized hash readers
+ [:seed_data, :emojis].each do |att|
+ class_eval %Q{
+ def #{att}
+ @#{att} ||= HashWithIndifferentAccess.new({})
+ end
+ }
end
def self.find_all(parent_path)
@@ -49,7 +54,7 @@ class Plugin::Instance
delegate :name, to: :metadata
def add_to_serializer(serializer, attr, define_include_method=true, &block)
- klass = "#{serializer.to_s.classify}Serializer".constantize
+ klass = "#{serializer.to_s.classify}Serializer".constantize rescue "#{serializer.to_s}Serializer".constantize
klass.attributes(attr) unless attr.to_s.start_with?("include_")
@@ -62,10 +67,14 @@ class Plugin::Instance
klass.send(:define_method, "include_#{attr}?") { plugin.enabled? }
end
+ def whitelist_staff_user_custom_field(field)
+ User.register_plugin_staff_custom_field(field, self)
+ end
+
# Extend a class but check that the plugin is enabled
# for class methods use `add_class_method`
def add_to_class(klass, attr, &block)
- klass = klass.to_s.classify.constantize
+ klass = klass.to_s.classify.constantize rescue klass.to_s.constantize
hidden_method_name = :"#{attr}_without_enable_check"
klass.send(:define_method, hidden_method_name, &block)
@@ -117,19 +126,23 @@ class Plugin::Instance
# will make sure all the assets this plugin needs are registered
def generate_automatic_assets!
paths = []
+ assets = []
+
automatic_assets.each do |path, contents|
- unless File.exists? path
- ensure_directory path
- File.open(path,"w") do |f|
- f.write(contents)
- end
- end
+ write_asset(path, contents)
paths << path
+ assets << [path]
+ end
+
+ automatic_server_assets.each do |path, contents|
+ write_asset(path, contents)
+ paths << path
+ assets << [path, :server_side]
end
delete_extra_automatic_assets(paths)
- paths
+ assets
end
def delete_extra_automatic_assets(good_paths)
@@ -213,18 +226,17 @@ class Plugin::Instance
seed_data[key] = value
end
+ def register_emoji(name, url)
+ emojis[name] = url
+ end
+
def automatic_assets
css = styles.join("\n")
js = javascripts.join("\n")
auth_providers.each do |auth|
- overrides = ""
- overrides = ", titleOverride: '#{auth.title}'" if auth.title
- overrides << ", messageOverride: '#{auth.message}'" if auth.message
- overrides << ", frameWidth: '#{auth.frame_width}'" if auth.frame_width
- overrides << ", frameHeight: '#{auth.frame_height}'" if auth.frame_height
- js << "Discourse.LoginMethod.register(Discourse.LoginMethod.create({name: '#{auth.name}'#{overrides}}));\n"
+ js << "Discourse.LoginMethod.register(Discourse.LoginMethod.create(#{auth.to_json}));\n"
if auth.glyph
css << ".btn-social.#{auth.name}:before{ content: '#{auth.glyph}'; }\n"
@@ -246,9 +258,40 @@ class Plugin::Instance
hash = Digest::SHA1.hexdigest asset
["#{auto_generated_path}/plugin_#{hash}.#{extension}", asset]
end
-
end
+ def automatic_server_assets
+ js = ""
+
+ unless emojis.blank?
+ js << "Discourse.Emoji.addCustomEmojis(function() {" << "\n"
+
+ if @enabled_site_setting.present?
+ js << "if (Discourse.SiteSettings.#{@enabled_site_setting}) {" << "\n"
+ end
+
+ emojis.each do |name, url|
+ js << "Discourse.Dialect.registerEmoji('#{name}', '#{url}');" << "\n"
+ end
+
+ if @enabled_site_setting.present?
+ js << "}" << "\n"
+ end
+
+ js << "});" << "\n"
+ end
+
+ result = []
+
+ if js.present?
+ # Generate an IIFE for the JS
+ asset = "(function(){#{js}})();"
+ hash = Digest::SHA1.hexdigest(asset)
+ result << ["#{auto_generated_path}/plugin_#{hash}.js", asset]
+ end
+
+ result
+ end
# note, we need to be able to parse seperately to activation.
# this allows us to present information about a plugin in the UI
@@ -268,7 +311,7 @@ class Plugin::Instance
self.instance_eval File.read(path), path
if auto_assets = generate_automatic_assets!
- assets.concat auto_assets.map{|a| [a]}
+ assets.concat(auto_assets)
end
register_assets! unless assets.blank?
@@ -305,7 +348,8 @@ class Plugin::Instance
def auth_provider(opts)
provider = Plugin::AuthProvider.new
- [:glyph, :background_color, :title, :message, :frame_width, :frame_height, :authenticator].each do |sym|
+
+ Plugin::AuthProvider.auth_attributes.each do |sym|
provider.send "#{sym}=", opts.delete(sym)
end
auth_providers << provider
@@ -358,4 +402,13 @@ class Plugin::Instance
end
end
+ private
+
+ def write_asset(path, contents)
+ unless File.exists?(path)
+ ensure_directory(path)
+ File.open(path,"w") { |f| f.write(contents) }
+ end
+ end
+
end
diff --git a/lib/post_action_creator.rb b/lib/post_action_creator.rb
new file mode 100644
index 00000000000..e995db1a298
--- /dev/null
+++ b/lib/post_action_creator.rb
@@ -0,0 +1,20 @@
+# creates post actions based on a post and a user
+class PostActionCreator
+
+ def initialize(user, post)
+ @user = user
+ @post = post
+ end
+
+ def perform(action)
+ guardian.ensure_post_can_act!(@post, action, taken_actions: PostAction.counts_for([@post].compact, @user)[@post.try(:id)])
+ PostAction.act(@user, @post, action)
+ end
+
+ private
+
+ def guardian
+ @guardian ||= Guardian.new(@user)
+ end
+
+end
diff --git a/lib/post_creator.rb b/lib/post_creator.rb
index 21b07963f57..62bc2a57934 100644
--- a/lib/post_creator.rb
+++ b/lib/post_creator.rb
@@ -57,6 +57,7 @@ class PostCreator
opts[:title] = pg_clean_up(opts[:title]) if opts[:title] && opts[:title].include?("\u0000")
opts[:raw] = pg_clean_up(opts[:raw]) if opts[:raw] && opts[:raw].include?("\u0000")
opts.delete(:reply_to_post_number) unless opts[:topic_id]
+ @guardian = opts[:guardian] if opts[:guardian]
@spam = false
end
@@ -133,6 +134,7 @@ class PostCreator
create_embedded_topic
ensure_in_allowed_users if guardian.is_staff?
+ unarchive_message
@post.advance_draft_sequence
@post.save_reply_relationships
end
@@ -170,13 +172,13 @@ class PostCreator
def self.before_create_tasks(post)
set_reply_info(post)
- post.word_count = post.raw.scan(/\w+/).size
+ post.word_count = post.raw.scan(/[[:word:]]+/).size
post.post_number ||= Topic.next_post_number(post.topic_id, post.reply_to_post_number.present?)
cooking_options = post.cooking_options || {}
cooking_options[:topic_id] = post.topic_id
- post.cooked ||= post.cook(post.raw, cooking_options)
+ post.cooked ||= post.cook(post.raw, cooking_options.symbolize_keys)
post.sort_order = post.post_number
post.last_version_at ||= Time.now
end
@@ -260,10 +262,26 @@ class PostCreator
end
def ensure_in_allowed_users
- return unless @topic.private_message?
+ return unless @topic.private_message? && @topic.id
unless @topic.topic_allowed_users.where(user_id: @user.id).exists?
- @topic.topic_allowed_users.create!(user_id: @user.id)
+ unless @topic.topic_allowed_groups.where('group_id IN (
+ SELECT group_id FROM group_users where user_id = ?
+ )',@user.id).exists?
+ @topic.topic_allowed_users.create!(user_id: @user.id)
+ end
+ end
+ end
+
+ def unarchive_message
+ return unless @topic.private_message? && @topic.id
+
+ UserArchivedMessage.where(topic_id: @topic.id).pluck(:user_id).each do |user_id|
+ UserArchivedMessage.move_to_inbox!(user_id, @topic.id)
+ end
+
+ GroupArchivedMessage.where(topic_id: @topic.id).pluck(:group_id).each do |group_id|
+ GroupArchivedMessage.move_to_inbox!(group_id, @topic.id)
end
end
@@ -341,8 +359,10 @@ class PostCreator
@user.user_stat.first_post_created_at = @post.created_at
end
- @user.user_stat.post_count += 1
- @user.user_stat.topic_count += 1 if @post.is_first_post?
+ unless @post.topic.private_message?
+ @user.user_stat.post_count += 1
+ @user.user_stat.topic_count += 1 if @post.is_first_post?
+ end
# We don't count replies to your own topics
if !@opts[:import_mode] && @user.id != @topic.user_id
@@ -382,8 +402,11 @@ class PostCreator
post_number: @post.post_number,
msecs: 5000)
-
- TopicUser.auto_track(@user.id, @topic.id, TopicUser.notification_reasons[:created_post])
+ if @user.staged
+ TopicUser.auto_watch(@user.id, @topic.id)
+ else
+ TopicUser.auto_track(@user.id, @topic.id, TopicUser.notification_reasons[:created_post])
+ end
end
def enqueue_jobs
diff --git a/lib/post_destroyer.rb b/lib/post_destroyer.rb
index 394b6ccc43f..9d35572f0f9 100644
--- a/lib/post_destroyer.rb
+++ b/lib/post_destroyer.rb
@@ -5,7 +5,7 @@
class PostDestroyer
def self.destroy_old_hidden_posts
- Post.where(deleted_at: nil)
+ Post.where(deleted_at: nil, hidden: true)
.where("hidden_at < ?", 30.days.ago)
.find_each do |post|
PostDestroyer.new(Discourse.system_user, post).destroy
@@ -65,6 +65,7 @@ class PostDestroyer
def staff_recovered
@post.recover!
@post.publish_change_to_clients! :recovered
+ TopicTrackingState.publish_recover(@post.topic) if @post.topic && @post.post_number == 1
end
# When a post is properly deleted. Well, it's still soft deleted, but it will no longer
@@ -96,6 +97,7 @@ class PostDestroyer
feature_users_in_the_topic if @post.topic
@post.publish_change_to_clients! :deleted if @post.topic
+ TopicTrackingState.publish_delete(@post.topic) if @post.topic && @post.post_number == 1
end
# When a user 'deletes' their own post. We just change the text.
diff --git a/lib/post_jobs_enqueuer.rb b/lib/post_jobs_enqueuer.rb
index d4e1354aaae..c5f1f6a9d15 100644
--- a/lib/post_jobs_enqueuer.rb
+++ b/lib/post_jobs_enqueuer.rb
@@ -7,8 +7,8 @@ class PostJobsEnqueuer
end
def enqueue_jobs
- # We need to enqueue jobs after the transaction. Otherwise they might begin before the data has
- # been comitted.
+ # We need to enqueue jobs after the transaction.
+ # Otherwise they might begin before the data has been comitted.
enqueue_post_alerts unless @opts[:import_mode]
feature_topic_users unless @opts[:import_mode]
trigger_post_post_process
diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb
index 6a97b166558..9881274d725 100644
--- a/lib/post_revisor.rb
+++ b/lib/post_revisor.rb
@@ -154,6 +154,7 @@ class PostRevisor
POST_TRACKED_FIELDS.each do |field|
return true if @fields.has_key?(field) && @fields[field] != @post.send(field)
end
+ advance_draft_sequence
false
end
@@ -174,7 +175,8 @@ class PostRevisor
end
def ninja_edit?
- @revised_at - @last_version_at <= SiteSetting.ninja_edit_window.to_i
+ return false if @post.has_active_flag?
+ @revised_at - @last_version_at <= SiteSetting.editing_grace_period.to_i
end
def owner_changed?
@@ -229,10 +231,10 @@ class PostRevisor
end
@post.last_editor_id = @editor.id
- @post.word_count = @fields[:raw].scan(/\w+/).size if @fields.has_key?(:raw)
+ @post.word_count = @fields[:raw].scan(/[[:word:]]+/).size if @fields.has_key?(:raw)
@post.self_edits += 1 if self_edit?
- clear_flags_and_unhide_post
+ remove_flags_and_unhide_post
@post.extract_quoted_post_numbers
@@ -269,9 +271,11 @@ class PostRevisor
@editor == @post.user
end
- def clear_flags_and_unhide_post
+ def remove_flags_and_unhide_post
return unless editing_a_flagged_and_hidden_post?
- PostAction.clear_flags!(@post, Discourse.system_user)
+ @post.post_actions.where(post_action_type_id: PostActionType.flag_types.values).each do |action|
+ action.remove_act!(Discourse.system_user)
+ end
@post.unhide!
end
@@ -393,11 +397,15 @@ class PostRevisor
body = @post.cooked
matches = body.scan(/\(.*)\<\/p\>/)
- if matches && matches[0] && matches[0][0]
- new_description = matches[0][0]
- new_description = nil if new_description == I18n.t("category.replace_paragraph")
+
+ matches.each do |match|
+ next if match[0] =~ /\
@secs}
+ @max - arr.size
+ end
+
private
def seconds_to_wait
diff --git a/lib/rate_limiter/limit_exceeded.rb b/lib/rate_limiter/limit_exceeded.rb
index 2b85b467b07..787bcdd381b 100644
--- a/lib/rate_limiter/limit_exceeded.rb
+++ b/lib/rate_limiter/limit_exceeded.rb
@@ -2,9 +2,30 @@ class RateLimiter
# A rate limit has been exceeded.
class LimitExceeded < StandardError
- attr_accessor :available_in
- def initialize(available_in)
+ attr_reader :type
+
+ def initialize(available_in, type=nil)
@available_in = available_in
+ @type = type
+ end
+
+ def description
+ time_left = ""
+ if @available_in < 1.minute.to_i
+ time_left = I18n.t("rate_limiter.seconds", count: @available_in)
+ elsif @available_in < 1.hour.to_i
+ time_left = I18n.t("rate_limiter.minutes", count: (@available_in / 1.minute.to_i))
+ else
+ time_left = I18n.t("rate_limiter.hours", count: (@available_in / 1.hour.to_i))
+ end
+
+ if @type.present?
+ type_key = @type.tr("-", "_")
+ msg = I18n.t("rate_limiter.by_type.#{type_key}", time_left: time_left, default: "")
+ return msg if msg.present?
+ end
+
+ I18n.t("rate_limiter.too_many_requests", time_left: time_left)
end
end
diff --git a/lib/scheduler/manager.rb b/lib/scheduler/manager.rb
index 2f2b42d4a97..78d1de7fa4c 100644
--- a/lib/scheduler/manager.rb
+++ b/lib/scheduler/manager.rb
@@ -10,7 +10,6 @@ module Scheduler
class Manager
attr_accessor :random_ratio, :redis
-
class Runner
def initialize(manager)
@mutex = Mutex.new
@@ -157,7 +156,6 @@ module Scheduler
lock do
schedule_info(klass).schedule!
end
-
end
def remove(klass)
@@ -203,8 +201,8 @@ module Scheduler
def schedule_next_job(hostname=nil)
(key, due), _ = redis.zrange Manager.queue_key(hostname), 0, 0, withscores: true
-
return unless key
+
if due.to_i <= Time.now.to_i
klass = get_klass(key)
unless klass
diff --git a/lib/search.rb b/lib/search.rb
index e99e6036129..5bfd9d4e2ed 100644
--- a/lib/search.rb
+++ b/lib/search.rb
@@ -76,7 +76,7 @@ class Search
def self.prepare_data(search_data)
data = search_data.squish
# TODO rmmseg is designed for chinese, we need something else for Korean / Japanese
- if ['zh_TW', 'zh_CN', 'ja', 'ko'].include?(SiteSetting.default_locale)
+ if ['zh_TW', 'zh_CN', 'ja', 'ko'].include?(SiteSetting.default_locale) || SiteSetting.search_tokenize_chinese_japanese_korean
unless defined? RMMSeg
require 'rmmseg'
RMMSeg::Dictionary.load_dictionaries
@@ -94,6 +94,40 @@ class Search
data
end
+ def self.word_to_date(str)
+
+ if str =~ /^[0-9]{1,3}$/
+ return Time.zone.now.beginning_of_day.days_ago(str.to_i)
+ end
+
+ if str =~ /^([12][0-9]{3})(-([0-1]?[0-9]))?(-([0-3]?[0-9]))?$/
+ year = $1.to_i
+ month = $2 ? $3.to_i : 1
+ day = $4 ? $5.to_i : 1
+
+ return if day==0 || month==0 || day > 31 || month > 12
+
+ return Time.zone.parse("#{year}-#{month}-#{day}") rescue nil
+ end
+
+ if str.downcase == "yesterday"
+ return Time.zone.now.beginning_of_day.yesterday
+ end
+
+ titlecase = str.downcase.titlecase
+
+ if Date::DAYNAMES.include?(titlecase)
+ return Time.zone.now.beginning_of_week(str.downcase.to_sym)
+ end
+
+ if idx = (Date::MONTHNAMES.find_index(titlecase) ||
+ Date::ABBR_MONTHNAMES.find_index(titlecase))
+ delta = Time.zone.now.month - idx
+ delta += 12 if delta < 0
+ Time.zone.now.beginning_of_month.months_ago(delta)
+ end
+ end
+
def initialize(term, opts=nil)
@opts = opts || {}
@guardian = @opts[:guardian] || Guardian.new
@@ -185,6 +219,18 @@ class Search
posts.where("posts.post_number = 1")
end
+ advanced_filter(/in:pinned/) do |posts|
+ posts.where("topics.pinned_at IS NOT NULL")
+ end
+
+ advanced_filter(/in:unpinned/) do |posts|
+ if @guardian.user
+ posts.where("topics.pinned_at IS NOT NULL AND topics.id IN (
+ SELECT topic_id FROM topic_users WHERE user_id = ? AND cleared_pinned_at IS NOT NULL
+ )", @guardian.user.id)
+ end
+ end
+
advanced_filter(/badge:(.*)/) do |posts,match|
badge_id = Badge.where('name ilike ? OR id = ?', match, match.to_i).pluck(:id).first
if badge_id
@@ -243,7 +289,7 @@ class Search
end
advanced_filter(/user:(.+)/) do |posts,match|
- user_id = User.where('username_lower = ? OR id = ?', match.downcase, match.to_i).pluck(:id).first
+ user_id = User.where(staged: false).where('username_lower = ? OR id = ?', match.downcase, match.to_i).pluck(:id).first
if user_id
posts.where("posts.user_id = #{user_id}")
else
@@ -251,14 +297,20 @@ class Search
end
end
- advanced_filter(/min_age:(\d+)/) do |posts,match|
- n = match.to_i
- posts.where("topics.created_at > ?", n.days.ago)
+ advanced_filter(/before:(.*)/) do |posts,match|
+ if date = Search.word_to_date(match)
+ posts.where("posts.created_at < ?", date)
+ else
+ posts
+ end
end
- advanced_filter(/max_age:(\d+)/) do |posts,match|
- n = match.to_i
- posts.where("topics.created_at < ?", n.days.ago)
+ advanced_filter(/after:(.*)/) do |posts,match|
+ if date = Search.word_to_date(match)
+ posts.where("posts.created_at > ?", date)
+ else
+ posts
+ end
end
private
@@ -379,12 +431,16 @@ class Search
end
def user_search
+ return if SiteSetting.hide_user_profiles_from_public && !@guardian.user
+
users = User.includes(:user_search_data)
- .where("active = true AND user_search_data.search_data @@ #{ts_query("simple")}")
+ .references(:user_search_data)
+ .where(active: true)
+ .where(staged: false)
+ .where("user_search_data.search_data @@ #{ts_query("simple")}")
.order("CASE WHEN username_lower = '#{@original_term.downcase}' THEN 0 ELSE 1 END")
.order("last_posted_at DESC")
.limit(@limit)
- .references(:user_search_data)
users.each do |user|
@results.add(user)
@@ -438,7 +494,15 @@ class Search
if @search_context.is_a?(User)
if opts[:private_messages]
- posts = posts.where("topics.id IN (SELECT topic_id FROM topic_allowed_users WHERE user_id = ?)", @search_context.id)
+ posts = posts.where("topics.id IN (SELECT topic_id
+ FROM topic_allowed_users
+ WHERE user_id = :user_id
+ UNION ALL
+ SELECT tg.topic_id
+ FROM topic_allowed_groups tg
+ JOIN group_users gu ON gu.user_id = :user_id AND
+ gu.group_id = tg.group_id)",
+ user_id: @search_context.id)
else
posts = posts.where("posts.user_id = #{@search_context.id}")
end
diff --git a/lib/search/grouped_search_results.rb b/lib/search/grouped_search_results.rb
index 387696c300c..2fa450bb745 100644
--- a/lib/search/grouped_search_results.rb
+++ b/lib/search/grouped_search_results.rb
@@ -25,6 +25,14 @@ class Search
@users = []
end
+ def find_user_data(guardian)
+ if user = guardian.user
+ topics = @posts.map(&:topic)
+ topic_lookup = TopicUser.lookup_for(user, topics)
+ topics.each { |ft| ft.user_data = topic_lookup[ft.id] }
+ end
+ end
+
def blurb(post)
GroupedSearchResults.blurb_for(post.cooked, @term, @blurb_length)
end
diff --git a/lib/sidekiq/pausable.rb b/lib/sidekiq/pausable.rb
index 3ef356c8312..c7cd9b5928d 100644
--- a/lib/sidekiq/pausable.rb
+++ b/lib/sidekiq/pausable.rb
@@ -68,15 +68,13 @@ end
# server middleware that will reschedule work whenever Sidekiq is paused
class Sidekiq::Pausable
- attr_reader :delay
-
def initialize(delay = 5.seconds)
@delay = delay
end
def call(worker, msg, queue)
if Sidekiq.paused?
- worker.class.perform_in(delay, *msg['args'])
+ worker.class.perform_in(@delay, *msg['args'])
else
yield
end
diff --git a/lib/site_setting_extension.rb b/lib/site_setting_extension.rb
index 90be6860fc3..7912d8dbea2 100644
--- a/lib/site_setting_extension.rb
+++ b/lib/site_setting_extension.rb
@@ -21,18 +21,18 @@ module SiteSettingExtension
end
def types
- @types ||= Enum.new(:string,
- :time,
- :fixnum,
- :float,
- :bool,
- :null,
- :enum,
- :list,
- :url_list,
- :host_list,
- :category_list,
- :value_list)
+ @types ||= Enum.new(string: 1,
+ time: 2,
+ fixnum: 3,
+ float: 4,
+ bool: 5,
+ null: 6,
+ enum: 7,
+ list: 8,
+ url_list: 9,
+ host_list: 10,
+ category_list: 11,
+ value_list: 12)
end
def mutex
@@ -121,9 +121,11 @@ module SiteSettingExtension
# exists it will be used instead of the setting and the setting will be hidden.
# Useful for things like API keys on multisite.
if opts[:shadowed_by_global] && GlobalSetting.respond_to?(name)
- hidden_settings << name
- shadowed_settings << name
- current_value = GlobalSetting.send(name)
+ unless (val = GlobalSetting.send(name)) == ''.freeze
+ hidden_settings << name
+ shadowed_settings << name
+ current_value = val
+ end
end
if opts[:refresh]
@@ -149,7 +151,7 @@ module SiteSettingExtension
# just like a setting, except that it is available in javascript via DiscourseSession
def client_setting(name, default = nil, opts = {})
setting(name, default, opts)
- client_settings << name
+ client_settings << name.to_sym
end
def settings_hash
@@ -371,8 +373,8 @@ module SiteSettingExtension
protected
def clear_cache!
- SiteText.text_for_cache.clear
Rails.cache.delete(SiteSettingExtension.client_settings_cache_key)
+ Site.clear_anon_cache!
end
def diff_hash(new_hash, old)
diff --git a/lib/site_text_class_methods.rb b/lib/site_text_class_methods.rb
deleted file mode 100644
index 7ff9b0a1c22..00000000000
--- a/lib/site_text_class_methods.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-module SiteTextClassMethods
-
- def text_types
- @types || []
- end
-
- def find_text_type(ct)
- SiteText.text_types.find {|t| t.text_type == ct.to_sym}
- end
-
- def add_text_type(text_type, opts=nil)
- opts ||= {}
- @types ||= []
- format = opts[:format] || :markdown
- @types << SiteTextType.new(text_type, format, opts)
- end
-
- def text_for_cache
- @text_for_cache ||= DistributedCache.new("text_for_cache")
- end
-
- def text_for(text_type, replacements=nil)
- text = nil
- text = text_for_cache[text_type] if replacements.blank?
- text ||= uncached_text_for(text_type, replacements)
- end
-
- def uncached_text_for(text_type, replacements=nil)
- store_cache = replacements.blank?
-
- replacements ||= {}
- replacements = {site_name: SiteSetting.title}.merge!(replacements)
- replacements = SiteSetting.settings_hash.merge!(replacements)
-
- site_text = SiteText.select(:value).find_by(text_type: text_type)
-
- result = ""
- if site_text.blank?
- ct = find_text_type(text_type)
- result = ct.default_text.dup if ct.present?
- else
- result = site_text.value.dup
- end
-
- result.gsub!(/\%\{[^}]+\}/) do |m|
- replacements[m[2..-2].to_sym] || m
- end
-
- if store_cache
- result.freeze
- text_for_cache[text_type] = result
- end
-
- result
- end
-
- def find_or_new(text_type)
- site_text = SiteText.find_by(text_type: text_type)
- return site_text if site_text.present?
-
- site_text = SiteText.new
- site_text.text_type = text_type
- site_text
- end
-
-end
diff --git a/lib/system_message.rb b/lib/system_message.rb
index 176298839cc..d38b5113f57 100644
--- a/lib/system_message.rb
+++ b/lib/system_message.rb
@@ -23,12 +23,22 @@ class SystemMessage
title = I18n.t("system_messages.#{type}.subject_template", params)
raw = I18n.t("system_messages.#{type}.text_body_template", params)
- PostCreator.create(Discourse.site_contact_user,
+ creator = PostCreator.new(Discourse.site_contact_user,
title: title,
raw: raw,
archetype: Archetype.private_message,
target_usernames: @recipient.username,
- subtype: TopicSubtype.system_message)
+ subtype: TopicSubtype.system_message,
+ skip_validations: true)
+
+ post = creator.create
+ if creator.errors.present?
+ raise StandardError, creator.errors.to_s
+ end
+
+ UserArchivedMessage.create!(user: Discourse.site_contact_user, topic: post.topic)
+
+ post
end
def create_from_system_user(type, params = {})
@@ -50,7 +60,7 @@ class SystemMessage
site_name: SiteSetting.title,
username: @recipient.username,
user_preferences_url: "#{Discourse.base_url}/users/#{@recipient.username_lower}/preferences",
- new_user_tips: SiteText.text_for(:usage_tips, base_url: Discourse.base_url),
+ new_user_tips: I18n.t('system_messages.usage_tips.text_body_template', base_url: Discourse.base_url),
site_password: "",
base_url: Discourse.base_url,
}
diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake
index a6fc5d09ff8..ed695bc7da5 100644
--- a/lib/tasks/assets.rake
+++ b/lib/tasks/assets.rake
@@ -75,18 +75,25 @@ task 'assets:precompile:before' do
end
task 'assets:precompile:css' => 'environment' do
- puts "Start compiling CSS: #{Time.zone.now}"
- RailsMultisite::ConnectionManagement.each_connection do |db|
- # Heroku precompiles assets before db migration, so tables may not exist.
- # css will get precompiled during first request instead in that case.
- if ActiveRecord::Base.connection.table_exists?(ColorScheme.table_name)
- puts "Compiling css for #{db}"
- [:desktop, :mobile, :desktop_rtl, :mobile_rtl].each do |target|
- puts DiscourseStylesheets.compile(target)
+ if ENV["DONT_PRECOMPILE_CSS"] == "1"
+ STDERR.puts "Skipping CSS precompilation, ensure CSS lives in a shared directory across hosts"
+ else
+ STDERR.puts "Start compiling CSS: #{Time.zone.now}"
+
+ RailsMultisite::ConnectionManagement.each_connection do |db|
+ # Heroku precompiles assets before db migration, so tables may not exist.
+ # css will get precompiled during first request instead in that case.
+
+ if ActiveRecord::Base.connection.table_exists?(ColorScheme.table_name)
+ STDERR.puts "Compiling css for #{db}"
+ [:desktop, :mobile, :desktop_rtl, :mobile_rtl].each do |target|
+ STDERR.puts "target: #{target} #{DiscourseStylesheets.compile(target)}"
+ end
end
end
+
+ STDERR.puts "Done compiling CSS: #{Time.zone.now}"
end
- puts "Done compiling CSS: #{Time.zone.now}"
end
def assets_path
@@ -95,8 +102,8 @@ end
def compress_node(from,to)
to_path = "#{assets_path}/#{to}"
-
- source_map_root = (d=File.dirname(from)) == "." ? "/assets" : "/assets/#{d}"
+ assets = cdn_relative_path("/assets")
+ source_map_root = assets + ((d=File.dirname(from)) == "." ? "" : "/#{d}")
source_map_url = cdn_path "/assets/#{to}.map"
cmd = "uglifyjs '#{assets_path}/#{from}' -p relative -c -m -o '#{to_path}' --source-map-root '#{source_map_root}' --source-map '#{assets_path}/#{to}.map' --source-map-url '#{source_map_url}'"
@@ -115,7 +122,7 @@ def compress_ruby(from,to)
data = File.read("#{assets_path}/#{from}")
uglified, map = Uglifier.new(comments: :none,
- screw_ie8: false,
+ screw_ie8: true,
source_filename: File.basename(from),
output_filename: File.basename(to)
)
@@ -128,7 +135,7 @@ end
def gzip(path)
STDERR.puts "gzip #{path}"
- STDERR.puts `gzip -f -c -9 #{path} > #{path}.gz`
+ STDERR.puts `gzip -f -c -7 #{path} > #{path}.gz`
end
def compress(from,to)
@@ -162,7 +169,7 @@ task 'assets:precompile' => 'assets:precompile:before' do
STDERR.puts "Compressing: #{file}"
# We can specify some files to never minify
- unless to_skip.include?(info['logical_path'])
+ unless (ENV["DONT_MINIFY"] == "1") || to_skip.include?(info['logical_path'])
FileUtils.mv(path, _path)
compress(_file,file)
end
diff --git a/lib/tasks/auto_annotate_models.rake b/lib/tasks/auto_annotate_models.rake
index fb1be240b3f..dde0cc03644 100644
--- a/lib/tasks/auto_annotate_models.rake
+++ b/lib/tasks/auto_annotate_models.rake
@@ -1,7 +1,7 @@
# NOTE: only doing this in development as some production environments (Heroku)
# NOTE: are sensitive to local FS writes, and besides -- it's just not proper
# NOTE: to have a dev-mode tool do its thing in production.
-if(Rails.env.development?)
+if(Rails.env.development? || Rails.env.test?)
task :set_annotation_options do
# You can override any of these by setting an environment variable of the
# same name.
@@ -18,8 +18,10 @@ if(Rails.env.development?)
'require' => "",
'exclude_tests' => "true",
'exclude_fixtures' => "true",
+ 'exclude_helpers' => "true",
'exclude_factories' => "true",
'exclude_serializers' => "true",
+ 'exclude_controllers' => "true",
'ignore_model_sub_dir' => "false",
'skip_on_db_migrate' => "true",
'format_bare' => "true",
diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake
index ab40a807c22..e34ac22d418 100644
--- a/lib/tasks/db.rake
+++ b/lib/tasks/db.rake
@@ -7,14 +7,16 @@ end
task 'db:migrate' => ['environment', 'set_locale'] do
SeedFu.seed
+ SiteSetting.last_vacuum = Time.now.to_i if SiteSetting.last_vacuum == 0
+
if SiteSetting.vacuum_db_days > 0 &&
SiteSetting.last_vacuum < (Time.now.to_i - SiteSetting.vacuum_db_days.days.to_i)
- puts "Running VACUUM FULL ANALYZE to reclaim DB space, this may take a while"
+ puts "Running VACUUM ANALYZE to reclaim DB space, this may take a while"
puts "Set to run every #{SiteSetting.vacuum_db_days} days (search for vacuum in site settings)"
puts "#{Time.now} starting..."
begin
- Topic.exec_sql("VACUUM FULL ANALYZE")
+ Topic.exec_sql("VACUUM ANALYZE")
rescue => e
puts "VACUUM failed, skipping"
puts e.to_s
diff --git a/lib/tasks/emails.rake b/lib/tasks/emails.rake
new file mode 100644
index 00000000000..1ab9c71d357
--- /dev/null
+++ b/lib/tasks/emails.rake
@@ -0,0 +1,56 @@
+def process_popmail(popmail)
+ begin
+ mail_string = popmail.pop
+ Email::Receiver.new(mail_string).process
+ rescue
+ putc "!"
+ else
+ putc "."
+ end
+end
+
+desc "use this task to import a mailbox into Disourse"
+task "emails:import" => :environment do
+ begin
+ unless SiteSetting.email_in
+ puts "ERROR: you should enable the 'email_in' site setting before running this task"
+ exit(1)
+ end
+
+ address = ENV["ADDRESS"].presence || "pop.gmail.com"
+ port = (ENV["PORT"].presence || 995).to_i
+ ssl = (ENV["SSL"].presence || "1") == "1"
+ username = ENV["USERNAME"].presence
+ password = ENV["PASSWORD"].presence
+
+ if username.blank?
+ puts "ERROR: expecting USERNAME= rake emails:import"
+ exit(2)
+ elsif password.blank?
+ puts "ERROR: expecting PASSWORD= rake emails:import"
+ exit(3)
+ end
+
+ RateLimiter.disable
+
+ mails_left = 1
+ pop3 = Net::POP3.new(address, port)
+ pop3.enable_ssl if ssl
+
+ while mails_left > 0
+ pop3.start(username, password) do |pop|
+ pop.delete_all do |p|
+ process_popmail(p)
+ end
+ mails_left = pop.n_mails
+ end
+ end
+
+ puts "Done"
+ rescue Net::POPAuthenticationError
+ puts "AUTH EXCEPTION: please make sure your credentials are correct."
+ exit(10)
+ ensure
+ RateLimiter.enable
+ end
+end
diff --git a/lib/tasks/posts.rake b/lib/tasks/posts.rake
index 5f661e5500c..37fb02bfafd 100644
--- a/lib/tasks/posts.rake
+++ b/lib/tasks/posts.rake
@@ -8,6 +8,24 @@ task 'posts:refresh_oneboxes' => :environment do
ENV['RAILS_DB'] ? rebake_posts(invalidate_oneboxes: true) : rebake_posts_all_sites(invalidate_oneboxes: true)
end
+desc 'Rebake all posts with a quote using a letter_avatar'
+task 'posts:fix_letter_avatars' => :environment do
+ return unless SiteSetting.external_system_avatars_enabled
+
+ search = Post.where("user_id <> -1")
+ .where("raw LIKE '%/letter\_avatar/%' OR cooked LIKE '%/letter\_avatar/%'")
+
+ rebaked = 0
+ total = search.count
+
+ search.order(updated_at: :asc).find_each do |post|
+ rebake_post(post)
+ print_status(rebaked += 1, total)
+ end
+
+ puts "", "#{rebaked} posts done!", ""
+end
+
def rebake_posts_all_sites(opts = {})
RailsMultisite::ConnectionManagement.each_connection do |db|
rebake_posts(opts)
@@ -33,7 +51,7 @@ def rebake_posts(opts = {})
puts "", "#{rebaked} posts done!", "-" * 50
end
-def rebake_post(post, opts)
+def rebake_post(post, opts = {})
post.rebake!(opts)
rescue => e
puts "", "Failed to rebake (topic_id: #{post.topic_id}, post_id: #{post.id})", e, e.backtrace.join("\n")
diff --git a/lib/tasks/uploads.rake b/lib/tasks/uploads.rake
index dbbf8908297..9000c9b8b98 100644
--- a/lib/tasks/uploads.rake
+++ b/lib/tasks/uploads.rake
@@ -134,7 +134,7 @@ def migrate_to_s3
# retrieve the path to the local file
path = local.path_for(upload)
# make sure the file exists locally
- if !File.exists?(path)
+ if !path or !File.exists?(path)
putc "X"
next
end
diff --git a/lib/text_sentinel.rb b/lib/text_sentinel.rb
index 1210ad379b2..8e01a588813 100644
--- a/lib/text_sentinel.rb
+++ b/lib/text_sentinel.rb
@@ -73,7 +73,7 @@ class TextSentinel
def seems_quiet?
# We don't allow all upper case content in english
- not((@text =~ /[A-Z]+/) && !(@text =~ /[^[:ascii:]]/) && (@text == @text.upcase))
+ SiteSetting.allow_uppercase_posts || not((@text =~ /[A-Z]+/) && !(@text =~ /[^[:ascii:]]/) && (@text == @text.upcase))
end
end
diff --git a/lib/topic_creator.rb b/lib/topic_creator.rb
index cff51e7c89a..d0548885d3d 100644
--- a/lib/topic_creator.rb
+++ b/lib/topic_creator.rb
@@ -64,15 +64,29 @@ class TopicCreator
topic.notifier.watch_topic!(topic.user_id)
end
- user_ids = topic.topic_allowed_users(true).pluck(:user_id)
- user_ids += topic.topic_allowed_groups(true).map { |t| t.group.users.pluck(:id) }.flatten
-
- user_ids.uniq.reject{ |id| id == topic.user_id }.each do |user_id|
- topic.notifier.watch_topic!(user_id, nil) unless user_id == -1
+ topic.topic_allowed_users(true).each do |tau|
+ next if tau.user_id == -1 || tau.user_id == topic.user_id
+ topic.notifier.watch!(tau.user_id)
end
- CategoryUser.auto_watch_new_topic(topic)
- CategoryUser.auto_track_new_topic(topic)
+ topic.topic_allowed_groups(true).each do |tag|
+ tag.group.group_users.each do |gu|
+ next if gu.user_id == -1 || gu.user_id == topic.user_id
+ action = case gu.notification_level
+ when TopicUser.notification_levels[:tracking] then "track!"
+ when TopicUser.notification_levels[:regular] then "regular!"
+ when TopicUser.notification_levels[:muted] then "mute!"
+ when TopicUser.notification_levels[:watching] then "watch!"
+ else "track!"
+ end
+ topic.notifier.send(action, gu.user_id)
+ end
+ end
+
+ unless topic.private_message?
+ CategoryUser.auto_watch_new_topic(topic)
+ CategoryUser.auto_track_new_topic(topic)
+ end
end
def setup_topic_params
@@ -95,7 +109,7 @@ class TopicCreator
category = find_category
- @guardian.ensure_can_create!(Topic, category) unless @opts[:skip_validations]
+ @guardian.ensure_can_create!(Topic, category) unless (@opts[:skip_validations] || @opts[:archetype] == Archetype.private_message)
topic_params[:category_id] = category.id if category.present?
@@ -150,22 +164,36 @@ class TopicCreator
def add_users(topic, usernames)
return unless usernames
- User.where(username: usernames.split(',')).each do |user|
+
+ names = usernames.split(',').flatten
+ len = 0
+
+ User.where(username: names).each do |user|
check_can_send_permission!(topic, user)
@added_users << user
topic.topic_allowed_users.build(user_id: user.id)
+ len += 1
end
+
+ rollback_with!(topic, :target_user_not_found) unless len == names.length
end
def add_groups(topic, groups)
return unless groups
- Group.where(name: groups.split(',')).each do |group|
+ names = groups.split(',').flatten
+ len = 0
+
+ Group.where(name: names).each do |group|
check_can_send_permission!(topic, group)
topic.topic_allowed_groups.build(group_id: group.id)
+ len += 1
+ group.update_columns(has_messages: true) unless group.has_messages
end
+
+ rollback_with!(topic, :target_group_not_found) unless len == names.length
end
def check_can_send_permission!(topic, obj)
- rollback_with!(topic, :cant_send_pm) unless @guardian.can_send_private_message?(obj)
+ rollback_with!(topic, :cant_send_pm) unless @opts[:skip_validations] || @guardian.can_send_private_message?(obj)
end
end
diff --git a/lib/topic_query.rb b/lib/topic_query.rb
index 73d47fd4ada..1c061107c4b 100644
--- a/lib/topic_query.rb
+++ b/lib/topic_query.rb
@@ -6,6 +6,7 @@
require_dependency 'topic_list'
require_dependency 'suggested_topics_builder'
require_dependency 'topic_query_sql'
+require_dependency 'avatar_lookup'
class TopicQuery
# Could be rewritten to %i if Ruby 1.9 is no longer supported
@@ -28,6 +29,7 @@ class TopicQuery
search
slow_platform
filter
+ group_name
q)
# Maps `order` to a columns in `topics`
@@ -42,10 +44,14 @@ class TopicQuery
'created' => 'created_at'
}
+ cattr_accessor :results_filter_callbacks
+ self.results_filter_callbacks = []
+
def initialize(user=nil, options={})
options.assert_valid_keys(VALID_OPTIONS)
@options = options.dup
@user = user
+ @guardian = Guardian.new(@user)
end
def joined_topic_user(list=nil)
@@ -54,16 +60,62 @@ class TopicQuery
# Return a list of suggested topics for a topic
def list_suggested_for(topic)
+ return if topic.private_message? && !@user
+
builder = SuggestedTopicsBuilder.new(topic)
+ pm_params =
+ if topic.private_message?
+
+ group_ids = topic.topic_allowed_groups
+ .where('group_id IN (SELECT group_id FROM group_users WHERE user_id = :user_id)', user_id: @user.id)
+ .pluck(:group_id)
+ {
+ topic: topic,
+ my_group_ids: group_ids,
+ target_group_ids: topic.topic_allowed_groups.pluck(:group_id),
+ target_user_ids: topic.topic_allowed_users.pluck(:user_id) - [@user.id]
+ }
+ end
+
# When logged in we start with different results
if @user
- builder.add_results(unread_results(topic: topic, per_page: builder.results_left), :high)
- builder.add_results(new_results(topic: topic, per_page: builder.category_results_left)) unless builder.full?
- end
- builder.add_results(random_suggested(topic, builder.results_left, builder.excluded_topic_ids)) unless builder.full?
+ if topic.private_message?
- create_list(:suggested, {unordered: true}, builder.results)
+ builder.add_results(new_messages(
+ pm_params.merge(count: builder.results_left)
+ )) unless builder.full?
+
+ builder.add_results(unread_messages(
+ pm_params.merge(count: builder.results_left)
+ )) unless builder.full?
+
+ else
+ builder.add_results(unread_results(topic: topic, per_page: builder.results_left), :high)
+ builder.add_results(new_results(topic: topic, per_page: builder.category_results_left)) unless builder.full?
+ end
+ end
+
+ if topic.private_message?
+
+ builder.add_results(related_messages_group(
+ pm_params.merge(count: [3, builder.results_left].max,
+ exclude: builder.excluded_topic_ids)
+ )) if pm_params[:my_group_ids].present?
+
+ builder.add_results(related_messages_user(
+ pm_params.merge(count: [3, builder.results_left].max,
+ exclude: builder.excluded_topic_ids)
+ ))
+ else
+ builder.add_results(random_suggested(topic, builder.results_left, builder.excluded_topic_ids)) unless builder.full?
+ end
+
+ params = {unordered: true}
+ if topic.private_message?
+ params[:preload_posters] = true
+ end
+ create_list(:suggested, params, builder.results)
end
# The latest view of topics
@@ -112,23 +164,61 @@ class TopicQuery
end
end
+ def not_archived(list, user)
+ list.joins("LEFT JOIN user_archived_messages um
+ ON um.user_id = #{user.id.to_i} AND um.topic_id = topics.id")
+ .where('um.user_id IS NULL')
+ end
+
def list_private_messages(user)
- list = private_messages_for(user)
+ list = private_messages_for(user, :user)
+
+ list = not_archived(list, user)
+ .where('NOT (topics.participant_count = 1 AND topics.user_id = ?)', user.id)
+
+ create_list(:private_messages, {}, list)
+ end
+
+ def list_private_messages_archive(user)
+ list = private_messages_for(user, :user)
+ list = list.joins(:user_archived_messages).where('user_archived_messages.user_id = ?', user.id)
create_list(:private_messages, {}, list)
end
def list_private_messages_sent(user)
- list = private_messages_for(user)
- list = list.where(user_id: user.id)
+ list = private_messages_for(user, :user)
+ list = list.where('EXISTS (
+ SELECT 1 FROM posts
+ WHERE posts.topic_id = topics.id AND
+ posts.user_id = ?
+ )', user.id)
+ list = not_archived(list, user)
create_list(:private_messages, {}, list)
end
def list_private_messages_unread(user)
- list = private_messages_for(user)
+ list = private_messages_for(user, :user)
list = list.where("tu.last_read_post_number IS NULL OR tu.last_read_post_number < topics.highest_post_number")
create_list(:private_messages, {}, list)
end
+ def list_private_messages_group(user)
+ list = private_messages_for(user, :group)
+ group_id = Group.where('name ilike ?', @options[:group_name]).pluck(:id).first
+ list = list.joins("LEFT JOIN group_archived_messages gm ON gm.topic_id = topics.id AND
+ gm.group_id = #{group_id.to_i}")
+ list = list.where("gm.id IS NULL")
+ create_list(:private_messages, {}, list)
+ end
+
+ def list_private_messages_group_archive(user)
+ list = private_messages_for(user, :group)
+ group_id = Group.where('name ilike ?', @options[:group_name]).pluck(:id).first
+ list = list.joins("JOIN group_archived_messages gm ON gm.topic_id = topics.id AND
+ gm.group_id = #{group_id.to_i}")
+ create_list(:private_messages, {}, list)
+ end
+
def list_category_topic_ids(category)
query = default_results(category: category.id)
pinned_ids = query.where('pinned_at IS NOT NULL AND category_id = ?', category.id)
@@ -156,7 +246,6 @@ class TopicQuery
end
def prioritize_pinned_topics(topics, options)
-
pinned_clause = options[:category_id] ? "topics.category_id = #{options[:category_id].to_i} AND" : "pinned_globally AND "
pinned_clause << " pinned_at IS NOT NULL "
if @user
@@ -185,36 +274,71 @@ class TopicQuery
topics = yield(topics) if block_given?
options = options.merge(@options)
- if (options[:order] || "activity") == "activity" && !options[:unordered]
+ if ["activity","default"].include?(options[:order] || "activity") &&
+ !options[:unordered] &&
+ filter != :private_messages
topics = prioritize_pinned_topics(topics, options)
end
- topics = topics.to_a.each do |t|
+ topics = topics.to_a
+
+ if options[:preload_posters]
+ user_ids = []
+ topics.each do |ft|
+ user_ids << ft.user_id << ft.last_post_user_id << ft.featured_user_ids << ft.allowed_user_ids
+ end
+
+ avatar_lookup = AvatarLookup.new(user_ids)
+ topics.each do |t|
+ t.posters = t.posters_summary(avatar_lookup: avatar_lookup)
+ end
+ end
+
+ topics.each do |t|
+
t.allowed_user_ids = filter == :private_messages ? t.allowed_users.map{|u| u.id} : []
end
- list = TopicList.new(filter, @user, topics.to_a, options.merge(@options))
+ list = TopicList.new(filter, @user, topics, options.merge(@options))
list.per_page = per_page_setting
list
end
def latest_results(options={})
result = default_results(options)
+ result = remove_muted_topics(result, @user) unless options && options[:state] == "muted".freeze
result = remove_muted_categories(result, @user, exclude: options[:category])
+
+ # plugins can remove topics here:
+ self.class.results_filter_callbacks.each do |filter_callback|
+ result = filter_callback.call(:latest, result, @user, options)
+ end
+
result
end
def unread_results(options={})
result = TopicQuery.unread_filter(default_results(options.reverse_merge(:unordered => true)))
.order('CASE WHEN topics.user_id = tu.user_id THEN 1 ELSE 2 END')
+
+ self.class.results_filter_callbacks.each do |filter_callback|
+ result = filter_callback.call(:unread, result, @user, options)
+ end
+
suggested_ordering(result, options)
end
def new_results(options={})
# TODO does this make sense or should it be ordered on created_at
# it is ordering on bumped_at now
- result = TopicQuery.new_filter(default_results(options.reverse_merge(:unordered => true)), @user.treat_as_new_topic_start_date)
+ result = TopicQuery.new_filter(default_results(options.reverse_merge(:unordered => true)), @user.user_option.treat_as_new_topic_start_date)
+ result = remove_muted_topics(result, @user)
result = remove_muted_categories(result, @user, exclude: options[:category])
+
+ self.class.results_filter_callbacks.each do |filter_callback|
+ result = filter_callback.call(:new, result, @user, options)
+ end
+
suggested_ordering(result, options)
end
@@ -224,17 +348,27 @@ class TopicQuery
@options[:slow_platform] ? 15 : 30
end
-
- def private_messages_for(user)
+ def private_messages_for(user, type)
options = @options
options.reverse_merge!(per_page: per_page_setting)
- # Start with a list of all topics
- result = Topic.includes(:allowed_users)
- .where("topics.id IN (SELECT topic_id FROM topic_allowed_users WHERE user_id = #{user.id.to_i})")
- .joins("LEFT OUTER JOIN topic_users AS tu ON (topics.id = tu.topic_id AND tu.user_id = #{user.id.to_i})")
- .order("topics.bumped_at DESC")
- .private_messages
+ result = Topic
+
+ if type == :group
+ result = result.includes(:allowed_groups)
+ result = result.where("topics.id IN (SELECT topic_id FROM topic_allowed_groups
+ WHERE group_id IN (
+ SELECT group_id FROM group_users WHERE user_id = #{user.id.to_i}) AND
+ group_id IN (SELECT id FROM groups WHERE name ilike ?)
+ )", @options[:group_name])
+ elsif type == :user
+ result = result.includes(:allowed_users)
+ result = result.where("topics.id IN (SELECT topic_id FROM topic_allowed_users WHERE user_id = #{user.id.to_i})")
+ end
+
+ result = result.joins("LEFT OUTER JOIN topic_users AS tu ON (topics.id = tu.topic_id AND tu.user_id = #{user.id.to_i})")
+ .order("topics.bumped_at DESC")
+ .private_messages
result = result.limit(options[:per_page]) unless options[:limit] == false
result = result.visible if options[:visible] || @user.nil? || @user.regular?
@@ -267,6 +401,11 @@ class TopicQuery
return result.includes(:first_post).order("(SELECT like_count FROM posts p3 WHERE p3.topic_id = topics.id AND p3.post_number = 1) #{sort_dir}")
end
+ if sort_column.start_with?('custom_fields')
+ field = sort_column.split('.')[1]
+ return result.order("(SELECT CASE WHEN EXISTS (SELECT true FROM topic_custom_fields tcf WHERE tcf.topic_id::integer = topics.id::integer AND tcf.name = '#{field}') THEN (SELECT value::integer FROM topic_custom_fields tcf WHERE tcf.topic_id::integer = topics.id::integer AND tcf.name = '#{field}') ELSE 0 END) #{sort_dir}")
+ end
+
result.order("topics.#{sort_column} #{sort_dir}")
end
@@ -359,7 +498,7 @@ class TopicQuery
when 'unlisted'
result = result.where('NOT topics.visible')
when 'deleted'
- guardian = Guardian.new(@user)
+ guardian = @guardian
if guardian.is_staff?
result = result.where('topics.deleted_at IS NOT NULL')
require_deleted_clause = false
@@ -391,9 +530,16 @@ class TopicQuery
result = result.where('topics.posts_count <= ?', options[:max_posts]) if options[:max_posts].present?
result = result.where('topics.posts_count >= ?', options[:min_posts]) if options[:min_posts].present?
- Guardian.new(@user).filter_allowed_categories(result)
+ @guardian.filter_allowed_categories(result)
end
+ def remove_muted_topics(list, user)
+ if user
+ list = list.where('COALESCE(tu.notification_level,1) > :muted', muted: TopicUser.notification_levels[:muted])
+ end
+
+ list
+ end
def remove_muted_categories(list, user, opts=nil)
category_id = get_category_id(opts[:exclude]) if opts
@@ -407,14 +553,92 @@ class TopicQuery
AND cu.category_id = topics.category_id
AND cu.notification_level = :muted
AND cu.category_id <> :category_id
+ AND (tu.notification_level IS NULL OR tu.notification_level < :tracking)
)", user_id: user.id,
muted: CategoryUser.notification_levels[:muted],
+ tracking: TopicUser.notification_levels[:tracking],
category_id: category_id || -1)
end
list
end
+ def new_messages(params)
+
+ TopicQuery.new_filter(messages_for_groups_or_user(params[:my_group_ids]), 10.years.ago)
+ .limit(params[:count])
+
+ end
+
+ def unread_messages(params)
+ TopicQuery.unread_filter(messages_for_groups_or_user(params[:my_group_ids]))
+ .limit(params[:count])
+ end
+
+ def related_messages_user(params)
+ messages_for_user
+ .limit(params[:count])
+ .where('topics.id IN (
+ SELECT ta.topic_id
+ FROM topic_allowed_users ta
+ WHERE ta.user_id IN (:user_ids)
+ ) OR
+ topics.id IN (
+ SELECT tg.topic_id
+ FROM topic_allowed_groups tg
+ WHERE tg.group_id IN (:group_ids)
+ )
+ ', user_ids: (params[:target_user_ids] || []) + [-10],
+ group_ids: ((params[:target_group_ids] - params[:my_group_ids]) || []) + [-10])
+
+ end
+
+ def related_messages_group(params)
+ messages_for_groups_or_user(params[:my_group_ids])
+ .limit(params[:count])
+ .where('topics.id IN (
+ SELECT ta.topic_id
+ FROM topic_allowed_users ta
+ WHERE ta.user_id IN (:user_ids)
+ ) OR
+ topics.id IN (
+ SELECT tg.topic_id
+ FROM topic_allowed_groups tg
+ WHERE tg.group_id IN (:group_ids)
+ )
+ ', user_ids: (params[:target_user_ids] || []) + [-10],
+ group_ids: ((params[:target_group_ids] - params[:my_group_ids]) || []) + [-10])
+
+ end
+
+ def messages_for_groups_or_user(group_ids)
+ if group_ids.present?
+ base_messages
+ .where('topics.id IN (
+ SELECT topic_id
+ FROM topic_allowed_groups tg
+ JOIN group_users gu ON gu.user_id = :user_id AND gu.group_id = tg.group_id
+ WHERE gu.group_id IN (:group_ids)
+ )', user_id: @user.id, group_ids: group_ids)
+ else
+ messages_for_user
+ end
+ end
+
+ def messages_for_user
+ base_messages.where('topics.id IN (
+ SELECT topic_id
+ FROM topic_allowed_users
+ WHERE user_id = :user_id
+ )', user_id: @user.id)
+ end
+
+ def base_messages
+ Topic
+ .where('topics.archetype = ?', Archetype.private_message)
+ .joins("LEFT JOIN topic_users tu ON topics.id = tu.topic_id AND tu.user_id = #{@user.id.to_i}")
+ .order('topics.bumped_at DESC')
+ end
def random_suggested(topic, count, excluded_topic_ids=[])
result = default_results(unordered: true, per_page: count).where(closed: false, archived: false)
diff --git a/lib/topic_view.rb b/lib/topic_view.rb
index 24a49d24cf3..9f84dd8063b 100644
--- a/lib/topic_view.rb
+++ b/lib/topic_view.rb
@@ -16,6 +16,10 @@ class TopicView
20
end
+ def self.default_post_custom_fields
+ @default_post_custom_fields ||= ["action_code_who"]
+ end
+
def self.post_custom_fields_whitelisters
@post_custom_fields_whitelisters ||= Set.new
end
@@ -25,7 +29,8 @@ class TopicView
end
def self.whitelisted_post_custom_fields(user)
- post_custom_fields_whitelisters.map { |w| w.call(user) }.flatten.uniq
+ wpcf = default_post_custom_fields + post_custom_fields_whitelisters.map { |w| w.call(user) }
+ wpcf.flatten.uniq
end
def initialize(topic_id, user=nil, options={})
@@ -38,10 +43,7 @@ class TopicView
self.instance_variable_set("@#{key}".to_sym, value)
end
- # work around people somehow sending in arrays,
- # arrays are not supported
- @page = @page.to_i rescue 1
- @page = 1 if @page.zero?
+ @page = 1 if (!@page || @page.zero?)
@chunk_size = options[:slow_platform] ? TopicView.slow_chunk_size : TopicView.chunk_size
@limit ||= @chunk_size
@@ -52,13 +54,11 @@ class TopicView
filter_posts(options)
- if SiteSetting.public_user_custom_fields.present? && @posts
- @user_custom_fields = User.custom_fields_for_ids(@posts.map(&:user_id), SiteSetting.public_user_custom_fields.split('|'))
- end
-
- if @guardian.is_staff? && SiteSetting.staff_user_custom_fields.present? && @posts
- @user_custom_fields ||= {}
- @user_custom_fields.deep_merge!(User.custom_fields_for_ids(@posts.map(&:user_id), SiteSetting.staff_user_custom_fields.split('|')))
+ if @posts
+ added_fields = User.whitelisted_user_custom_fields(@guardian)
+ if added_fields.present?
+ @user_custom_fields = User.custom_fields_for_ids(@posts.map(&:user_id), added_fields)
+ end
end
whitelisted_fields = TopicView.whitelisted_post_custom_fields(@user)
@@ -159,9 +159,18 @@ class TopicView
(excerpt || "").gsub(/\n/, ' ').strip
end
+ def read_time
+ return nil if @post_number.present? && @post_number.to_i != 1 # only show for topic URLs
+ (@topic.word_count/SiteSetting.read_time_word_count).floor if @topic.word_count
+ end
+
+ def like_count
+ return nil if @post_number.present? && @post_number.to_i != 1 # only show for topic URLs
+ @topic.like_count
+ end
+
def image_url
- return nil if desired_post.blank?
- desired_post.user.try(:small_avatar_url)
+ @topic.image_url || SiteSetting.default_opengraph_image_url
end
def filter_posts(opts = {})
@@ -169,7 +178,7 @@ class TopicView
return filter_posts_by_ids(opts[:post_ids]) if opts[:post_ids].present?
return filter_best(opts[:best], opts) if opts[:best].present?
- filter_posts_paged(opts[:page].to_i)
+ filter_posts_paged(@page)
end
def primary_group_names
@@ -186,7 +195,8 @@ class TopicView
result[g[0]] = g[1]
end
end
- result
+
+ @group_names = result
end
# Find the sort order for a post in the topic
@@ -280,7 +290,6 @@ class TopicView
end
def suggested_topics
- return nil if topic.private_message?
@suggested_topics ||= TopicQuery.new(@user).list_suggested_for(topic)
end
diff --git a/lib/topics_bulk_action.rb b/lib/topics_bulk_action.rb
index 337c32eac1a..541d283a1a0 100644
--- a/lib/topics_bulk_action.rb
+++ b/lib/topics_bulk_action.rb
@@ -1,14 +1,17 @@
class TopicsBulkAction
- def initialize(user, topic_ids, operation)
+ def initialize(user, topic_ids, operation, options={})
@user = user
@topic_ids = topic_ids
@operation = operation
@changed_ids = []
+ @options = options
end
def self.operations
- @operations ||= %w(change_category close archive change_notification_level reset_read dismiss_posts delete)
+ @operations ||= %w(change_category close archive change_notification_level
+ reset_read dismiss_posts delete unlist archive_messages
+ move_messages_to_inbox)
end
def self.register_operation(name, &block)
@@ -24,6 +27,43 @@ class TopicsBulkAction
private
+ def find_group
+ return unless @options[:group]
+
+ group = Group.where('name ilike ?', @options[:group]).first
+ raise Discourse::InvalidParameters.new(:group) unless group
+ unless group.group_users.where(user_id: @user.id).exists?
+ raise Discourse::InvalidParameters.new(:group)
+ end
+ group
+ end
+
+ def move_messages_to_inbox
+ group = find_group
+ topics.each do |t|
+ if guardian.can_see?(t) && t.private_message?
+ if group
+ GroupArchivedMessage.move_to_inbox!(group.id, t.id)
+ else
+ UserArchivedMessage.move_to_inbox!(@user.id,t.id)
+ end
+ end
+ end
+ end
+
+ def archive_messages
+ group = find_group
+ topics.each do |t|
+ if guardian.can_see?(t) && t.private_message?
+ if group
+ GroupArchivedMessage.archive!(group.id, t.id)
+ else
+ UserArchivedMessage.archive!(@user.id, t.id)
+ end
+ end
+ end
+ end
+
def dismiss_posts
sql = "
UPDATE topic_users tu
@@ -66,6 +106,15 @@ class TopicsBulkAction
end
end
+ def unlist
+ topics.each do |t|
+ if guardian.can_moderate?(t)
+ t.update_status('visible', false, @user)
+ @changed_ids << t.id
+ end
+ end
+ end
+
def archive
topics.each do |t|
if guardian.can_moderate?(t)
diff --git a/lib/trust_level.rb b/lib/trust_level.rb
index a81f5fb3831..a3044bcdd3b 100644
--- a/lib/trust_level.rb
+++ b/lib/trust_level.rb
@@ -14,7 +14,7 @@ class TrustLevel
end
def levels
- @levels ||= Enum.new(:newuser, :basic, :regular, :leader, :elder, start: 0)
+ @levels ||= Enum.new(:newuser, :basic, :member, :regular, :leader, start: 0)
end
def all
diff --git a/lib/user_name_suggester.rb b/lib/user_name_suggester.rb
index 4819a3f879b..e809be0b41a 100644
--- a/lib/user_name_suggester.rb
+++ b/lib/user_name_suggester.rb
@@ -1,4 +1,5 @@
module UserNameSuggester
+ GENERIC_NAMES = ['i', 'me', 'info', 'support', 'admin', 'webmaster', 'hello', 'mail', 'office', 'contact', 'team']
def self.suggest(name, allow_username = nil)
return unless name.present?
@@ -11,7 +12,7 @@ module UserNameSuggester
# When 'walter@white.com' take 'walter'
name = Regexp.last_match[1]
# When 'me@eviltrout.com' take 'eviltrout'
- name = Regexp.last_match[2] if ['i', 'me'].include?(name)
+ name = Regexp.last_match[2] if GENERIC_NAMES.include?(name)
end
name
end
@@ -35,15 +36,27 @@ module UserNameSuggester
def self.sanitize_username(name)
name = ActiveSupport::Inflector.transliterate(name)
- name = name.gsub(/^[^[:alnum:]]+|\W+$/, "")
- .gsub(/\W+/, "_")
- .gsub(/^\_+/, '')
- .gsub(/[\-_\.]{2,}/, "_")
+ # 1. replace characters that aren't allowed with '_'
+ name.gsub!(UsernameValidator::CONFUSING_EXTENSIONS, "_")
+ name.gsub!(/[^\w.-]/, "_")
+ # 2. removes unallowed leading characters
+ name.gsub!(/^\W+/, "")
+ # 3. removes unallowed trailing characters
+ name = remove_unallowed_trailing_characters(name)
+ # 4. unify special characters
+ name.gsub!(/[-_.]{2,}/, "_")
+ name
+ end
+
+ def self.remove_unallowed_trailing_characters(name)
+ name.gsub!(/[^A-Za-z0-9]+$/, "")
name
end
def self.rightsize_username(name)
- name.ljust(User.username_length.begin, '1')[0, User.username_length.end]
+ name = name[0, User.username_length.end]
+ name = remove_unallowed_trailing_characters(name)
+ name.ljust(User.username_length.begin, '1')
end
end
diff --git a/lib/validators/allow_user_locale_enabled_validator.rb b/lib/validators/allow_user_locale_enabled_validator.rb
new file mode 100644
index 00000000000..ebae4be4509
--- /dev/null
+++ b/lib/validators/allow_user_locale_enabled_validator.rb
@@ -0,0 +1,18 @@
+class AllowUserLocaleEnabledValidator
+
+ def initialize(opts={})
+ @opts = opts
+ end
+
+ def valid_value?(val)
+ # only validate when enabling setting locale from headers
+ return true if val == "f"
+ # ensure that allow_user_locale is enabled
+ SiteSetting.allow_user_locale
+ end
+
+ def error_message
+ I18n.t("site_settings.errors.user_locale_not_enabled");
+ end
+
+end
\ No newline at end of file
diff --git a/lib/validators/password_validator.rb b/lib/validators/password_validator.rb
index cb7cb457e2d..7b8ee765e2a 100644
--- a/lib/validators/password_validator.rb
+++ b/lib/validators/password_validator.rb
@@ -6,15 +6,21 @@ class PasswordValidator < ActiveModel::EachValidator
return unless record.password_required?
if value.nil?
record.errors.add(attribute, :blank)
+ elsif value.length < SiteSetting.min_admin_password_length && (record.admin? || is_developer?(record.email))
+ record.errors.add(attribute, :too_short, count: SiteSetting.min_admin_password_length)
elsif value.length < SiteSetting.min_password_length
record.errors.add(attribute, :too_short, count: SiteSetting.min_password_length)
elsif record.username.present? && value == record.username
record.errors.add(attribute, :same_as_username)
- elsif record.username.present? && value == record.email
+ elsif record.email.present? && value == record.email
record.errors.add(attribute, :same_as_email)
elsif SiteSetting.block_common_passwords && CommonPasswords.common_password?(value)
record.errors.add(attribute, :common)
end
end
+ def is_developer?(value)
+ Rails.configuration.respond_to?(:developer_emails) && Rails.configuration.developer_emails.include?(value)
+ end
+
end
diff --git a/lib/validators/pop3_polling_enabled_setting_validator.rb b/lib/validators/pop3_polling_enabled_setting_validator.rb
new file mode 100644
index 00000000000..f62e252bbbe
--- /dev/null
+++ b/lib/validators/pop3_polling_enabled_setting_validator.rb
@@ -0,0 +1,44 @@
+require "net/pop"
+
+class POP3PollingEnabledSettingValidator
+
+ def initialize(opts={})
+ @opts = opts
+ end
+
+ def valid_value?(val)
+ # only validate when enabling polling
+ return true if val == "f"
+ # ensure we can authenticate
+ SiteSetting.pop3_polling_host.present? &&
+ SiteSetting.pop3_polling_username.present? &&
+ SiteSetting.pop3_polling_password.present? &&
+ authentication_works?
+ end
+
+ def error_message
+ if SiteSetting.pop3_polling_host.blank?
+ I18n.t("site_settings.errors.pop3_polling_host_is_empty")
+ elsif SiteSetting.pop3_polling_username.blank?
+ I18n.t("site_settings.errors.pop3_polling_username_is_empty")
+ elsif SiteSetting.pop3_polling_password.blank?
+ I18n.t("site_settings.errors.pop3_polling_password_is_empty")
+ elsif !authentication_works?
+ I18n.t("site_settings.errors.pop3_polling_authentication_failed")
+ end
+ end
+
+ private
+
+ def authentication_works?
+ @authentication_works ||= begin
+ pop3 = Net::POP3.new(SiteSetting.pop3_polling_host, SiteSetting.pop3_polling_port)
+ pop3.enable_ssl(OpenSSL::SSL::VERIFY_NONE) if SiteSetting.pop3_polling_ssl
+ pop3.auth_only(SiteSetting.pop3_polling_username, SiteSetting.pop3_polling_password)
+ rescue Net::POPAuthenticationError
+ false
+ else
+ true
+ end
+ end
+end
diff --git a/lib/validators/post_validator.rb b/lib/validators/post_validator.rb
index fc16571476d..206d0bfbc98 100644
--- a/lib/validators/post_validator.rb
+++ b/lib/validators/post_validator.rb
@@ -1,24 +1,28 @@
require_dependency 'validators/stripped_length_validator'
+
module Validators; end
+
class Validators::PostValidator < ActiveModel::Validator
def validate(record)
presence(record)
- unless Discourse.static_doc_topic_ids.include?(record.topic_id) && record.acting_user.try(:admin?)
- stripped_length(record)
- raw_quality(record)
- max_posts_validator(record)
- max_mention_validator(record)
- max_images_validator(record)
- max_attachments_validator(record)
- max_links_validator(record)
- unique_post_validator(record)
- end
+
+ return if record.acting_user.try(:staged?)
+ return if Discourse.static_doc_topic_ids.include?(record.topic_id) && record.acting_user.try(:admin?)
+
+ stripped_length(record)
+ raw_quality(record)
+ max_posts_validator(record)
+ max_mention_validator(record)
+ max_images_validator(record)
+ max_attachments_validator(record)
+ max_links_validator(record)
+ unique_post_validator(record)
end
def presence(post)
-
post.errors.add(:raw, :blank, options) if post.raw.blank?
+
unless options[:skip_topic]
post.errors.add(:topic_id, :blank, options) if post.topic_id.blank?
end
@@ -32,7 +36,7 @@ class Validators::PostValidator < ActiveModel::Validator
range = if post.topic.try(:private_message?)
# private message
SiteSetting.private_message_post_length
- elsif ( post.is_first_post? || (post.topic.present? && post.topic.posts_count == 0) )
+ elsif post.is_first_post? || (post.topic.present? && post.topic.posts_count == 0)
# creating/editing first post
SiteSetting.first_post_length
else
@@ -50,10 +54,12 @@ class Validators::PostValidator < ActiveModel::Validator
# Ensure maximum amount of mentions in a post
def max_mention_validator(post)
+ return if post.acting_user.try(:staff?)
+
if acting_user_is_trusted?(post)
- add_error_if_count_exceeded(post, :too_many_mentions, post.raw_mentions.size, SiteSetting.max_mentions_per_post)
+ add_error_if_count_exceeded(post, :no_mentions_allowed, :too_many_mentions, post.raw_mentions.size, SiteSetting.max_mentions_per_post)
else
- add_error_if_count_exceeded(post, :too_many_mentions_newuser, post.raw_mentions.size, SiteSetting.newuser_max_mentions_per_post)
+ add_error_if_count_exceeded(post, :no_mentions_allowed_newuser, :too_many_mentions_newuser, post.raw_mentions.size, SiteSetting.newuser_max_mentions_per_post)
end
end
@@ -65,17 +71,17 @@ class Validators::PostValidator < ActiveModel::Validator
# Ensure new users can not put too many images in a post
def max_images_validator(post)
- add_error_if_count_exceeded(post, :too_many_images, post.image_count, SiteSetting.newuser_max_images) unless acting_user_is_trusted?(post)
+ add_error_if_count_exceeded(post, :no_images_allowed, :too_many_images, post.image_count, SiteSetting.newuser_max_images) unless acting_user_is_trusted?(post)
end
# Ensure new users can not put too many attachments in a post
def max_attachments_validator(post)
- add_error_if_count_exceeded(post, :too_many_attachments, post.attachment_count, SiteSetting.newuser_max_attachments) unless acting_user_is_trusted?(post)
+ add_error_if_count_exceeded(post, :no_attachments_allowed, :too_many_attachments, post.attachment_count, SiteSetting.newuser_max_attachments) unless acting_user_is_trusted?(post)
end
# Ensure new users can not put too many links in a post
def max_links_validator(post)
- add_error_if_count_exceeded(post, :too_many_links, post.link_count, SiteSetting.newuser_max_links) unless acting_user_is_trusted?(post)
+ add_error_if_count_exceeded(post, :no_links_allowed, :too_many_links, post.link_count, SiteSetting.newuser_max_links) unless acting_user_is_trusted?(post)
end
# Stop us from posting the same thing too quickly
@@ -98,7 +104,13 @@ class Validators::PostValidator < ActiveModel::Validator
post.acting_user.present? && post.acting_user.has_trust_level?(TrustLevel[1])
end
- def add_error_if_count_exceeded(post, key_for_translation, current_count, max_count)
- post.errors.add(:base, I18n.t(key_for_translation, count: max_count)) if current_count > max_count
+ def add_error_if_count_exceeded(post, not_allowed_translation_key, limit_translation_key, current_count, max_count)
+ if current_count > max_count
+ if max_count == 0
+ post.errors.add(:base, I18n.t(not_allowed_translation_key))
+ else
+ post.errors.add(:base, I18n.t(limit_translation_key, count: max_count))
+ end
+ end
end
end
diff --git a/lib/validators/reply_by_email_enabled_validator.rb b/lib/validators/reply_by_email_enabled_validator.rb
new file mode 100644
index 00000000000..e7333de0f6c
--- /dev/null
+++ b/lib/validators/reply_by_email_enabled_validator.rb
@@ -0,0 +1,23 @@
+class ReplyByEmailEnabledValidator
+
+ def initialize(opts={})
+ @opts = opts
+ end
+
+ def valid_value?(val)
+ # only validate when enabling reply by email
+ return true if val == "f"
+ # ensure reply_by_email_address is configured && polling is working
+ SiteSetting.reply_by_email_address.present? &&
+ SiteSetting.email_polling_enabled?
+ end
+
+ def error_message
+ if SiteSetting.reply_by_email_address.blank?
+ I18n.t("site_settings.errors.reply_by_email_address_is_empty")
+ else
+ I18n.t("site_settings.errors.email_polling_disabled")
+ end
+ end
+
+end
diff --git a/lib/validators/upload_validator.rb b/lib/validators/upload_validator.rb
index 985fe928d9a..b200fc16c32 100644
--- a/lib/validators/upload_validator.rb
+++ b/lib/validators/upload_validator.rb
@@ -5,6 +5,8 @@ module Validators; end
class Validators::UploadValidator < ActiveModel::Validator
def validate(upload)
+ return true if upload.is_attachment_for_group_message && SiteSetting.allow_all_attachments_for_group_messages
+
extension = File.extname(upload.original_filename)[1..-1] || ""
if is_authorized?(upload, extension)
diff --git a/plugins/discourse-details/LICENSE b/plugins/discourse-details/LICENSE
new file mode 100644
index 00000000000..e87025e8d91
--- /dev/null
+++ b/plugins/discourse-details/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Discourse
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/plugins/discourse-details/README.md b/plugins/discourse-details/README.md
new file mode 100644
index 00000000000..8018a66b8a0
--- /dev/null
+++ b/plugins/discourse-details/README.md
@@ -0,0 +1,27 @@
+### discourse-details
+
+HTML 5.1 `` polyfill for [Discourse](https://www.discourse.org).
+
+NOTE: Does not work on IE9, but we don't support IE9 as of Jan 1 2016.
+
+## Usage
+
+In your posts, surround text with `[details=your summary]` ... `[/details]`.
+For example:
+
+```
+ I watched the murder mystery on TV last night. [details=Who did it?]The butler did it[/details].
+```
+
+## Installation
+
+Follow our [Install a Plugin](https://meta.discourse.org/t/install-a-plugin/19157) howto, using
+`git clone https://github.com/discourse/discourse-details.git` as the plugin command.
+
+## Issues
+
+If you have issues or suggestions for the plugin, please bring them up on [Discourse Meta](https://meta.discourse.org).
+
+## License
+
+MIT
diff --git a/plugins/discourse-details/assets/javascripts/details.js b/plugins/discourse-details/assets/javascripts/details.js
new file mode 100644
index 00000000000..54436783b3d
--- /dev/null
+++ b/plugins/discourse-details/assets/javascripts/details.js
@@ -0,0 +1,58 @@
+(function(document, $) {
+
+ // cf. http://mths.be/details
+ var hasNativeSupport = (function(doc) {
+ var fake, el = doc.createElement("details");
+ // fail-fast
+ if (!("open" in el)) { return false; }
+ // figure out a root node
+ var root = doc.body || (function() {
+ var de = doc.documentElement;
+ fake = true;
+ return de.insertBefore(doc.createElement("body"), de.firstElementChild || de.firstChild);
+ })();
+ // setup test element
+ el.innerHTML = "a
b";
+ el.style.display = "block";
+ // add test element to the root node
+ root.appendChild(el);
+ // can we open it?
+ var diff = el.offsetHeight;
+ el.open = true;
+ diff = diff !== el.offsetHeight;
+ // cleanup
+ root.removeChild(el);
+ if (fake) { root.parentNode.removeChild(root); }
+ // return the result
+ return diff;
+ })(document);
+
+ function toggleOpen($details) {
+ $details.toggleClass("open");
+ }
+
+ $.fn.details = function() {
+ if (hasNativeSupport) { return this; }
+
+ return this.each(function() {
+ var $details = $(this),
+ $firstSummary = $("summary", $details).first();
+
+ $firstSummary.prop("tabIndex", 0);
+
+ $firstSummary.on("keydown", function(event) {
+ if (event.keyCode === 32 /* SPACE */ || event.keyCode === 13 /* ENTER */) {
+ toggleOpen($details);
+ return false;
+ }
+ });
+
+ $firstSummary.on("click", function() {
+ $firstSummary.focus();
+ toggleOpen($details);
+ });
+
+ });
+ };
+
+})(document, jQuery);
diff --git a/plugins/discourse-details/assets/javascripts/details_dialect.js b/plugins/discourse-details/assets/javascripts/details_dialect.js
new file mode 100644
index 00000000000..858f887a904
--- /dev/null
+++ b/plugins/discourse-details/assets/javascripts/details_dialect.js
@@ -0,0 +1,28 @@
+(function() {
+
+ function insertDetails(_, summary, details) {
+ return "" + summary + "
" + details + "";
+ }
+
+ // replace all [details] BBCode with HTML 5.1 equivalent
+ function replaceDetails(text) {
+ text = text || "";
+
+ while (text !== (text = text.replace(/\[details=([^\]]+)\]((?:(?!\[details=[^\]]+\]|\[\/details\])[\S\s])*)\[\/details\]/ig, insertDetails)));
+
+ // add new lines to make sure we *always* have a element after and around
+ // otherwise we can't hide the content since we can't target text nodes via CSS
+ return text.replace(/<\/summary>/ig, "\n\n")
+ .replace(/<\/details>/ig, "\n\n\n\n");
+ }
+
+ Discourse.Dialect.addPreProcessor(function(text) {
+ if (Discourse.SiteSettings.details_enabled) {
+ text = replaceDetails(text);
+ }
+ return text;
+ });
+
+ Discourse.Markdown.whiteListTag("details", "class", "elided");
+
+})();
diff --git a/plugins/discourse-details/assets/javascripts/initializers/apply-details.js.es6 b/plugins/discourse-details/assets/javascripts/initializers/apply-details.js.es6
new file mode 100644
index 00000000000..367607f8f2c
--- /dev/null
+++ b/plugins/discourse-details/assets/javascripts/initializers/apply-details.js.es6
@@ -0,0 +1,11 @@
+import { withPluginApi } from 'discourse/lib/plugin-api';
+
+export default {
+ name: "apply-details",
+
+ initialize() {
+ withPluginApi('0.1', api => {
+ api.decorateCooked($elem => $("details", $elem).details());
+ });
+ }
+};
diff --git a/plugins/discourse-details/assets/stylesheets/details.scss b/plugins/discourse-details/assets/stylesheets/details.scss
new file mode 100644
index 00000000000..bbe4ab9013a
--- /dev/null
+++ b/plugins/discourse-details/assets/stylesheets/details.scss
@@ -0,0 +1,72 @@
+details {
+ position: relative;
+}
+
+details > *,
+details .lightbox-wrapper {
+ display: none;
+}
+
+details,
+summary {
+ outline: none;
+}
+
+summary:first-of-type {
+ cursor: pointer;
+ display: block;
+}
+
+summary:before {
+ content: '\25BA';
+ margin-right: .25em;
+}
+
+details[open] > summary:before,
+details.open > summary:before {
+ content: '\25BC';
+}
+
+details[open] > summary:first-of-type ~ *,
+details.open > summary:first-of-type ~ * {
+ display: block;
+}
+
+/* hide native indicator */
+summary::-webkit-details-marker {
+ display: none;
+}
+
+/* FF: hide div generated by lazyYT plugin */
+details .lazyYT-container {
+ display: none;
+}
+
+
+.elided {
+
+ summary:before {
+ content: '' !important;
+ }
+
+ summary {
+ @include unselectable;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: #aaa;
+ background: #f1f1f1;
+ border: 1px solid #ddd;
+ width: 20px;
+ display: flex;
+ text-align: center;
+ vertical-align: middle;
+ line-height: 12px;
+ }
+
+ summary:hover {
+ color: #222;
+ background: #d8d8d8;
+ border-color: #cdcdcd;
+ }
+}
diff --git a/plugins/discourse-details/config/locales/server.en.yml b/plugins/discourse-details/config/locales/server.en.yml
new file mode 100644
index 00000000000..cca3dd701ce
--- /dev/null
+++ b/plugins/discourse-details/config/locales/server.en.yml
@@ -0,0 +1,3 @@
+en:
+ site_settings:
+ details_enabled: "Enable the details plugin. If you change this, you must rebake all posts with: \"rake posts:rebake\"."
diff --git a/plugins/discourse-details/config/settings.yml b/plugins/discourse-details/config/settings.yml
new file mode 100644
index 00000000000..9add46e43e9
--- /dev/null
+++ b/plugins/discourse-details/config/settings.yml
@@ -0,0 +1,4 @@
+plugins:
+ details_enabled:
+ default: true
+ client: true
diff --git a/plugins/discourse-details/plugin.rb b/plugins/discourse-details/plugin.rb
new file mode 100644
index 00000000000..41a1a61a713
--- /dev/null
+++ b/plugins/discourse-details/plugin.rb
@@ -0,0 +1,28 @@
+# name: discourse-details
+# about: HTML5.1 Details polyfill for Discourse
+# version: 0.4
+# authors: Régis Hanol
+# url: https://github.com/discourse/discourse/tree/master/plugins/discourse-details
+
+enabled_site_setting :details_enabled
+
+register_asset "javascripts/details.js"
+register_asset "javascripts/details_dialect.js", :server_side
+
+register_asset "stylesheets/details.scss"
+
+after_initialize do
+
+ Email::Styles.register_plugin_style do |fragment|
+ # remove all elided content
+ fragment.css("details.elided").each { |d| d.remove }
+
+ # replace all details with their summary in emails
+ fragment.css("details").each do |details|
+ summary = details.css("summary")[0]
+ summary.name = "p"
+ details.replace(summary)
+ end
+ end
+
+end
diff --git a/plugins/lazyYT/assets/javascripts/initializers/lazyYT.js.es6 b/plugins/lazyYT/assets/javascripts/initializers/lazyYT.js.es6
index 0743a30c371..34950f184df 100644
--- a/plugins/lazyYT/assets/javascripts/initializers/lazyYT.js.es6
+++ b/plugins/lazyYT/assets/javascripts/initializers/lazyYT.js.es6
@@ -1,13 +1,18 @@
-/**
- Apply lazyYT when the app boots
-**/
-import { decorateCooked } from 'discourse/lib/plugin-api';
+import { withPluginApi } from 'discourse/lib/plugin-api';
export default {
name: "apply-lazyYT",
- initialize: function(container) {
- decorateCooked(container, function($elem) {
- $('.lazyYT', $elem).lazyYT();
+ initialize() {
+ withPluginApi('0.1', api => {
+ api.decorateCooked($elem => $('.lazyYT', $elem).lazyYT({
+ onPlay(e, $el) {
+ // don't cloak posts that have playing videos in them
+ const postId = parseInt($el.closest('article').data('post-id'));
+ if (postId) {
+ api.preventCloak(postId);
+ }
+ }
+ }));
});
}
};
diff --git a/plugins/lazyYT/assets/javascripts/lazyYT.js b/plugins/lazyYT/assets/javascripts/lazyYT.js
index bce00775813..10673ebd13c 100644
--- a/plugins/lazyYT/assets/javascripts/lazyYT.js
+++ b/plugins/lazyYT/assets/javascripts/lazyYT.js
@@ -6,9 +6,12 @@
* Contributors: https://github.com/tylerpearson/lazyYT/graphs/contributors || https://github.com/daugilas/lazyYT/graphs/contributors
*
* Usage: loading...
+*
+* Note: Discourse has forked this from the original, beware when updating the file.
+*
*/
-;(function ($) {
+(function ($) {
'use strict';
function setUp($el, settings) {
@@ -100,10 +103,15 @@
.addClass('lazyYT-image-loaded')
.on('click', function (e) {
e.preventDefault();
+
if (!$el.hasClass('lazyYT-video-loaded') && $thumb.hasClass('lazyYT-image-loaded')) {
$el.html('')
.addClass('lazyYT-video-loaded');
}
+
+ if (settings.onPlay) {
+ settings.onPlay(e, $el);
+ }
});
}
@@ -122,4 +130,4 @@
});
};
-}(jQuery));
+})(jQuery);
diff --git a/plugins/lazyYT/plugin.rb b/plugins/lazyYT/plugin.rb
index ba7e858c3f7..70475b73afa 100644
--- a/plugins/lazyYT/plugin.rb
+++ b/plugins/lazyYT/plugin.rb
@@ -17,7 +17,7 @@ class Onebox::Engine::YoutubeOnebox
alias_method :yt_onebox_to_html, :to_html
def to_html
- if video_id
+ if video_id && !params['list']
video_width = (params['width'] && params['width'].to_i <= 695) ? params['width'] : 480 # embed width
video_height = (params['height'] && params['height'].to_i <= 500) ? params['height'] : 270 # embed height
diff --git a/plugins/poll/assets/javascripts/components/poll-results-standard.js.es6 b/plugins/poll/assets/javascripts/components/poll-results-standard.js.es6
index 4382fdea77e..0e44215049f 100644
--- a/plugins/poll/assets/javascripts/components/poll-results-standard.js.es6
+++ b/plugins/poll/assets/javascripts/components/poll-results-standard.js.es6
@@ -1,13 +1,30 @@
+import evenRound from "discourse/plugins/poll/lib/even-round";
+import computed from "ember-addons/ember-computed-decorators";
+
export default Em.Component.extend({
tagName: "ul",
classNames: ["results"],
- options: function() {
- const voters = this.get("poll.voters");
+ @computed("poll.voters", "poll.type", "poll.options.[]")
+ options(voters, type) {
+ const options = this.get("poll.options");
- this.get("poll.options").forEach(option => {
- const percentage = voters === 0 ? 0 : Math.floor(100 * option.get("votes") / voters),
- style = "width: " + percentage + "%".htmlSafe();
+ let percentages = voters === 0 ?
+ Array(options.length).fill(0) :
+ _.map(options, o => 100 * o.get("votes") / voters);
+
+ // properly round percentages
+ if (type === "multiple") {
+ // when the poll is multiple choices, just "round down"
+ percentages = percentages.map(p => Math.floor(p));
+ } else {
+ // when the poll is single choice, adds up to 100%
+ percentages = evenRound(percentages);
+ }
+
+ options.forEach((option, i) => {
+ const percentage = percentages[i];
+ const style = new Ember.Handlebars.SafeString(`width: ${percentage}%`);
option.setProperties({
percentage,
@@ -16,7 +33,7 @@ export default Em.Component.extend({
});
});
- return this.get("poll.options");
- }.property("poll.voters", "poll.options.[]")
+ return options;
+ }
});
diff --git a/plugins/poll/assets/javascripts/controllers/poll.js.es6 b/plugins/poll/assets/javascripts/controllers/poll.js.es6
index 1a9c3943d34..dc5e549a39a 100644
--- a/plugins/poll/assets/javascripts/controllers/poll.js.es6
+++ b/plugins/poll/assets/javascripts/controllers/poll.js.es6
@@ -8,14 +8,14 @@ export default Ember.Controller.extend({
// shows the results when
// - poll is closed
- // - topic is archived/closed
+ // - topic is archived
// - user wants to see the results
- showingResults: Em.computed.or("isClosed", "post.topic.closed", "post.topic.archived", "showResults"),
+ showingResults: Em.computed.or("isClosed", "post.topic.archived", "showResults"),
showResultsDisabled: Em.computed.equal("poll.voters", 0),
- hideResultsDisabled: Em.computed.or("isClosed", "post.topic.closed", "post.topic.archived"),
+ hideResultsDisabled: Em.computed.or("isClosed", "post.topic.archived"),
- @computed("model", "vote")
+ @computed("model", "vote", "model.voters", "model.options", "model.status")
poll(poll, vote) {
if (poll) {
const options = _.map(poll.get("options"), o => Em.Object.create(o));
@@ -100,12 +100,11 @@ export default Ember.Controller.extend({
castVotesDisabled: Em.computed.not("canCastVotes"),
- @computed("loading", "post.user_id", "post.topic.closed", "post.topic.archived")
- canToggleStatus(loading, userId, topicClosed, topicArchived) {
+ @computed("loading", "post.user_id", "post.topic.archived")
+ canToggleStatus(loading, userId, topicArchived) {
return this.currentUser &&
(this.currentUser.get("id") === userId || this.currentUser.get("staff")) &&
!loading &&
- !topicClosed &&
!topicArchived;
},
diff --git a/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6 b/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6
index 2e086fbc5ec..68fe20140ee 100644
--- a/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6
+++ b/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6
@@ -1,81 +1,107 @@
-import PostView from "discourse/views/post";
-import { on } from "ember-addons/ember-computed-decorators";
+import { withPluginApi } from 'discourse/lib/plugin-api';
function createPollView(container, post, poll, vote) {
- const controller = container.lookup("controller:poll", { singleton: false }),
- view = container.lookup("view:poll");
+ const controller = container.lookup("controller:poll", { singleton: false });
+ const view = container.lookup("view:poll");
controller.set("vote", vote);
- controller.setProperties({ model: Em.Object.create(poll), post });
+ controller.setProperties({ model: poll, post });
view.set("controller", controller);
return view;
}
+let _pollViews;
+
+function initializePolls(api) {
+
+ const TopicController = api.container.lookupFactory('controller:topic');
+ TopicController.reopen({
+ subscribe(){
+ this._super();
+ this.messageBus.subscribe("/polls/" + this.get("model.id"), msg => {
+ const post = this.get('model.postStream').findLoadedPost(msg.post_id);
+ if (post) {
+ post.set('polls', msg.polls);
+ }
+ });
+ },
+ unsubscribe(){
+ this.messageBus.unsubscribe('/polls/*');
+ this._super();
+ }
+ });
+
+ const Post = api.container.lookupFactory('model:post');
+ Post.reopen({
+ _polls: null,
+ pollsObject: null,
+
+ // we need a proper ember object so it is bindable
+ pollsChanged: function(){
+ const polls = this.get("polls");
+ if (polls) {
+ this._polls = this._polls || {};
+ _.map(polls, (v,k) => {
+ const existing = this._polls[k];
+ if (existing) {
+ this._polls[k].setProperties(v);
+ } else {
+ this._polls[k] = Em.Object.create(v);
+ }
+ });
+ this.set("pollsObject", this._polls);
+ }
+ }.observes("polls")
+ });
+
+ function cleanUpPollViews() {
+ if (_pollViews) {
+ Object.keys(_pollViews).forEach(pollName => _pollViews[pollName].destroy());
+ }
+ _pollViews = null;
+ }
+
+ function createPollViews($elem, helper) {
+ const $polls = $('.poll', $elem);
+ if (!$polls.length) { return; }
+
+ const post = helper.getModel();
+ api.preventCloak(post.id);
+ const votes = post.get('polls_votes') || {};
+
+ post.pollsChanged();
+
+ const polls = post.get("pollsObject");
+ if (!polls) { return; }
+
+ cleanUpPollViews();
+ const postPollViews = {};
+
+ $polls.each((idx, pollElem) => {
+ const $div = $("");
+ const $poll = $(pollElem);
+
+ const pollName = $poll.data("poll-name");
+ const pollId = `${pollName}-${post.id}`;
+ const pollView = createPollView(helper.container, post, polls[pollName], votes[pollName]);
+
+ $poll.replaceWith($div);
+ Em.run.next(() => pollView.renderer.replaceIn(pollView, $div[0]));
+ postPollViews[pollId] = pollView;
+ });
+
+ _pollViews = postPollViews;
+ }
+
+ api.decorateCooked(createPollViews, { onlyStream: true });
+ api.cleanupStream(cleanUpPollViews);
+}
+
export default {
name: "extend-for-poll",
- initialize(container) {
-
- const messageBus = container.lookup("message-bus:main");
-
- // listen for back-end to tell us when a post has a poll
- messageBus.subscribe("/polls", data => {
- const post = container.lookup("controller:topic").get('model.postStream').findLoadedPost(data.post_id);
- // HACK to trigger the "postViewUpdated" event
- Em.run.next(() => post.set("cooked", post.get("cooked") + " "));
- });
-
- // overwrite polls
- PostView.reopen({
-
- @on("postViewInserted", "postViewUpdated")
- _createPollViews($post) {
- const post = this.get("post"),
- polls = post.get("polls"),
- votes = post.get("polls_votes") || {};
-
- // don't even bother when there's no poll
- if (!polls) { return; }
-
- // clean-up if needed
- this._cleanUpPollViews();
-
- const pollViews = {};
-
- // iterate over all polls
- $(".poll", $post).each(function() {
- const $div = $(""),
- $poll = $(this),
- pollName = $poll.data("poll-name"),
- pollView = createPollView(container, post, polls[pollName], votes[pollName]);
-
- $poll.replaceWith($div);
- Em.run.next(() => pollView.renderer.replaceIn(pollView, $div[0]));
- pollViews[pollName] = pollView;
- });
-
- messageBus.subscribe(`/polls/${this.get("post.id")}`, results => {
- if (results && results.polls) {
- _.forEach(results.polls, poll => {
- if (pollViews[poll.name]) {
- pollViews[poll.name].get("controller").set("model", Em.Object.create(poll));
- }
- });
- }
- });
-
- this.set("pollViews", pollViews);
- },
-
- @on("willClearRender")
- _cleanUpPollViews() {
- messageBus.unsubscribe(`/polls/${this.get("post.id")}`);
-
- if (this.get("pollViews")) {
- _.forEach(this.get("pollViews"), v => v.destroy());
- }
- }
- });
+ initialize() {
+ withPluginApi('0.1', initializePolls);
}
};
diff --git a/plugins/poll/assets/javascripts/lib/even-round.js.es6 b/plugins/poll/assets/javascripts/lib/even-round.js.es6
new file mode 100644
index 00000000000..0395f1f16a6
--- /dev/null
+++ b/plugins/poll/assets/javascripts/lib/even-round.js.es6
@@ -0,0 +1,17 @@
+// stolen from http://stackoverflow.com/a/13484088/11983
+function sumsUpTo100(percentages) {
+ return percentages.map(p => Math.floor(p)).reduce((a, b) => a + b) === 100;
+}
+
+export default (percentages) => {
+ const sumOfDecimals = Math.ceil(percentages.map(a => a % 1).reduce((a, b) => a + b));
+ // compensate error by adding 1 to the first n "non-zero" items
+ for (let i = 0, max = percentages.length; i < sumOfDecimals && i < max; i++) {
+ if (percentages[i] > 0) {
+ percentages[i] = ++percentages[i];
+ // quit early when there is a rounding issue
+ if (sumsUpTo100(percentages)) break;
+ }
+ }
+ return percentages.map(p => Math.floor(p));
+};
diff --git a/plugins/poll/config/locales/client.ar.yml b/plugins/poll/config/locales/client.ar.yml
index 4c3a9ec5e4f..58aa3b2df47 100644
--- a/plugins/poll/config/locales/client.ar.yml
+++ b/plugins/poll/config/locales/client.ar.yml
@@ -9,42 +9,60 @@ ar:
js:
poll:
voters:
- zero: "لا يوجد مصوتون"
- one: "مصوت"
- two: "مصوتان"
- few: "مصوتون قليلون"
- many: "مصوتون كثيرون"
- other: "المصوتين"
+ zero: "لا يوجد مصوتون."
+ one: "مصوت."
+ two: "مصوتان."
+ few: "مصوتون قليلون."
+ many: "مصوتون كثيرون."
+ other: "المصوتون"
total_votes:
- zero: "مجموع عدم التصويت"
- one: "مجموع التصويت"
- two: "مجموع التصويتان"
- few: "مجموع الأصوات القليلة"
- many: "مجموع الأصوات الكثيرة"
- other: "مجموع الأصوات"
+ zero: "مجموع عدم التصويت."
+ one: "مجموع التصويت."
+ two: "مجموع التصويتان."
+ few: "مجموع الأصوات القليلة."
+ many: "مجموع الأصوات الكثيرة."
+ other: "مجموع الأصوات."
average_rating: "متوسط التصنيف: %{average} "
multiple:
help:
- at_least_min_options: "من المفترض أن تختار على الأقل %{count} خيارات ."
- up_to_max_options: "يجب عليك إختيار على الأكثر %{count} خيارات ."
- x_options: "يجب عليك إختيار %{count} خيارات ."
+ at_least_min_options:
+ zero: "لا يجب عليك اختيار أي خيار."
+ one: "يجب عليك أن تختار خيار واحد على الأقل."
+ two: "يجب عليك أن تختار خياران على الأقل."
+ few: "يجب عليك أن تختار %{count} بعض الخيارات على الأقل."
+ many: "يجب عليك أن تختار %{count} عدة خيارات على الأقل."
+ other: "يجب عليك الاختيار على الأقل."
+ up_to_max_options:
+ zero: "لا يمكنك اختيار أي خيار."
+ one: "يمكنك إختيار مايصل إلى خيار واحد فقط."
+ two: "يمكنك إختيار مايصل إلى خيارانفقط."
+ few: "يمكنك إختيار بعض %{count} الخيارات ."
+ many: "يمكنك إختيار عدة %{count} خيارات ."
+ other: "يمكنك اختيار حتى %{count} خيارات."
+ x_options:
+ zero: "لا يجب عليك إختيار أي خيار."
+ one: "يجب عليك إختيار خيارواحدخياران فقط."
+ few: "يجب عليك إختيار %{count} بعض الخيارات."
+ many: "يجب عليك إختيار %{count} عدة خيارات."
+ other: "يجب عليك إختيار %{count} خيارات."
between_min_and_max_options: "يجب عليك إختيار بين %{min} و %{max} خيارات ."
cast-votes:
- title: "إدراج تصويتك ."
+ title: "إدراج صوتك."
label: "صوت اﻵن!"
show-results:
- title: "عرض نتائج التصويت"
- label: "عرض النتائج"
+ title: "عرض نتائج التصويت."
+ label: "عرض النتائج."
hide-results:
- title: "العودة إلى تصويتاتك"
- label: "إخفاء النتائج"
+ title: "العودة إلى أصواتك."
+ label: "إخفاء النتائج."
open:
- title: "فتح التصويت "
- label: "فتح"
- confirm: "هل بالفعل تاريد فتح هذا التصويت ؟"
+ title: "فتح التصويت."
+ label: "فتح."
+ confirm: "هل أنت متأكد من فتح هذا التصويت؟"
close:
- title: "إغلاق التصويت"
- label: "إغلاق"
- confirm: "هل أنت متأكد من إنك تريد إغلاق هذا التصويت ؟"
- error_while_toggling_status: "هناك خطاء عند محاولة تبديل حالة التصويت ."
- error_while_casting_votes: "هناك خطاء عن محاولة إدراج صوتك ."
+ title: "إغلاق التصويت."
+ label: "إغلاق."
+ confirm: "هل أنت متأكد من إغلاق هذا التصويت؟"
+ error_while_toggling_status: "حدث خطأ عند محاولتك لتبديل حالة التصويت."
+ error_while_casting_votes: "حدث خطأ عند محاولة إدراج صوتك."
diff --git a/plugins/poll/config/locales/client.bs_BA.yml b/plugins/poll/config/locales/client.bs_BA.yml
index 7b73cd2f229..f9e1081bc1e 100644
--- a/plugins/poll/config/locales/client.bs_BA.yml
+++ b/plugins/poll/config/locales/client.bs_BA.yml
@@ -5,4 +5,15 @@
# To work with us on translations, join this project:
# https://www.transifex.com/projects/p/discourse-org/
-bs_BA: {}
+bs_BA:
+ js:
+ poll:
+ voters:
+ one: "glasač"
+ few: "glasača"
+ other: "glasača"
+ total_votes:
+ one: "ukupan glas"
+ few: "ukupno glasova"
+ other: "ukupno glasova"
+ average_rating: "Prosječna ocjena: %{average}."
diff --git a/plugins/poll/config/locales/client.cs.yml b/plugins/poll/config/locales/client.cs.yml
index d6a32ba183a..c9726fcdf02 100644
--- a/plugins/poll/config/locales/client.cs.yml
+++ b/plugins/poll/config/locales/client.cs.yml
@@ -17,9 +17,6 @@ cs:
few: "hlasy celkem"
other: "hlasů celkem"
average_rating: "Průměrné hodnocení: %{average}."
- multiple:
- help:
- at_least_min_options: "Musíte zvolit alespoň %{count} možností."
cast-votes:
title: "Hlasujte"
label: "Hlasovat!"
diff --git a/plugins/poll/config/locales/client.da.yml b/plugins/poll/config/locales/client.da.yml
index 7f31c2d0f93..4747966e3ad 100644
--- a/plugins/poll/config/locales/client.da.yml
+++ b/plugins/poll/config/locales/client.da.yml
@@ -17,9 +17,15 @@ da:
average_rating: "Gennemsnitlig rating: %{average}."
multiple:
help:
- at_least_min_options: "Du skal mindst vælge %{count} muligheder."
- up_to_max_options: "Du kan vælge op til %{count} muligheder."
- x_options: "Du skal vælge %{count} muligheder."
+ at_least_min_options:
+ one: "Du skal mindst vælge 1 mulighed."
+ other: "Du skal mindst vælge %{count} muligheder."
+ up_to_max_options:
+ one: "Du kan vælge op til 1 mulighed."
+ other: "Du kan vælge op til %{count} muligheder."
+ x_options:
+ one: "Du skal vælge 1 mulighed."
+ other: "Du skal vælge %{count} muligheder."
between_min_and_max_options: "Du kan vælge mellem %{min} og %{max} muligheder."
cast-votes:
title: "Afgiv dine stemmer"
@@ -31,7 +37,7 @@ da:
title: "Tilbage til dine stemmer"
label: "Skjul resultat"
open:
- title: "Åbn afstemning"
+ title: "Åbn afstemningen"
label: "Åbn"
confirm: "Er du sikker på, at du vil åbne denne afstemning?"
close:
diff --git a/plugins/poll/config/locales/client.de.yml b/plugins/poll/config/locales/client.de.yml
index 7833ece385e..9b8ef70d00b 100644
--- a/plugins/poll/config/locales/client.de.yml
+++ b/plugins/poll/config/locales/client.de.yml
@@ -17,9 +17,15 @@ de:
average_rating: "Durchschnittliche Bewertung: %{average}"
multiple:
help:
- at_least_min_options: "Du musst mindestens %{count} Optionen auswählen."
- up_to_max_options: "Du kannst bis zu %{count} Optionen auswählen."
- x_options: "Du musst %{count} Optionen auswählen."
+ at_least_min_options:
+ one: "Du musst mindestens eine Option auswählen."
+ other: "Du musst mindestens %{count} Optionen auswählen."
+ up_to_max_options:
+ one: "Du kannst genau eine Option auswählen."
+ other: "Du kannst bis zu %{count} Optionen auswählen."
+ x_options:
+ one: "Du musst eine Option auswählen."
+ other: "Du musst %{count} Optionen auswählen."
between_min_and_max_options: "Du kannst zwischen %{min} und %{max} Optionen auswählen."
cast-votes:
title: "Gib deine Stimmen ab"
diff --git a/plugins/poll/config/locales/client.en.yml b/plugins/poll/config/locales/client.en.yml
index 586a8dfaf59..59b508c8853 100644
--- a/plugins/poll/config/locales/client.en.yml
+++ b/plugins/poll/config/locales/client.en.yml
@@ -29,9 +29,15 @@ en:
multiple:
help:
- at_least_min_options: "You must choose at least %{count} options."
- up_to_max_options: "You may choose up to %{count} options."
- x_options: "You must choose %{count} options."
+ at_least_min_options:
+ one: "You must choose at least 1 option."
+ other: "You must choose at least %{count} options."
+ up_to_max_options:
+ one: "You may choose up to 1 option."
+ other: "You may choose up to %{count} options."
+ x_options:
+ one: "You must choose 1 option."
+ other: "You must choose %{count} options."
between_min_and_max_options: "You may choose between %{min} and %{max} options."
cast-votes:
diff --git a/plugins/poll/config/locales/client.es.yml b/plugins/poll/config/locales/client.es.yml
index 828b06f07c3..61b840d6713 100644
--- a/plugins/poll/config/locales/client.es.yml
+++ b/plugins/poll/config/locales/client.es.yml
@@ -17,9 +17,15 @@ es:
average_rating: "Puntuación media: %{average}."
multiple:
help:
- at_least_min_options: "Debes elegir al menos %{count} opciones."
- up_to_max_options: "Puedes escoger hasta %{count} opciones."
- x_options: "Debes elegir %{count} opciones."
+ at_least_min_options:
+ one: "Debes elegir al menos 1 opción."
+ other: "Debes elegir al menos %{count} opciones."
+ up_to_max_options:
+ one: "Puedes elegir hasta 1 opción."
+ other: "Puedes elegir hasta %{count} opciones."
+ x_options:
+ one: "Debes elegir 1 opción."
+ other: "Debes elegir %{count} opciones."
between_min_and_max_options: "Puedes escoger entre %{min} y %{max} opciones."
cast-votes:
title: "Votar"
diff --git a/plugins/poll/config/locales/client.fa_IR.yml b/plugins/poll/config/locales/client.fa_IR.yml
index e3f743f115a..63b09f0016a 100644
--- a/plugins/poll/config/locales/client.fa_IR.yml
+++ b/plugins/poll/config/locales/client.fa_IR.yml
@@ -15,9 +15,12 @@ fa_IR:
average_rating: "میانگین امتیاز: %{average}."
multiple:
help:
- at_least_min_options: "حداقل %{count} گزینه باید انتخاب شود."
- up_to_max_options: "میتوانید تا %{count} گزینه را انتخاب کنید."
- x_options: "%{count} گزینه باید انتخاب شود"
+ at_least_min_options:
+ other: "حداقل %{count} گزینه باید انتخاب شود."
+ up_to_max_options:
+ other: "میتوانید تا %{count} گزینه را انتخاب کنید."
+ x_options:
+ other: "%{count} گزینه باید انتخاب شود"
between_min_and_max_options: "میتوانید بین %{min} تا %{max} گزینه را انتخاب کنید."
cast-votes:
title: "انداختن رأی شما"
diff --git a/plugins/poll/config/locales/client.fi.yml b/plugins/poll/config/locales/client.fi.yml
index 1b31427f790..729042eec89 100644
--- a/plugins/poll/config/locales/client.fi.yml
+++ b/plugins/poll/config/locales/client.fi.yml
@@ -10,16 +10,22 @@ fi:
poll:
voters:
one: "äänestäjä"
- other: "äänestäjät"
+ other: "äänestäjää"
total_votes:
one: "ääni"
other: "ääntä"
- average_rating: "Keskivertoarvio: %{average}."
+ average_rating: "Keskiarvo: %{average}"
multiple:
help:
- at_least_min_options: "Sinun täytyy valita vähintään %{count} vaihtoehtoa."
- up_to_max_options: "Voit valita enintään %{count} vaihtoehtoa."
- x_options: "Sinun täytyy valita %{count} vaihtoehtoa."
+ at_least_min_options:
+ one: "Sinun täytyy valita vähintään yksi vaihtoehto."
+ other: "Sinun täytyy valita vähintään %{count} vaihtoehtoa."
+ up_to_max_options:
+ one: "Voit valita enintään yhden vaihtoehdon."
+ other: "Voit valita enintään %{count} vaihtoehtoa."
+ x_options:
+ one: "Sinun täytyy valita yksi vaihtoehto."
+ other: "Sinun täytyy valita %{count} vaihtoehtoa."
between_min_and_max_options: "Voit valita %{min}-%{max}%{average}"
multiple:
help:
- at_least_min_options: "Vous devez choisir au moins %{count} options."
- up_to_max_options: "Vous pouvez choisir jusque %{count} options."
- x_options: "Vous devez choisir %{count} options."
+ at_least_min_options:
+ one: "Vous devez choisir au moins une option."
+ other: "Vous devez choisir au moins %{count} options."
+ up_to_max_options:
+ one: "Vous pouvez choisir une option."
+ other: "Vous pouvez choisir jusqu’à %{count} options."
+ x_options:
+ one: "Vous devez choisir une option."
+ other: "Vous devez choisir %{count} options."
between_min_and_max_options: "Vous devez choisir entre %{min} et %{max} options."
cast-votes:
title: "Distribuez vos votes"
diff --git a/plugins/poll/config/locales/client.gl.yml b/plugins/poll/config/locales/client.gl.yml
new file mode 100644
index 00000000000..3cdfb4b0001
--- /dev/null
+++ b/plugins/poll/config/locales/client.gl.yml
@@ -0,0 +1,48 @@
+# encoding: utf-8
+#
+# Never edit this file. It will be overwritten when translations are pulled from Transifex.
+#
+# To work with us on translations, join this project:
+# https://www.transifex.com/projects/p/discourse-org/
+
+gl:
+ js:
+ poll:
+ voters:
+ one: "votante"
+ other: "votantes"
+ total_votes:
+ one: "votos totais"
+ other: "votos totais"
+ average_rating: "Valoración media: %{average}."
+ multiple:
+ help:
+ at_least_min_options:
+ one: "Debes seleccionar cando menos 1 opción."
+ other: "Debes seleccionar cando menos %{count} opcións."
+ up_to_max_options:
+ one: "Podes escoller 1 única opción."
+ other: "Podes escoller até %{count} opcións."
+ x_options:
+ one: "Debes escoller 1 opción."
+ other: "Debes escoller %{count} opcións."
+ between_min_and_max_options: "Debes escoller entre %{min} e %{max} opcións."
+ cast-votes:
+ title: "Vota"
+ label: "Vota agora!"
+ show-results:
+ title: "Mostrar os resultados da votación"
+ label: "Mostrar os resultados"
+ hide-results:
+ title: "Volver aos teus votos"
+ label: "Ocultar os resultados"
+ open:
+ title: "Abrir a enquisa"
+ label: "Abrir"
+ confirm: "Confirmas a apertura da enquisa?"
+ close:
+ title: "Pechar a enquisa"
+ label: "Pechar"
+ confirm: "Confirmas o peche desta enquisa?"
+ error_while_toggling_status: "Produciuse un erro durante o cambio do estado da enquisa."
+ error_while_casting_votes: "Produciuse un erro durante a emisión do teu voto."
diff --git a/plugins/poll/config/locales/client.he.yml b/plugins/poll/config/locales/client.he.yml
index 8c846785818..ced11e01909 100644
--- a/plugins/poll/config/locales/client.he.yml
+++ b/plugins/poll/config/locales/client.he.yml
@@ -17,9 +17,15 @@ he:
average_rating: "דירוג ממוצע: %{average}."
multiple:
help:
- at_least_min_options: "עליך לבחור לפחות %{count} אפשרויות"
- up_to_max_options: "באפשרותך לבחור עד %{count} אפשרויות."
- x_options: "עליך לבחור %{count} אפשרויות. "
+ at_least_min_options:
+ one: "עליך לבחור לפחות אפשרות 1."
+ other: "עליך לבחור לפחות %{count} אפשרויות."
+ up_to_max_options:
+ one: "באפשרותך לבחור עד אפשרות %{count}."
+ other: "באפשרותך לבחור עד %{count} אפשרויות."
+ x_options:
+ one: "עליך לבחור אפשרות 1."
+ other: "עליך לבחור %{count} אפשרויות."
between_min_and_max_options: "באפשרותך לבחור בין %{min} עד %{max} אפשרויות."
cast-votes:
title: "שליחת הצבעות"
diff --git a/plugins/poll/config/locales/client.id.yml b/plugins/poll/config/locales/client.id.yml
index 9d940ae9702..a217ccdb806 100644
--- a/plugins/poll/config/locales/client.id.yml
+++ b/plugins/poll/config/locales/client.id.yml
@@ -8,13 +8,20 @@
id:
js:
poll:
+ voters:
+ other: "pemilih"
+ total_votes:
+ other: "jumlah pemilih"
average_rating: "Rata-rata rating: %{average}."
multiple:
help:
- at_least_min_options: "Kamu wajib memilih setidaknya %{count} pilihan."
- up_to_max_options: "Kamu boleh memilih maksimum %{count} pilihan."
- x_options: "Kamu harus memilih %{count} pilihan."
- between_min_and_max_options: "Kamu hanya bisa memilih minimum %{min} pilihan dan maximum %{max} pilihan."
+ at_least_min_options:
+ other: "Anda harus memilih %{count} pilihan."
+ up_to_max_options:
+ other: "Anda dapat memilih maksimum %{count} pilihan."
+ x_options:
+ other: "Anda harus memilih %{count} pilihan."
+ between_min_and_max_options: "Anda hanya bisa memilih minimum %{min} pilihan dan maximum %{max} pilihan."
cast-votes:
title: "Gunakan suaramu"
label: "Pilih sekarang!"
@@ -24,3 +31,13 @@ id:
hide-results:
title: "Kembali ke suaramu"
label: "Sembunyikan hasil"
+ open:
+ title: "Buka Polling"
+ label: "Buka"
+ confirm: "Apakah Anda yakin ingin membuka akun ini?"
+ close:
+ title: "Tutup polling"
+ label: "Tutup"
+ confirm: "Apakah Anda yakin ingin menutup akun ini?"
+ error_while_toggling_status: "Terjadi kesalahan ketika merubah status polling ini."
+ error_while_casting_votes: "Terjadi kesalahan ketika merubah status."
diff --git a/plugins/poll/config/locales/client.it.yml b/plugins/poll/config/locales/client.it.yml
index e5ab646bd34..8b148970b08 100644
--- a/plugins/poll/config/locales/client.it.yml
+++ b/plugins/poll/config/locales/client.it.yml
@@ -17,9 +17,15 @@ it:
average_rating: "Voto medio: %{average}."
multiple:
help:
- at_least_min_options: "Devi scegliere almeno %{count} opzioni."
- up_to_max_options: "Puoi scegliere fino a %{count} opzioni."
- x_options: "Devi scegliere %{count} opzioni."
+ at_least_min_options:
+ one: "Devi scegliere almeno una opzione."
+ other: "Devi scegliere almeno %{count} opzioni."
+ up_to_max_options:
+ one: "Puoi scegliere fino a una opzione."
+ other: "Puoi scegliere fino a %{count} opzioni."
+ x_options:
+ one: "Devi scegliere una opzione."
+ other: "Devi scegliere %{count} opzioni."
between_min_and_max_options: "Puoi scegliere tra %{min} e %{max} opzioni."
cast-votes:
title: "Vota"
diff --git a/plugins/poll/config/locales/client.ja.yml b/plugins/poll/config/locales/client.ja.yml
index 2d01b7c38e7..a3b3f1bbb41 100644
--- a/plugins/poll/config/locales/client.ja.yml
+++ b/plugins/poll/config/locales/client.ja.yml
@@ -15,9 +15,12 @@ ja:
average_rating: "平均評価: %{average}."
multiple:
help:
- at_least_min_options: "少なくとも %{count} 個のオプションを選んでください。"
- up_to_max_options: "%{count} 個のオプションまで選択することができます。"
- x_options: "%{count} 個のオプションを選択してください。"
+ at_least_min_options:
+ other: "少なくとも %{count} 個のオプションを選んでください。"
+ up_to_max_options:
+ other: "%{count} 個のオプションまで選択することができます。"
+ x_options:
+ other: "%{count} 個のオプションを選択してください。"
between_min_and_max_options: "%{min} と %{max} のオプションから選択することができます。"
cast-votes:
title: "投票する"
diff --git a/plugins/poll/config/locales/client.ko.yml b/plugins/poll/config/locales/client.ko.yml
index ad715c3ee44..52454181ce6 100644
--- a/plugins/poll/config/locales/client.ko.yml
+++ b/plugins/poll/config/locales/client.ko.yml
@@ -15,9 +15,12 @@ ko:
average_rating: "평균: %{average}."
multiple:
help:
- at_least_min_options: "적어도 %{count}개는 선택해야 합니다."
- up_to_max_options: "%{count}개까지만 선택할 수 있습니다."
- x_options: "정확히 %{count}개를 선택해야 합니다."
+ at_least_min_options:
+ other: "적어도 %{count}개의 옵션은 선택해야 합니다."
+ up_to_max_options:
+ other: "옵션은 %{count} 개까지 선택할 수 있습니다."
+ x_options:
+ other: "옵션은 %{count} 개 선택해야 합니다."
between_min_and_max_options: "%{min}개에서 %{max}개까지 선택할 수 있습니다."
cast-votes:
title: "표 던지기"
diff --git a/plugins/poll/config/locales/client.nb_NO.yml b/plugins/poll/config/locales/client.nb_NO.yml
index 0039a0d65b4..98214dcfef3 100644
--- a/plugins/poll/config/locales/client.nb_NO.yml
+++ b/plugins/poll/config/locales/client.nb_NO.yml
@@ -17,9 +17,6 @@ nb_NO:
average_rating: "Gjennomsnitt: %{average}."
multiple:
help:
- at_least_min_options: "Du må velge minst %{count} alternativer."
- up_to_max_options: "Du kan velge opptil %{count} alternativer."
- x_options: "Du må velge %{count} alternativer."
between_min_and_max_options: "Du kan velge mellom %{min} og %{max} alternativer."
cast-votes:
title: "Stem nå"
diff --git a/plugins/poll/config/locales/client.nl.yml b/plugins/poll/config/locales/client.nl.yml
index de778280c0e..c042e7cb9b1 100644
--- a/plugins/poll/config/locales/client.nl.yml
+++ b/plugins/poll/config/locales/client.nl.yml
@@ -17,9 +17,15 @@ nl:
average_rating: "Gemiddeld cijfer: %{average}."
multiple:
help:
- at_least_min_options: "Kies tenminste %{count} opties."
- up_to_max_options: "Je kunt maximaal %{count} opties kiezen."
- x_options: "Kies %{count} opties."
+ at_least_min_options:
+ one: "U dient tenminste 1 optie te kiezen."
+ other: "Kies tenminste %{count} opties."
+ up_to_max_options:
+ one: "U kunt maximaal 1 optie kiezen."
+ other: "Je kan maximaal %{count} opties kiezen."
+ x_options:
+ one: "Je moet 1 optie kiezen."
+ other: "Je moet %{count} opties kiezen."
between_min_and_max_options: "Je kan tussen %{min} en %{max} opties kiezen."
cast-votes:
title: "Geef je stem"
diff --git a/plugins/poll/config/locales/client.pl_PL.yml b/plugins/poll/config/locales/client.pl_PL.yml
index b344003fdd2..cd2cc463759 100644
--- a/plugins/poll/config/locales/client.pl_PL.yml
+++ b/plugins/poll/config/locales/client.pl_PL.yml
@@ -19,9 +19,18 @@ pl_PL:
average_rating: "Średnia ocena: %{average}."
multiple:
help:
- at_least_min_options: "Musisz wybrać co najmniej %{count} pozycje."
- up_to_max_options: "Możesz wybrać co najwyżej %{count} pozycje."
- x_options: "Musisz wybrać %{count} pozycje."
+ at_least_min_options:
+ one: "Musisz wybrać przynajmniej jedną pozycje."
+ few: "Musisz wybrać co najmniej %{count} pozycje."
+ other: "Musisz wybrać co najmniej %{count} pozycje."
+ up_to_max_options:
+ one: "Możesz wybrać maksymalnie 1 opcję."
+ few: "Możesz wybrać maksymalnie %{count} opcje."
+ other: "Możesz wybrać maksymalnie %{count} opcji."
+ x_options:
+ one: "Musisz wybrać jedną opcję."
+ few: "Musisz wybrać %{count} opcje."
+ other: "Musisz wybrać %{count} opcji."
between_min_and_max_options: "Możesz wybrać pomiędzy %{min} a %{max} pozycjami."
cast-votes:
title: "Oddaj głos"
diff --git a/plugins/poll/config/locales/client.pt.yml b/plugins/poll/config/locales/client.pt.yml
index 9d7df2719fe..9c14e9f45ca 100644
--- a/plugins/poll/config/locales/client.pt.yml
+++ b/plugins/poll/config/locales/client.pt.yml
@@ -17,9 +17,15 @@ pt:
average_rating: "Classificação média: %{average}."
multiple:
help:
- at_least_min_options: "Deve escolher pelo menos %{count} opções."
- up_to_max_options: "Pode escolher até %{count} opções."
- x_options: "Deve escolher %{count} opções."
+ at_least_min_options:
+ one: "Deve escolher pelo menos 1 opção."
+ other: "Deve escolher pelo menos %{count} opções."
+ up_to_max_options:
+ one: "Pode escolher até 1 opção."
+ other: "Pode escolher até %{count} opções."
+ x_options:
+ one: "Deve escolher 1 opção."
+ other: "Deve escolher %{count} opções."
between_min_and_max_options: "Pode escolher entre %{min} e %{max} opções."
cast-votes:
title: "Votar"
diff --git a/plugins/poll/config/locales/client.pt_BR.yml b/plugins/poll/config/locales/client.pt_BR.yml
index 7fec94ebd8a..50579d08c77 100644
--- a/plugins/poll/config/locales/client.pt_BR.yml
+++ b/plugins/poll/config/locales/client.pt_BR.yml
@@ -8,12 +8,24 @@
pt_BR:
js:
poll:
+ voters:
+ one: "votante"
+ other: "votantes"
+ total_votes:
+ one: "voto total"
+ other: "votos totais"
average_rating: "Resultado médio: %{average}."
multiple:
help:
- at_least_min_options: "Você precisa escolher ao menos %{count} opções."
- up_to_max_options: "Você pode escolher %{count} opções."
- x_options: "Você precisa escolher %{count} opções."
+ at_least_min_options:
+ one: "Você deve escolher pelo menos 1 opção."
+ other: "Você deve escolher pelo menos %{count} opções."
+ up_to_max_options:
+ one: "Você deve escolher até 1 opção."
+ other: "Você deve escolher até %{count} opções."
+ x_options:
+ one: "Você deve escolher 1 opção."
+ other: "Você deve escolher %{count} opções."
between_min_and_max_options: "Você pode escolher entre %{min} e %{max} opções."
cast-votes:
title: "Seus votos"
diff --git a/plugins/poll/config/locales/client.ro.yml b/plugins/poll/config/locales/client.ro.yml
index e1e2ff32410..82b8d8830ab 100644
--- a/plugins/poll/config/locales/client.ro.yml
+++ b/plugins/poll/config/locales/client.ro.yml
@@ -8,12 +8,29 @@
ro:
js:
poll:
+ voters:
+ one: "participant"
+ few: "participanți"
+ other: "participanți"
+ total_votes:
+ one: "un vot"
+ few: "total voturi"
+ other: "total voturi"
average_rating: "Media: %{average}."
multiple:
help:
- at_least_min_options: "Trebuie să alegeți cel puțin %{count} opțiuni."
- up_to_max_options: "Puteţi alege cel mult %{count} opţiuni."
- x_options: "Trebuie să alegeți %{count} opțiuni."
+ at_least_min_options:
+ one: "Trebuie să selectați cel puțin 1 opțiune."
+ few: "Trebuie să selectați cel puțin %{count} opțiuni."
+ other: "Trebuie să selectați cel puțin %{count} opțiuni."
+ up_to_max_options:
+ one: "Puteţi alege cel mult o %{count} opţiune."
+ few: "Puteţi selecta cel mult 1 opţiune."
+ other: "Puteți selecta până la %{count} opțiuni."
+ x_options:
+ one: "Trebuie să selectați 1 opțiune."
+ few: "Trebuie să selectați %{count} opțiuni."
+ other: "Trebuie să alegeți %{count} opțiuni."
between_min_and_max_options: "Puteţi alege între %{min} şi %{max} opţiuni."
cast-votes:
title: "Exprimaţi-vă votul"
@@ -29,8 +46,8 @@ ro:
label: "Deschis"
confirm: "Sunteţi sigur că doriţi să deschideţi acest sondaj?"
close:
- title: "Închide sondaj"
- label: "Închis"
+ title: "Închideți sondajul"
+ label: "Închideți"
confirm: "Sunteţi sigur că vreţi să închideţi acest sondaj?"
error_while_toggling_status: "A apărut o eroare în timpul schimbării stării acestui sondaj."
error_while_casting_votes: "A apărut o eroare în timpul exprimării votului dvs."
diff --git a/plugins/poll/config/locales/client.ru.yml b/plugins/poll/config/locales/client.ru.yml
index 8f73a0a4438..8dd85117e61 100644
--- a/plugins/poll/config/locales/client.ru.yml
+++ b/plugins/poll/config/locales/client.ru.yml
@@ -8,13 +8,35 @@
ru:
js:
poll:
- average_rating: "Примерный рейтинг: %{average}."
+ voters:
+ one: "голос"
+ few: "голоса"
+ many: "голосов"
+ other: "голосов"
+ total_votes:
+ one: "голос"
+ few: "голоса"
+ many: "голосов"
+ other: "голосов"
+ average_rating: "Средний рейтинг: %{average}."
multiple:
help:
- at_least_min_options: "Вы должны выбрать как минимум %{count} ответов."
- up_to_max_options: "Вы можете выбрать не более %{count} вариантов ответов."
- x_options: "Вы должны выбрать %{count} варианта ответа."
- between_min_and_max_options: "Вы можете выбрать от %{min} до %{max} ответов."
+ at_least_min_options:
+ one: "Необходимо выбрать хотя бы 1 ответ."
+ few: "Необходимо выбрать хотя бы %{count} ответа."
+ many: "Необходимо выбрать хотя бы %{count} ответов."
+ other: "Необходимо выбрать хотя бы %{count} ответов."
+ up_to_max_options:
+ one: "Можно выбрать только 1 ответ."
+ few: "Можно выбрать до %{count} ответов."
+ many: "Можно выбрать до %{count} ответов."
+ other: "Можно выбрать до %{count} ответов."
+ x_options:
+ one: "Необходимо выбрать 1 ответ."
+ few: "Необходимо выбрать %{count} ответа."
+ many: "Необходимо выбрать %{count} ответов."
+ other: "Необходимо выбрать %{count} ответов."
+ between_min_and_max_options: "Можно выбрать от %{min} до %{max} ответов."
cast-votes:
title: "Проголосуйте"
label: "Голосовать!"
@@ -22,15 +44,15 @@ ru:
title: "Показать результаты"
label: "Показать результаты"
hide-results:
- title: "Вернуться к голосованию"
+ title: "Вернуться к опросу"
label: "Скрыть результаты"
open:
- title: "Открыть голосование"
+ title: "Открыть опрос"
label: "Открыть"
- confirm: "Вы уверены, что хотите открыть это голосование?"
+ confirm: "Вы уверены, что хотите открыть этот опрос?"
close:
- title: "Закрыть голосование"
+ title: "Закрыть опрос"
label: "Закрыть"
- confirm: "Вы уверены, что хотите закрыть это голосование?"
- error_while_toggling_status: "Произошла ошибка смены статуса голосования."
- error_while_casting_votes: "Произошла ошибка в голосовании."
+ confirm: "Вы уверены, что хотите закрыть этот опрос?"
+ error_while_toggling_status: "Произошла ошибка при смене статуса опроса."
+ error_while_casting_votes: "Произошла ошибка во время обработки вашего голоса."
diff --git a/plugins/poll/config/locales/client.sk.yml b/plugins/poll/config/locales/client.sk.yml
new file mode 100644
index 00000000000..2ae88650f99
--- /dev/null
+++ b/plugins/poll/config/locales/client.sk.yml
@@ -0,0 +1,53 @@
+# encoding: utf-8
+#
+# Never edit this file. It will be overwritten when translations are pulled from Transifex.
+#
+# To work with us on translations, join this project:
+# https://www.transifex.com/projects/p/discourse-org/
+
+sk:
+ js:
+ poll:
+ voters:
+ one: "volič"
+ few: "voliči"
+ other: "voliči"
+ total_votes:
+ one: "hlas celkom"
+ few: "hlasy celkom"
+ other: "hlasov celkom"
+ average_rating: "Priemerné hodnotenie: %{average}."
+ multiple:
+ help:
+ at_least_min_options:
+ one: "Musíte si vybrať minimálne %{count} možnosť."
+ few: "Musíte si vybrať minimálne %{count} možnosti."
+ other: "Musíte si vybrať minimálne %{count} možností."
+ up_to_max_options:
+ one: "Môžete si vybrať maximálne %{count} možnosť."
+ few: "Môžete si vybrať maximálne %{count} možnosti."
+ other: "Môžete si vybrať maximálne %{count} možností."
+ x_options:
+ one: "Musíte si vybrať %{count} možnosť."
+ few: "Musíte si vybrať %{count} možnosti."
+ other: "Musíte si vybrať %{count} možností."
+ between_min_and_max_options: "Môžete si vybrať medzi možnosťami %{min} až %{max}."
+ cast-votes:
+ title: "Hlasovať"
+ label: "Hlasuj teraz!"
+ show-results:
+ title: "Zobraz výsledky hlasovania"
+ label: "Zobraz výsledky"
+ hide-results:
+ title: "Návrat na odovzdané hlasy"
+ label: "Skyť výsledky"
+ open:
+ title: "Zahájiť hlasovanie"
+ label: "Zahájiť"
+ confirm: "Ste si istý, že chcete zahájiť toto hlasovanie?"
+ close:
+ title: "Zatvoriť hlasovanie"
+ label: "Zatvoriť"
+ confirm: "Ste si istý, že chcete zatvoriť toto hlasovanie?"
+ error_while_toggling_status: "Pri zmene stavu hlasovania sa vyskytla chyba."
+ error_while_casting_votes: "Pri hlasovaní sa vyskytla chyba."
diff --git a/plugins/poll/config/locales/client.sq.yml b/plugins/poll/config/locales/client.sq.yml
index 5efd604a257..36f8b9af858 100644
--- a/plugins/poll/config/locales/client.sq.yml
+++ b/plugins/poll/config/locales/client.sq.yml
@@ -17,9 +17,6 @@ sq:
average_rating: "Vlerësimi mesatar: %{average}."
multiple:
help:
- at_least_min_options: "Ju duhet të zgjidhni të paktën %{count} opsionet."
- up_to_max_options: "You may choose up to %{count} options."
- x_options: "You must choose %{count} options."
between_min_and_max_options: "You may choose between %{min} and %{max} options."
cast-votes:
title: "Cast your votes"
diff --git a/plugins/poll/config/locales/client.sv.yml b/plugins/poll/config/locales/client.sv.yml
index 421ff6218fd..2491b50380e 100644
--- a/plugins/poll/config/locales/client.sv.yml
+++ b/plugins/poll/config/locales/client.sv.yml
@@ -8,12 +8,24 @@
sv:
js:
poll:
+ voters:
+ one: "röst"
+ other: "röster"
+ total_votes:
+ one: "totalt antal röst"
+ other: "totalt antal röster"
average_rating: "Medelbetyg: %{average}."
multiple:
help:
- at_least_min_options: "Du måste välja minst %{count} alternativ."
- up_to_max_options: "Du kan välja upp till %{count} alternativ."
- x_options: "Du måste välja %{count} alternativ."
+ at_least_min_options:
+ one: "Du måste välja minst 1 alternativ."
+ other: "Du måste välja minst %{count} alternativ."
+ up_to_max_options:
+ one: "Du kan välja upp till 1 alternativ"
+ other: "Du kan välja upp till %{count} alternativ."
+ x_options:
+ one: "Du måste välja 1 alternativ."
+ other: "Du måste välja %{count} alternativ."
between_min_and_max_options: "Du kan välja mellan %{min} och %{max} alternativ."
cast-votes:
title: "Lägg dina röster"
diff --git a/plugins/poll/config/locales/client.tr_TR.yml b/plugins/poll/config/locales/client.tr_TR.yml
index 2e6792746d2..4b9e75273e9 100644
--- a/plugins/poll/config/locales/client.tr_TR.yml
+++ b/plugins/poll/config/locales/client.tr_TR.yml
@@ -15,9 +15,12 @@ tr_TR:
average_rating: "Ortalama oran: %{average}."
multiple:
help:
- at_least_min_options: "En az %{count} seçim yapmalısınız."
- up_to_max_options: "En fazla %{count} seçim yapabilirsiniz."
- x_options: "%{count} seçim yapmalısınız."
+ at_least_min_options:
+ other: "En az %{count} seçim yapmalısınız."
+ up_to_max_options:
+ other: "En fazla %{count} seçim yapabilirsiniz."
+ x_options:
+ other: "%{count} seçim yapmalısınız."
between_min_and_max_options: "%{min} ve %{max} seçenekleri arasında seçim yapabilirsiniz."
cast-votes:
title: "Oyunuzu kullanın"
diff --git a/plugins/poll/config/locales/client.vi.yml b/plugins/poll/config/locales/client.vi.yml
new file mode 100644
index 00000000000..30d6e6a699d
--- /dev/null
+++ b/plugins/poll/config/locales/client.vi.yml
@@ -0,0 +1,43 @@
+# encoding: utf-8
+#
+# Never edit this file. It will be overwritten when translations are pulled from Transifex.
+#
+# To work with us on translations, join this project:
+# https://www.transifex.com/projects/p/discourse-org/
+
+vi:
+ js:
+ poll:
+ voters:
+ other: "Người bầu chọn"
+ total_votes:
+ other: "tổng số bình chọn"
+ average_rating: "Đánh giá trung bình: %{average}."
+ multiple:
+ help:
+ at_least_min_options:
+ other: "Bạn phải chọn ít nhất %{count} tùy chọn."
+ up_to_max_options:
+ other: "Bạn có thể chọn lên tới %{count} tùy chọn."
+ x_options:
+ other: "Bạn phải chọn %{count} tùy chọn."
+ between_min_and_max_options: "Bạn có thể chọn giữa %{min} và %{max}."
+ cast-votes:
+ title: "Bỏ phiếu của bạn"
+ label: "Bình chọn ngay!"
+ show-results:
+ title: "Hiển thị kết quả cuộc thăm dò"
+ label: "Hiện kết quả"
+ hide-results:
+ title: "Trở lại bầu chọn của bạn"
+ label: "Ẩn kết quả"
+ open:
+ title: "Mở bình chọn"
+ label: "Mở"
+ confirm: "Bạn có chắc mở bình chọn này?"
+ close:
+ title: "Đóng bình chọn"
+ label: "Đóng lại"
+ confirm: "Bạn có chắc chắn muốn đóng bình chọn này?"
+ error_while_toggling_status: "Có lỗi trong khi chuyển đổi qua lại các trạng thái của bình chọn này."
+ error_while_casting_votes: "Có lỗi trong khi tạo mãu bầu chọn của bạn"
diff --git a/plugins/poll/config/locales/client.zh_CN.yml b/plugins/poll/config/locales/client.zh_CN.yml
index cd3958a6a38..7a7744543da 100644
--- a/plugins/poll/config/locales/client.zh_CN.yml
+++ b/plugins/poll/config/locales/client.zh_CN.yml
@@ -15,9 +15,12 @@ zh_CN:
average_rating: "平均排名:%{average}。"
multiple:
help:
- at_least_min_options: "你至少要选择 %{count} 个选项。"
- up_to_max_options: "你最多可以选择 %{count} 个选项。"
- x_options: "你必须选择 %{count} 个选项。"
+ at_least_min_options:
+ other: "你必须选择至少 %{count} 个选项。"
+ up_to_max_options:
+ other: "你可以选择最多 %{count} 个选项。"
+ x_options:
+ other: "你必须选择 %{count} 个选项。"
between_min_and_max_options: "你可以选择 %{min} 至 %{max} 个选项。"
cast-votes:
title: "投你的票"
diff --git a/plugins/poll/config/locales/server.ar.yml b/plugins/poll/config/locales/server.ar.yml
index 7fcef197a32..2b595208fd4 100644
--- a/plugins/poll/config/locales/server.ar.yml
+++ b/plugins/poll/config/locales/server.ar.yml
@@ -7,27 +7,41 @@
ar:
site_settings:
- poll_enabled: "المستخدمين المسموح لهم إنشاء استطلاع رأي"
- poll_maximum_options: "أقصى عدد من الخيارات المسموحة في استطلاع الرأي."
+ poll_enabled: "أيمكن للمستخدمين إنشاء تصويتات؟"
+ poll_maximum_options: "أقصى عدد للخيارات في كلّ تصويت."
poll:
- multiple_polls_without_name: "هناك عدة استطلاعات رأي بدون اسم. استخدم خاصية 'name
' لتحديد استطلاعاتك الفريدة."
- multiple_polls_with_same_name: "هناك عدة استطلاعات رأي متشابهة بالاسم : %{name}. استخدم خاصية 'name
' لتحدي استطلاعك الفريد."
- default_poll_must_have_at_least_2_options: "استطلاع الرأي يجب أن يكون على الأقل 2 من الخيارات."
- named_poll_must_have_at_least_2_options: "استطلاع الرأي المسمى %{name} يجب أن يكون على الأقل 2 من الخيارات."
- default_poll_must_have_less_options: "استطلاع الرأي يجب أن يكون أقل من %{max} الخيارات."
- named_poll_must_have_less_options: "استطلاع الرأي المسمى %{name} يجب أقل من %{max} الخيارات."
- default_poll_must_have_different_options: "استطلاع الرأي يجب أن يكون مختلف الخيارات."
- named_poll_must_have_different_options: "استطلاع الرأي المسمى %{name} يجب أن يكون مختلف الخيارات."
- default_poll_with_multiple_choices_has_invalid_parameters: "معلمات استطلاع الرأي ذات الخيار المتعدد غير صالحة."
- named_poll_with_multiple_choices_has_invalid_parameters: "معلمات استطلاع الرأي المسمى %{name} ذات الخيار المتعدد غير صالحة."
- requires_at_least_1_valid_option: "يجب أن تختار أختيار 1 صحيح على الأقل."
- cannot_change_polls_after_5_minutes: "لا يمكنك إضافة أو حذف أو إعادة تسمية استطلاعات الرأي بعد الـ5 دقائق اﻷولى."
- op_cannot_edit_options_after_5_minutes: "لا تستطيع إضافة أو حذف خيارات استطلاع الرأي بعد أول 5 دقائق. أرجو أن تتصل بالمسؤول إذا احتجت لتحرير خيارات الرأي."
- staff_cannot_add_or_remove_options_after_5_minutes: "لا تستطيع إضافة أو حذف خيارات استطلاع الرأي بعد أول 5 دقائق. يجب عليك إغلاق هذا الموضوع وإنشاء جديد بدلا عنه."
- no_polls_associated_with_this_post: "لا استطلاعات رأي مرتبطة مع هذا الاستطلاع."
- no_poll_with_this_name: "استطلاع الرأي المسمى %{name} غير مرتبط مع هذا الاستطلاع."
- post_is_deleted: "لا يمكنك عمل حذف مشاركة."
- topic_must_be_open_to_vote: "الموضوع يجب أن يكون مفتوح للتصويت."
- poll_must_be_open_to_vote: "يجب أن تكون الاستطلاعات مفتوحة للتصويت."
- topic_must_be_open_to_toggle_status: "الموضوع يجب أن يكون مفتوح لتبديل الحالة."
- only_staff_or_op_can_toggle_status: "فقط الأعضاء العاملين أو المعلنين الأصليين يمكنهم تبديل حالة الاستطلاع."
+ multiple_polls_without_name: "توجد بضعة تصويتات بلا اسم. استخدم خاصية 'name
' لتمييزها."
+ multiple_polls_with_same_name: "توجد بضعة تصويتات بالاسم %{name} نفسه. استخدم خاصية 'name
' لتمييزها."
+ default_poll_must_have_at_least_2_options: "على التصويت توفير خيارين على الأقل."
+ named_poll_must_have_at_least_2_options: "على التصويت ذو الاسم %{name} توفير خيارين على الأقل."
+ default_poll_must_have_less_options:
+ zero: "على التصويت ألا يوفّر أي خيار."
+ one: "على التصويت توفير خيار واحد على الأقل."
+ two: "على التصويت توفير خيارين على الأقل."
+ few: "على التصويت توفير %{count} خيارات على الأقل."
+ many: "على التصويت توفير %{count} خيارا على الأقل."
+ other: "على التصويت توفير %{count} خيار على الأقل."
+ named_poll_must_have_less_options:
+ zero: "على التصويت ذو الاسم %{name} ألا يوفّر أي خيار."
+ one: "على التصويت ذو الاسم %{name} توفير خيار واحد على الأقل."
+ two: "على التصويت ذو الاسم %{name} توفير خيارين على الأقل."
+ few: "على التصويت ذو الاسم %{name} توفير %{count} خيارات على الأقل."
+ many: "على التصويت ذو الاسم %{name} توفير %{count} خيارا على الأقل."
+ other: "على التصويت ذو الاسم %{name} توفير %{count} خيار على الأقل."
+ default_poll_must_have_different_options: "على التصويت توفير خيارات مختلفة."
+ named_poll_must_have_different_options: "على التصويت ذو الاسم %{name} توفير خيارات مختلفة."
+ default_poll_with_multiple_choices_has_invalid_parameters: "للتصويت متعدد الخيارات معلمات غير صالحة."
+ named_poll_with_multiple_choices_has_invalid_parameters: "للتصويت متعدد الخيارات ذو الاسم %{name} معلمات غير صالحة."
+ requires_at_least_1_valid_option: "عليك اختيار خيار واحد صالح على الأقل."
+ cannot_change_polls_after_5_minutes: "لا يمكنك إضافة تصويتات، أو حذفها أو إعادة تسميتها بعد مضي 5 دقائق."
+ op_cannot_edit_options_after_5_minutes: "لا يمكنك إضافة تصويتات، أو حذفها أو إعادة تسميتها بعد مضي 5 دقائق. من فضلك راسل مشرفا إن احتجت إلى تعديل أحد خيارات التصويت."
+ staff_cannot_add_or_remove_options_after_5_minutes: "لا يمكنك إضافة تصويتات، أو حذفها أو إعادة تسميتها بعد مضي 5 دقائق. عليك إغلاق هذا الموضوع وإنشاء آخر بدله."
+ no_polls_associated_with_this_post: "لا تصويتات مرتبطة مع هذه المشاركة."
+ no_poll_with_this_name: "لا تصويت بالاسم %{name} مرتبط مع هذه المشاركة."
+ post_is_deleted: "لا شيء تفعله مع مشاركة محذوفة. "
+ topic_must_be_open_to_vote: "على الموضوع أن يكون مفتوحا للتصويت."
+ poll_must_be_open_to_vote: "على المشاركة أن تكون مفتوحة للتصويت."
+ topic_must_be_open_to_toggle_status: "على الموضوع أن يكون مفتوحا لتبديل الحالة."
+ only_staff_or_op_can_toggle_status: "يمكن فقط لأعضاء الطاقم أو المشارِك الأصلي تبديل حالة التصويت."
+ email:
+ link_to_poll: "انقر لعرض التصويت."
diff --git a/plugins/poll/config/locales/server.bs_BA.yml b/plugins/poll/config/locales/server.bs_BA.yml
index 7b73cd2f229..17b984e3993 100644
--- a/plugins/poll/config/locales/server.bs_BA.yml
+++ b/plugins/poll/config/locales/server.bs_BA.yml
@@ -5,4 +5,7 @@
# To work with us on translations, join this project:
# https://www.transifex.com/projects/p/discourse-org/
-bs_BA: {}
+bs_BA:
+ site_settings:
+ poll_enabled: "Dozvolite korisnicima da kreiraju ankete?"
+ poll_maximum_options: "Najveći broj dopuštenih izbora u anketi."
diff --git a/plugins/poll/config/locales/server.cs.yml b/plugins/poll/config/locales/server.cs.yml
index a89da214785..26c43911238 100644
--- a/plugins/poll/config/locales/server.cs.yml
+++ b/plugins/poll/config/locales/server.cs.yml
@@ -14,8 +14,6 @@ cs:
multiple_polls_with_same_name: "Víc hlasování má stejné jméno: %{name}. Použijte atribut 'name
' pro jednoznačnou identifikaci vašich hlasování."
default_poll_must_have_at_least_2_options: "Hlasování musí mít alespoň 2 odpovědi."
named_poll_must_have_at_least_2_options: "Hlasování %{name} musí mít alespoň 2 odpovědi."
- default_poll_must_have_less_options: "Hlasování nesmí mít víc než %{max} odpovědí."
- named_poll_must_have_less_options: "Hlasování %{name} nesmí mít víc než %{max} odpovědí."
default_poll_must_have_different_options: "Hlasování musí mít různé odpovědi."
named_poll_must_have_different_options: "Hlasování %{name} musí mít různé odpovědi."
requires_at_least_1_valid_option: "Musíte vybrat alespoň jednu platnou odpověď."
diff --git a/plugins/poll/config/locales/server.da.yml b/plugins/poll/config/locales/server.da.yml
index ba7e89bf41b..0ad4aa946ab 100644
--- a/plugins/poll/config/locales/server.da.yml
+++ b/plugins/poll/config/locales/server.da.yml
@@ -14,8 +14,12 @@ da:
multiple_polls_with_same_name: "Der er flere afstemninger med samme navn %{name}. Brug attributten 'name
' for at identificere dine afstemninger."
default_poll_must_have_at_least_2_options: "Afstemningen skal mindst have 2 muligheder."
named_poll_must_have_at_least_2_options: "Afstemningen %{name} skal mindst have 2 valgmuligheder."
- default_poll_must_have_less_options: "Afstemningen skal have mindre end %{max} muligheder."
- named_poll_must_have_less_options: "Afstemningen %{name} skal have mindre end %{max} valgmuligheder."
+ default_poll_must_have_less_options:
+ one: "Afstemningen må ikke have nogen muligheder."
+ other: "Afstemningen skal have mindre end %{max} muligheder."
+ named_poll_must_have_less_options:
+ one: "Afstemningen %{name} må ikke have nogen valgmuligheder."
+ other: "Afstemningen %{name} skal have mindre end %{max} valgmuligheder."
default_poll_must_have_different_options: "Afstemningen skal have forskellige muligheder."
named_poll_must_have_different_options: "Afstemningen %{name} skal have forskellige valgmuligheder."
default_poll_with_multiple_choices_has_invalid_parameters: "Afstemning med flere valgmuligheder har ugyldige parametre."
@@ -31,3 +35,5 @@ da:
poll_must_be_open_to_vote: "Afstemning skal være åben for at kunne stemme."
topic_must_be_open_to_toggle_status: "Emnet skal være åbent for at ændre status."
only_staff_or_op_can_toggle_status: "Kun personalet eller emnets opretter kan ændre status for en afstemning"
+ email:
+ link_to_poll: "Klik for at se afstemningen."
diff --git a/plugins/poll/config/locales/server.de.yml b/plugins/poll/config/locales/server.de.yml
index 6a7916a8979..e1672ac3d2a 100644
--- a/plugins/poll/config/locales/server.de.yml
+++ b/plugins/poll/config/locales/server.de.yml
@@ -14,8 +14,12 @@ de:
multiple_polls_with_same_name: "Es gibt mehre Umfragen mit dem selben Namen: %{name}. Benutze das Attribute 'name
', um deine Umfragen eindeutig identifizierbar zu machen."
default_poll_must_have_at_least_2_options: "Umfragen müssen mindestens 2 Optionen haben."
named_poll_must_have_at_least_2_options: "Die Umfrage mit dem Namen %{name} muss mindestens 2 Optionen haben."
- default_poll_must_have_less_options: "Die Umfrage muss weniger als %{max} Optionen haben."
- named_poll_must_have_less_options: "Die Umfrage mit dem Namen %{name} muss weniger als %{max} Optionen haben."
+ default_poll_must_have_less_options:
+ one: "Die Umfrage muss weniger als eine Option haben."
+ other: "Die Umfrage muss weniger als %{count} Optionen haben."
+ named_poll_must_have_less_options:
+ one: "Die Umfrage mit dem Namen %{name} muss weniger als eine Option haben."
+ other: "Die Umfrage mit dem Namen %{name} muss weniger als %{count} Optionen haben."
default_poll_must_have_different_options: "Die Umfrage muss unterschiedliche Optionen haben."
named_poll_must_have_different_options: "Die Umfrage mit dem Namen %{name} muss unterschiedliche Optionen haben."
default_poll_with_multiple_choices_has_invalid_parameters: "Die Mehrfachauswahl-Umfrage hat ungültige Parameter."
@@ -31,3 +35,5 @@ de:
poll_must_be_open_to_vote: "Die Umfrage muss zum Abstimmen gestartet sein."
topic_must_be_open_to_toggle_status: "Damit du den Status ändern kannst, muss das Thema geöffnet sein."
only_staff_or_op_can_toggle_status: "Nur Mitarbeiter und der Autor des Beitrags können den Status der Umfrage ändern."
+ email:
+ link_to_poll: "Klicke hier, um die Umfrage zu sehen."
diff --git a/plugins/poll/config/locales/server.en.yml b/plugins/poll/config/locales/server.en.yml
index dd1e4a5da9f..1ef088e0e40 100644
--- a/plugins/poll/config/locales/server.en.yml
+++ b/plugins/poll/config/locales/server.en.yml
@@ -26,8 +26,12 @@ en:
default_poll_must_have_at_least_2_options: "Poll must have at least 2 options."
named_poll_must_have_at_least_2_options: "Poll named %{name} must have at least 2 options."
- default_poll_must_have_less_options: "Poll must have less than %{max} options."
- named_poll_must_have_less_options: "Poll named %{name} must have less than %{max} options."
+ default_poll_must_have_less_options:
+ one: "Poll must have less than 1 option."
+ other: "Poll must have less than %{count} options."
+ named_poll_must_have_less_options:
+ one: "Poll named %{name} must have less than 1 option."
+ other: "Poll named %{name} must have less than %{count} options."
default_poll_must_have_different_options: "Poll must have different options."
named_poll_must_have_different_options: "Poll named %{name} must have different options."
@@ -51,3 +55,6 @@ en:
topic_must_be_open_to_toggle_status: "The topic must be open to toggle status."
only_staff_or_op_can_toggle_status: "Only a staff member or the original poster can toggle a poll status."
+
+ email:
+ link_to_poll: "Click to view the poll."
diff --git a/plugins/poll/config/locales/server.es.yml b/plugins/poll/config/locales/server.es.yml
index 09b1b0ba78a..1792d5cf91d 100644
--- a/plugins/poll/config/locales/server.es.yml
+++ b/plugins/poll/config/locales/server.es.yml
@@ -14,8 +14,12 @@ es:
multiple_polls_with_same_name: "Hay varias encuestas con el mismo nombre: %{name}. Usa la etiqueta 'name
' para diferenciar tus encuestas."
default_poll_must_have_at_least_2_options: "La encuesta debe tener al menos 2 opciones."
named_poll_must_have_at_least_2_options: "La encuesta llamada %{name} debe tener al menos 2 opciones."
- default_poll_must_have_less_options: "La encuesta debe tener menos de %{max} opciones."
- named_poll_must_have_less_options: "La encuesta llamada %{name} debe tener menos de %{max} opciones."
+ default_poll_must_have_less_options:
+ one: "Las encuestas deben tener menos de 1 opción."
+ other: "Las encuestas deben tener menos de %{count} opciones."
+ named_poll_must_have_less_options:
+ one: "La encuesta llamada %{name} debe tener menos de 1 opción."
+ other: "La encuesta llamada %{name} debe tener menos de %{count} opciones."
default_poll_must_have_different_options: "La encuesta debe tener diferentes opciones."
named_poll_must_have_different_options: "La encuesta llamada %{name} debe tener diferentes opciones."
default_poll_with_multiple_choices_has_invalid_parameters: "La encuesta con múltiples opciones tiene parámetros no válidos."
@@ -31,3 +35,5 @@ es:
poll_must_be_open_to_vote: "La encuesta debe estar abierta para votar."
topic_must_be_open_to_toggle_status: "Este tema debe estar abierto para cambiar entre estados."
only_staff_or_op_can_toggle_status: "Solo un moderador, administrador o el autor original del post puede cambiar el estado de una encuesta."
+ email:
+ link_to_poll: "Haz clic para ver la encuesta."
diff --git a/plugins/poll/config/locales/server.fa_IR.yml b/plugins/poll/config/locales/server.fa_IR.yml
index 1bb4e1cf579..35a1842d702 100644
--- a/plugins/poll/config/locales/server.fa_IR.yml
+++ b/plugins/poll/config/locales/server.fa_IR.yml
@@ -14,8 +14,10 @@ fa_IR:
multiple_polls_with_same_name: "چند نظرسنجی با اسم برابر وجود دارند: %{name}.استفاده کن از 'اسم/code>' ویژگی ٬ تا نظرسنجی منحصر به فرد را تشخیص دهد."
default_poll_must_have_at_least_2_options: "نظرسنجی باید حداقل 2 گزینه داشته باشد."
named_poll_must_have_at_least_2_options: "اسم نظرسنجی %{name} باید حداقل 2 گزینه داشته باشد. "
- default_poll_must_have_less_options: "Poll must have less than %{max} options."
- named_poll_must_have_less_options: "Poll named %{name} must have less than %{max} options."
+ default_poll_must_have_less_options:
+ other: "نظرسنجی باید کمتر از %{count} گزینه داشته باشد."
+ named_poll_must_have_less_options:
+ other: "نظرسنجی با نام %{name} باید کمتر از %{count} گزینه داشته باشد."
default_poll_must_have_different_options: "نظرسنجی باید گزینه های متفاوت داشته باشد. "
named_poll_must_have_different_options: "Poll named %{name} must have different options."
default_poll_with_multiple_choices_has_invalid_parameters: "در نظرسنجی چند گزینهای پارامترهای نامعتبری وجود دارد."
@@ -31,3 +33,5 @@ fa_IR:
poll_must_be_open_to_vote: "نظرسنجی باید باز باشد برای رای گیری."
topic_must_be_open_to_toggle_status: "جستار باید برای تغییر وضیعت باز باشد. "
only_staff_or_op_can_toggle_status: "فقط کارمندان یا ارسال کنندگان پست می توانند وضعیت نظرسنجی را تغییر دهند. "
+ email:
+ link_to_poll: "برای دیدن نظرسنجی کلیک کنید."
diff --git a/plugins/poll/config/locales/server.fi.yml b/plugins/poll/config/locales/server.fi.yml
index c70cc428f5b..554c6a362e9 100644
--- a/plugins/poll/config/locales/server.fi.yml
+++ b/plugins/poll/config/locales/server.fi.yml
@@ -14,8 +14,12 @@ fi:
multiple_polls_with_same_name: "Useamman kyselyn nimi on %{name}. Anna kaikille eri nimet 'name
'-määreellä."
default_poll_must_have_at_least_2_options: "Äänestyksessä pitää olla vähintään 2 vaihtoehtoa."
named_poll_must_have_at_least_2_options: "Äänestyksessä nimeltä %{name} pitää olla vähintään 2 vaihtoehtoa."
- default_poll_must_have_less_options: "Äänestyksessä pitää olla vähemmän, kuin %{max} vaihtoehtoa."
- named_poll_must_have_less_options: "Äänestyksen nimeltä %{name} pitää sisältää vähemmän, kuin %{max} vaihtoehtoa."
+ default_poll_must_have_less_options:
+ one: "Äänestyksessä pitää olla vähemmän, kuin yksi vaihtoehto."
+ other: "Äänestyksessä pitää olla vähemmän, kuin %{count} vaihtoehtoa."
+ named_poll_must_have_less_options:
+ one: "Äänestyksessä %{name} pitää olla vähemmän kuin yksi vaihtoehto."
+ other: "Äänestyksessä %{name} pitää olla vähemmän kuin %{count} vaihtoehtoa."
default_poll_must_have_different_options: "Äänestysvaihtoehtojen on erottava toisistaan."
named_poll_must_have_different_options: "Äänestyksen nimeltä %{name} vaihtoehtojen on erottava toisistaan."
default_poll_with_multiple_choices_has_invalid_parameters: "Kysely, jossa on useita vaihtoehtoja sisältää epäkelpoja parametreja."
@@ -23,7 +27,7 @@ fi:
requires_at_least_1_valid_option: "Sinun täytyy valita vähintään 1 vaihtoehto."
cannot_change_polls_after_5_minutes: "Et voi lisätä, poistaa tai muuttaa kyselyn vaihtoehtoja ensimmäisen 5 minuutin jälkeen."
op_cannot_edit_options_after_5_minutes: "Et voi lisätä, poistaa tai muuttaa kyselyn vaihtoehtoja ensimmäisen 5 minuutin jälkeen. Ota yhteyttä valvojaan, jos sinun täytyy muokata kyselyn vaihtoehtoja."
- staff_cannot_add_or_remove_options_after_5_minutes: "Et voi lisätä, poistaa tai muuttaa kyselyn vaihtoehtoja ensimmäisen 5 minuutin jälkeen. Sinun tulee poistaa tämä ketju ja avata uusi sen sijaan."
+ staff_cannot_add_or_remove_options_after_5_minutes: "Et voi lisätä, poistaa tai muuttaa kyselyn vaihtoehtoja ensimmäisen 5 minuutin jälkeen. Sinun tulee poistaa tämä ketju ja luoda uusi sen sijaan."
no_polls_associated_with_this_post: "Tämä viesti ei sisällä äänestyskyselyä."
no_poll_with_this_name: "Tämä viesti ei sisällä äänestyskyselyä nimeltä %{name}."
post_is_deleted: "Ei voi tehdä poistetulle viestille"
@@ -31,3 +35,5 @@ fi:
poll_must_be_open_to_vote: "Vain avoimessa kyselyssä voi äänestää."
topic_must_be_open_to_toggle_status: "Vain avoimessa ketjussa voi muuttaa äänestyksen tilaa."
only_staff_or_op_can_toggle_status: "Vain henkilökunta tai kyselyn laatija voi muuttaa äänestyksen tilaa."
+ email:
+ link_to_poll: "Siirry äänestykseen klikkaamalla tästä"
diff --git a/plugins/poll/config/locales/server.fr.yml b/plugins/poll/config/locales/server.fr.yml
index 287c6d583a7..181a3a3a2fe 100644
--- a/plugins/poll/config/locales/server.fr.yml
+++ b/plugins/poll/config/locales/server.fr.yml
@@ -14,8 +14,12 @@ fr:
multiple_polls_with_same_name: "Plusieurs sondages ont le même noms : %{name}. Utilisez l'attribut 'name
' pour donner un identifiant unique aux sondages."
default_poll_must_have_at_least_2_options: "Un sondage doit contenir au moins deux options."
named_poll_must_have_at_least_2_options: "Le sondage %{name} doit contenir au moins deux options."
- default_poll_must_have_less_options: "Un sondage peut contenir jusque %{max} options."
- named_poll_must_have_less_options: "Le sondage %{name} peut contenir jusque %{max} options."
+ default_poll_must_have_less_options:
+ one: "Un sondage peut contenir une option."
+ other: "Un sondage peut contenir jusque %{count} options."
+ named_poll_must_have_less_options:
+ one: "Le sondage % {name} strong> peut contenir une option."
+ other: "Le sondage % {name} strong> peut contenir jusqu’à % {count} options."
default_poll_must_have_different_options: "Les sondages doivent contenir des options différentes les unes des autres."
named_poll_must_have_different_options: "Le sondage %{name} doit contenir des options différentes."
default_poll_with_multiple_choices_has_invalid_parameters: "Le sondage à choix multiples possède des paramètres invalides."
@@ -31,3 +35,5 @@ fr:
poll_must_be_open_to_vote: "Le sondage doit être ouvert pour pouvoir voter."
topic_must_be_open_to_toggle_status: "Le sujet doit être ouvert pour modifier le statut."
only_staff_or_op_can_toggle_status: "Seuls les responsables ou l'utilisateur qui a créé ce sujet peuvent modifier le statut d'un sondage."
+ email:
+ link_to_poll: "Cliquez ici pour voir le sondage."
diff --git a/plugins/poll/config/locales/server.gl.yml b/plugins/poll/config/locales/server.gl.yml
new file mode 100644
index 00000000000..161239af6bd
--- /dev/null
+++ b/plugins/poll/config/locales/server.gl.yml
@@ -0,0 +1,39 @@
+# encoding: utf-8
+#
+# Never edit this file. It will be overwritten when translations are pulled from Transifex.
+#
+# To work with us on translations, join this project:
+# https://www.transifex.com/projects/p/discourse-org/
+
+gl:
+ site_settings:
+ poll_enabled: "Queres permitir os usuarios crear enquisas?"
+ poll_maximum_options: "Número máximo de opcións permitidas nunha enquisa."
+ poll:
+ multiple_polls_without_name: "Hai múltiples enquisas sen nome. Utiliza o atributo 'nome
' para singularizar as túas enquisas."
+ multiple_polls_with_same_name: "Hai múltiples enquisas co mesmo nome: %{name}. Utiliza o atributo 'nome
' para singularizar as túas enquisas."
+ default_poll_must_have_at_least_2_options: "A enquisa debe ter alomenos 2 opcións."
+ named_poll_must_have_at_least_2_options: "A enquisa chamada %{name} debe ter alomenos 2 opcións."
+ default_poll_must_have_less_options:
+ one: "A enquisa debe ter cando menos 1 opción."
+ other: "A enquisa debe ter alomenos %{count} opcións."
+ named_poll_must_have_less_options:
+ one: "A enquisa chamada %{name} debe ter menos de 1 opción."
+ other: "A enquisa chamada %{name} debe ter menos de %{count} opcións."
+ default_poll_must_have_different_options: "A enquisa debe ter diferentes opcións."
+ named_poll_must_have_different_options: "A enquisa chamada strong>%{name} debe ter diferentes opcións."
+ default_poll_with_multiple_choices_has_invalid_parameters: "A enquisa con varios apartados ten parámetros incorrectos."
+ named_poll_with_multiple_choices_has_invalid_parameters: "A enquisa chamada %{name} con varios apartados ten parámetros incorrectos."
+ requires_at_least_1_valid_option: "Debes seleccionar alomenos 1 opción válida."
+ cannot_change_polls_after_5_minutes: "Non podes engadir, retirar ou renomear enquisas despois dos primeiros 5 minutos."
+ op_cannot_edit_options_after_5_minutes: "Non podes engadir nin retirar opcións da enquisa despois de 5 minutos. Contacta cun moderador se precisas editar unha opción da enquisa."
+ staff_cannot_add_or_remove_options_after_5_minutes: "Non podes engadir nin retirar opcións da enquisa despois de 5 minutos. Deberías pechar este tema e crear outro novo para substituílo."
+ no_polls_associated_with_this_post: "Non hai enquisas asociadas con esta publicación."
+ no_poll_with_this_name: "Non hai ningunha enquisa chamada %{name} asociada con esta publicación."
+ post_is_deleted: "Non se pode actuar sobre unha publicación eliminada."
+ topic_must_be_open_to_vote: "O tema debe estar aberto para votalo."
+ poll_must_be_open_to_vote: "A enquisa debe estar aberta para votala."
+ topic_must_be_open_to_toggle_status: "O tema debe estar aberto para cambiarlle o estado."
+ only_staff_or_op_can_toggle_status: "Soamente un membro do equipo ou o publicador orixinal poden trocar o estado dunha enquisa."
+ email:
+ link_to_poll: "Preme para ver a enquisa."
diff --git a/plugins/poll/config/locales/server.he.yml b/plugins/poll/config/locales/server.he.yml
index 9711891cc5d..0c6044d8adb 100644
--- a/plugins/poll/config/locales/server.he.yml
+++ b/plugins/poll/config/locales/server.he.yml
@@ -14,8 +14,12 @@ he:
multiple_polls_with_same_name: "יש מספר סקרים עם אותו שם %{name}. השתמש במאפיין 'name
' לזהות באופן יחודי את הסקרים שלך. "
default_poll_must_have_at_least_2_options: "לסקר צריך להיות לפחות שתי אפשרויות."
named_poll_must_have_at_least_2_options: "לסקר בשם %{name} צריך שיהיה לפחות שתי אפשרויות."
- default_poll_must_have_less_options: "לסקר צריך שיהיו פחות מ %{max} אפשרויות. "
- named_poll_must_have_less_options: "לסקר בשם %{name} צריך שיהיו פחות מ %{max} אפשרויות. "
+ default_poll_must_have_less_options:
+ one: "לסקר חייב להיות פחות מאפשרות אחת."
+ other: "לסקר חייב להיות פחות מ-%{count} אפשרויות."
+ named_poll_must_have_less_options:
+ one: "לסקר בשם %{name} צריך להיות פחות מאפשרות אחת."
+ other: "לסקר בשם %{name} צריך להיות פחות מ-%{count} אפשרויות."
default_poll_must_have_different_options: "לסקר צריך שיהיה אפשרויות שונות. "
named_poll_must_have_different_options: "לסקר בשם %{name} צריך שיהיו אפשרויות שונות. "
default_poll_with_multiple_choices_has_invalid_parameters: "לסקר עם בחירה מרובה יש פרמטרים לא תקינים. "
@@ -31,3 +35,5 @@ he:
poll_must_be_open_to_vote: "הסקר צריך להיות פתוח להזמנות."
topic_must_be_open_to_toggle_status: "הנושא צריך להיות פתוח לשינויים בסטטוס."
only_staff_or_op_can_toggle_status: "רק חבר צוות או המפרסם המקורי יכול לשנות סטטוס של סקר. "
+ email:
+ link_to_poll: "לחץ כדיל לצפות בסקר."
diff --git a/plugins/poll/config/locales/server.id.yml b/plugins/poll/config/locales/server.id.yml
index 2112cad6a27..2e2abaaa52f 100644
--- a/plugins/poll/config/locales/server.id.yml
+++ b/plugins/poll/config/locales/server.id.yml
@@ -5,4 +5,33 @@
# To work with us on translations, join this project:
# https://www.transifex.com/projects/p/discourse-org/
-id: {}
+id:
+ site_settings:
+ poll_enabled: "Perbolehkan pengguna untuk membuat polling?"
+ poll_maximum_options: "Nomor maksimum dari pilihan yang diperbolehkan di sebuah polling."
+ poll:
+ multiple_polls_without_name: "Ada beberapa polling tanpa sebuah nama. Gunakan atribut 'nama
' untuk membuat identitas polling anda unik."
+ multiple_polls_with_same_name: "Ada beberapa polling dengan nama yang sama: %{name}. Gunakan atribut 'nama
' untuk mengidentifikasi polling anda secara unik."
+ default_poll_must_have_at_least_2_options: "Polling harus memiliki setidaknya 2 pilihan."
+ named_poll_must_have_at_least_2_options: "Polling dengan nama %{name} harus memiliki setidaknya 2 pilihan."
+ default_poll_must_have_less_options:
+ other: "Polling harus kurang dari %{count} pilihan."
+ named_poll_must_have_less_options:
+ other: "Polling dengan nama %{name} harus kurang dari %{count} pilihan."
+ default_poll_must_have_different_options: "Polling harus memiliki pilihan yang berbeda."
+ named_poll_must_have_different_options: "Polling dengan nama %{name} harus memiliki pilihan yang berbeda."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Polling dengan pilihan ganda parameternya tidak benar."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Polling dengan nama %{name} dengan pilihan ganda parameternya tidak benar."
+ requires_at_least_1_valid_option: "Anda harus memilih setidaknya 1 pilihan yang benar."
+ cannot_change_polls_after_5_minutes: "Anda tidak dapat menambah, menghapus atau merename polling setelah 15 menit pertama."
+ op_cannot_edit_options_after_5_minutes: "Anda tidak dapat menambah atau menghapus pilihan polling setelah 15 menit pertama. Silahkan kontak moderator jika anda ingin merubah pilihan pada sebuah polling."
+ staff_cannot_add_or_remove_options_after_5_minutes: "Anda tidak dapat menambah atau menghapus pilihan polling setelah 15 menit pertama. Anda harus menutup topik ini dan membuat yang baru."
+ no_polls_associated_with_this_post: "Tidak ada polling yang terkait dengan pos ini."
+ no_poll_with_this_name: "Tidak ada pollig %{name} yang terkait dengan pos ini."
+ post_is_deleted: "Tidak dapat beraksi pada sebuah pos yang dihapus."
+ topic_must_be_open_to_vote: "Topik harus terbuka untuk dinilai."
+ poll_must_be_open_to_vote: "Polling harus terbuka untuk dinilai."
+ topic_must_be_open_to_toggle_status: "Topik harus terbuka untuk merubah status."
+ only_staff_or_op_can_toggle_status: "Hanya anggota staf atau penerbit asli yang dapat merubah status polling."
+ email:
+ link_to_poll: "Klik untuk menampilkan polling."
diff --git a/plugins/poll/config/locales/server.it.yml b/plugins/poll/config/locales/server.it.yml
index 2ece567bf89..04e4c37823b 100644
--- a/plugins/poll/config/locales/server.it.yml
+++ b/plugins/poll/config/locales/server.it.yml
@@ -14,8 +14,12 @@ it:
multiple_polls_with_same_name: "Ci sono più sondaggi con lo stesso nome: %{name}. Usa l'attributo 'name
' per identificare univocamente i tuoi sondaggi."
default_poll_must_have_at_least_2_options: "Il sondaggio deve avere almeno due opzioni."
named_poll_must_have_at_least_2_options: "Il sondaggio con nome %{name} deve avere almeno due opzioni."
- default_poll_must_have_less_options: "Il sondaggio deve avere meno di %{max} opzioni."
- named_poll_must_have_less_options: "Il sondaggio dal nome %{name} deve avere meno di %{max} opzioni."
+ default_poll_must_have_less_options:
+ one: "Il sondaggio deve avere meno di una opzione."
+ other: "Il sondaggio deve avere meno di %{count} opzioni."
+ named_poll_must_have_less_options:
+ one: "Il sondaggio %{name} deve avere meno di una opzione."
+ other: "Il sondaggio %{name} deve avere meno di %{count} opzioni."
default_poll_must_have_different_options: "Il sondaggio deve avere opzioni diverse."
named_poll_must_have_different_options: "Il sondaggio dal nome %{name} deve avere opzioni diverse."
default_poll_with_multiple_choices_has_invalid_parameters: "Il sondaggio a scelta multipla ha parametri non validi."
@@ -31,3 +35,5 @@ it:
poll_must_be_open_to_vote: "Il sondaggio deve essere aperto per poter votare."
topic_must_be_open_to_toggle_status: "L'argomento deve essere aperto per commutare lo stato."
only_staff_or_op_can_toggle_status: "Solo un membro dello staff o l'autore originale possono commutare lo stato di un sondaggio."
+ email:
+ link_to_poll: "Clicca per vedere il sondaggio."
diff --git a/plugins/poll/config/locales/server.ja.yml b/plugins/poll/config/locales/server.ja.yml
index 2caae933626..6353abfeb56 100644
--- a/plugins/poll/config/locales/server.ja.yml
+++ b/plugins/poll/config/locales/server.ja.yml
@@ -14,8 +14,10 @@ ja:
multiple_polls_with_same_name: "同じ名前: %{name} の複数の投票があります。一意に投票結果を識別するために、属性'name
'を使用します。"
default_poll_must_have_at_least_2_options: "投票は少なくとも2つのオプションが必要です。"
named_poll_must_have_at_least_2_options: "投票 %{name} は少なくとも2つのオプションが必要です。"
- default_poll_must_have_less_options: "投票オプションは %{max} 未満です。"
- named_poll_must_have_less_options: "投票 %{name} のオプションは %{max} 未満です。"
+ default_poll_must_have_less_options:
+ other: "投票は%{count}オプション以下でなければいけません。"
+ named_poll_must_have_less_options:
+ other: "投票 %{name} は%{count}オプション以下でなければいけません。"
default_poll_must_have_different_options: "投票は異なるオプションが必要です。"
named_poll_must_have_different_options: "投票 %{name} は異なるオプションが必要です。"
default_poll_with_multiple_choices_has_invalid_parameters: "複数の選択肢をもつ投票に無効なパラメータがあります。"
@@ -31,3 +33,5 @@ ja:
poll_must_be_open_to_vote: "投票するにはオープンになっている必要があります。"
topic_must_be_open_to_toggle_status: "状態を切り替えるには、トピックがオープンになっている必要があります。"
only_staff_or_op_can_toggle_status: "スタッフやオリジナル投稿者のみが投票状態を切り替えることができます。"
+ email:
+ link_to_poll: "クリックして投票を表示。"
diff --git a/plugins/poll/config/locales/server.ko.yml b/plugins/poll/config/locales/server.ko.yml
index c8066f3a2c3..ed8f31661e4 100644
--- a/plugins/poll/config/locales/server.ko.yml
+++ b/plugins/poll/config/locales/server.ko.yml
@@ -14,8 +14,6 @@ ko:
multiple_polls_with_same_name: "같은 이름 %{name} 의 설문조사가 여러개 있습니다. 'name
' 속성을 사용하여 설문조사를 개별적으로 구분해 보세요."
default_poll_must_have_at_least_2_options: "설문조사에 적어도 2개의 항목은 있어야합니다."
named_poll_must_have_at_least_2_options: "%{name} 설문조사에 적어도 2개의 항목이 있어야 합니다."
- default_poll_must_have_less_options: "설문조사 항목은 %{max}개보다 적어야합니다."
- named_poll_must_have_less_options: "%{name} 설문조사의 항목이 %{max}개보다 적어야 합니다."
default_poll_must_have_different_options: "한 설문조사 안에 항목 내용들이 각각 달라야 합니다."
named_poll_must_have_different_options: "%{name} 설문조사의 항목 내용들이 달라야 합니다."
default_poll_with_multiple_choices_has_invalid_parameters: "복수응답 가능한 설문조사가 잘못된 매개변수를 가지고 있습니다."
diff --git a/plugins/poll/config/locales/server.nb_NO.yml b/plugins/poll/config/locales/server.nb_NO.yml
index 8d5c7e686d0..03d3f0b3291 100644
--- a/plugins/poll/config/locales/server.nb_NO.yml
+++ b/plugins/poll/config/locales/server.nb_NO.yml
@@ -14,8 +14,6 @@ nb_NO:
multiple_polls_with_same_name: "Det er flere spørreundersøkelser med samme navn: %{name}. Bruk 'name
' attributten til å identifisere spørreundersøkelsene dine."
default_poll_must_have_at_least_2_options: "Spørrsundersøkelser må inneholde minst 2 alternativer."
named_poll_must_have_at_least_2_options: "Spørresundersøkelsen %{name} må ha minst 2 svaralternativer."
- default_poll_must_have_less_options: "Spørreundersøkelsen må ha mindre enn %{max} svaralternativer."
- named_poll_must_have_less_options: "Spørresundersøkelsen %{name} må ha mindre enn %{max} svaralternativer."
default_poll_must_have_different_options: "Spørreundersøkelsen må ha ulike alternativer."
named_poll_must_have_different_options: "Spørresundersøkelsen %{name} må ha ulike svaralternativer."
default_poll_with_multiple_choices_has_invalid_parameters: "Spørreundersøkelsen med flere svaralternativer har ugyldige parametere."
diff --git a/plugins/poll/config/locales/server.nl.yml b/plugins/poll/config/locales/server.nl.yml
index 232d9150048..8eeb5e19f4d 100644
--- a/plugins/poll/config/locales/server.nl.yml
+++ b/plugins/poll/config/locales/server.nl.yml
@@ -14,8 +14,12 @@ nl:
multiple_polls_with_same_name: "Er zijn meerdere polls met dezelfde naam : %{name}. Gebruik het 'naam
' attribuut om je polls te identificeren."
default_poll_must_have_at_least_2_options: "De poll moet minimaal 2 opties hebben."
named_poll_must_have_at_least_2_options: "De poll genaamd %{name} moet minimaal 2 opties hebben."
- default_poll_must_have_less_options: "De poll moet minder dan %{max} opties hebben."
- named_poll_must_have_less_options: "De poll genaamd %{name} moet minder dan %{max} opties hebben."
+ default_poll_must_have_less_options:
+ one: "Poll dient minder dan een optie te hebben."
+ other: "Poll dient minder dan %{count} opties te hebben."
+ named_poll_must_have_less_options:
+ one: "De poll genaamd %{name} moet minder dan 1 optie hebben."
+ other: "De poll met de naam %{name} moet minder dan %{count} opties bevatten."
default_poll_must_have_different_options: "Polls moeten verschillende opties hebben."
named_poll_must_have_different_options: "De poll genaamd %{name} moet verschillende opties hebben."
default_poll_with_multiple_choices_has_invalid_parameters: "De poll met meerdere keuzes heeft ongeldige parameters."
@@ -31,3 +35,5 @@ nl:
poll_must_be_open_to_vote: "De poll moet geopend zijn om te kunnen stemmen."
topic_must_be_open_to_toggle_status: "Het topic moet geopend zijn om de status te kunnen veranderen."
only_staff_or_op_can_toggle_status: "Alleen een staflid of de oorspronkelijke plaatser van een bericht kan de status van een poll veranderen."
+ email:
+ link_to_poll: "Klik om de poll te bekijken."
diff --git a/plugins/poll/config/locales/server.pl_PL.yml b/plugins/poll/config/locales/server.pl_PL.yml
index f8646b19330..0f2b9a368b0 100644
--- a/plugins/poll/config/locales/server.pl_PL.yml
+++ b/plugins/poll/config/locales/server.pl_PL.yml
@@ -14,12 +14,18 @@ pl_PL:
multiple_polls_with_same_name: "Istnieje kilka ankiet o tej samej nazwie: %{name}. Użyj atrybutu 'name
', aby umożliwić ich jednoznaczną identyfikację."
default_poll_must_have_at_least_2_options: "Ankieta musi posiadać co najmniej 2 opcje."
named_poll_must_have_at_least_2_options: "Ankieta %{name} musi posiadać co najmniej 2 opcje do wyboru."
- default_poll_must_have_less_options: "Ankieta musi posiadać mniej niż %{max} opcji do wyboru."
- named_poll_must_have_less_options: "Ankieta %{name} musi posiadać mniej niż %{max} opcji do wyboru."
+ default_poll_must_have_less_options:
+ one: "Ankieta musi posiadać mniej niż 1 opcję do wyboru."
+ few: "Ankieta musi posiadać co najmniej %{count} pozycje."
+ other: "Ankieta musi posiadać co najmniej %{count} pozycji."
+ named_poll_must_have_less_options:
+ one: "Ankieta %{name} musi posiadać mniej niż 1 opcję."
+ few: "Ankieta %{name} musi posiadać mniej niż %{count} opcje."
+ other: "Ankieta %{name} musi posiadać mniej niż %{count} opcji."
default_poll_must_have_different_options: "Ankieta musi posiadać kilka różnych opcji do wyboru."
named_poll_must_have_different_options: "Ankieta %{name} musi posiadać kilka różnych opcji do wyboru."
- default_poll_with_multiple_choices_has_invalid_parameters: "Sonda wielokrotnego wyboru posiada nieprawidłowe parametry."
- named_poll_with_multiple_choices_has_invalid_parameters: "Sonda wielokrotnego wyboru o nazwie %{name} posiada nieprawidłowe parametry."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Ankieta wielokrotnego wyboru posiada nieprawidłowe parametry."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Ankieta wielokrotnego wyboru o nazwie %{name} posiada nieprawidłowe parametry."
requires_at_least_1_valid_option: "Musisz wybrać co najmniej 1 poprawną opcje."
cannot_change_polls_after_5_minutes: "Po upływie 5 minut ankiety nie mogą być zmieniane."
op_cannot_edit_options_after_5_minutes: "Po upływie 5 minut nie można dodawać lub usuwać opcji wyboru w ankietach. Skontaktuj się z moderatorem jeśli naprawdę musisz zmienić opcję w tej ankiecie."
@@ -31,3 +37,5 @@ pl_PL:
poll_must_be_open_to_vote: "Głosowanie jest możliwe tylko w otwartych ankietach."
topic_must_be_open_to_toggle_status: "Zmiana statusu jest możliwa jedynie w otwartych tematach."
only_staff_or_op_can_toggle_status: "Status może być zmieniony przez autora wpisu lub członka załogi serwisu."
+ email:
+ link_to_poll: "Kliknij, aby zobaczyć ankietę."
diff --git a/plugins/poll/config/locales/server.pt.yml b/plugins/poll/config/locales/server.pt.yml
index ed455c1b507..6a8c13a7e57 100644
--- a/plugins/poll/config/locales/server.pt.yml
+++ b/plugins/poll/config/locales/server.pt.yml
@@ -14,8 +14,12 @@ pt:
multiple_polls_with_same_name: "Há múltiplas votações com o mesmo nome: %{name}. Utilize o atributo 'nome
' para identificar as suas votações de maneira única."
default_poll_must_have_at_least_2_options: "Votação deve ter pelo menos 2 opções."
named_poll_must_have_at_least_2_options: "Votação com o nome %{name} deve ter pelo menos 2 opções."
- default_poll_must_have_less_options: "Votação deve ter menos que %{max} opções."
- named_poll_must_have_less_options: "Votação com o nome %{name} deve ter menos que %{max} opções."
+ default_poll_must_have_less_options:
+ one: "Votação deve ter menos que 1 opção."
+ other: "Votação deve ter menos que %{count} opções."
+ named_poll_must_have_less_options:
+ one: "Votação com o nome %{name} deve ter menos que 1 opção."
+ other: "Votação com o nome %{name} deve ter menos que %{count} opções."
default_poll_must_have_different_options: "Votação deve ter opções diferentes."
named_poll_must_have_different_options: "Votação com o nome %{name} deve ter opções diferentes."
default_poll_with_multiple_choices_has_invalid_parameters: "Votação com escolha múltipla tem parâmetros inválidos."
@@ -31,3 +35,5 @@ pt:
poll_must_be_open_to_vote: "Votação tem que estar aberta para votar."
topic_must_be_open_to_toggle_status: "O tópico tem que estar aberto para alternar o estado."
only_staff_or_op_can_toggle_status: "Apenas um membro do pessoal ou o autor original pode alternar o estado da votação."
+ email:
+ link_to_poll: "Clique para ver a votação."
diff --git a/plugins/poll/config/locales/server.pt_BR.yml b/plugins/poll/config/locales/server.pt_BR.yml
index 1c9e3a4574d..a943219fe03 100644
--- a/plugins/poll/config/locales/server.pt_BR.yml
+++ b/plugins/poll/config/locales/server.pt_BR.yml
@@ -14,17 +14,26 @@ pt_BR:
multiple_polls_with_same_name: "Existem várias enquetes com o mesmo nome: %{name}. Use o atributo 'name
' para identificar suas enquetes."
default_poll_must_have_at_least_2_options: "Enquetes devem ter ao mínimo 2 opções."
named_poll_must_have_at_least_2_options: "A enquete de nome %{name} deve ter ao menos 2 opções."
- default_poll_must_have_less_options: "A enquete deve ter menos de %{máximo} opções."
- named_poll_must_have_less_options: "A enquete de nome %{nome} deve ter menos de %{máximo} opções."
+ default_poll_must_have_less_options:
+ one: "Enquetes devem ter pelo menos 1 opção."
+ other: "Enquetes devem ter pelo menos %{count} opções."
+ named_poll_must_have_less_options:
+ one: "Enquete chamada %{name} deve ter menos do que 1 opção."
+ other: "Enquete chamada %{name} deve ter menos do que %{count} opções."
default_poll_must_have_different_options: "A votação deve ter opções diferentes."
named_poll_must_have_different_options: "A enquete de nome %{nome} deve ter opções diferentes."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Enquete com múltiplas opções tem parâmetros inválidos."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Enquete chamada %{name} com múltiplas escolhas tem parâmetros inválidos."
requires_at_least_1_valid_option: "Você deve selecionar pelo menos 1 opção válida."
cannot_change_polls_after_5_minutes: "Você não pode adicionar, remover ou renomear enquetes depois dos primeiros 5 minutos."
op_cannot_edit_options_after_5_minutes: "Você não pode adicionar ou remover opções das enquetes depois dos primeiros 5 minutos. Por favor contate um moderador se você precisar editar uma opção da enquete."
staff_cannot_add_or_remove_options_after_5_minutes: "Você não pode adicionar ou remover opções das enquetes depois dos primeiros 5 minutos. Você deve fechar este tópico e criar um novo."
no_polls_associated_with_this_post: "Não há votações associadas com este post."
no_poll_with_this_name: "Nenhuma enquete com o nome %{nome} associada com este post."
+ post_is_deleted: "Não pode agir numa mensagem apagada."
topic_must_be_open_to_vote: "O tópico deve ser aperto para votação."
poll_must_be_open_to_vote: "A enquete deve estar aberta para votação."
topic_must_be_open_to_toggle_status: "O tópico deve estar aberto para mudar o status."
only_staff_or_op_can_toggle_status: "Somente um moderador ou o criador do tópico pode mudar o status da enquete."
+ email:
+ link_to_poll: "Clique para ver a enquete."
diff --git a/plugins/poll/config/locales/server.ro.yml b/plugins/poll/config/locales/server.ro.yml
index 31d1c440135..e0ca3634c71 100644
--- a/plugins/poll/config/locales/server.ro.yml
+++ b/plugins/poll/config/locales/server.ro.yml
@@ -5,4 +5,37 @@
# To work with us on translations, join this project:
# https://www.transifex.com/projects/p/discourse-org/
-ro: {}
+ro:
+ site_settings:
+ poll_enabled: "Permiți utilizatorilor să creeze sondaje?"
+ poll_maximum_options: "Numărul maxim admis de opțiuni într-un sondaj"
+ poll:
+ multiple_polls_without_name: "Există mai multe sondaje fără nume. Folosește atributul 'name
' pentru a identifica sondajele proprii"
+ multiple_polls_with_same_name: "Există mai multe sondaje cu același nume: %{name}. Folosește atributul 'name
' pentru a identifica sondajele proprii."
+ default_poll_must_have_at_least_2_options: "Sondajul trebuie să aibă cel puțin 2 opțiuni."
+ named_poll_must_have_at_least_2_options: "Sondajul numit %{name} trebuie să aibă cel puțin 2 opțiuni."
+ default_poll_must_have_less_options:
+ one: "Sondajul trebuie să aibă mai puțin de 1 opțiune."
+ few: "Sondajul trebuie să conțină cel mult %{count} opțiuni."
+ other: "Sondajul trebuie să aibă mai puțin de %{count} opțiuni."
+ named_poll_must_have_less_options:
+ one: "Sondajul numit %{name} trebuie să aibă cel mult 1 opțiune."
+ few: "Sondajul numit %{name} trebuie să aibă mai puțin de %{count} opțiuni."
+ other: "Sondajul numit %{name} trebuie să aibă cel mult %{count} opțiuni."
+ default_poll_must_have_different_options: "Sondajul trebuie să aibă opțiuni diferite."
+ named_poll_must_have_different_options: "Sondajul numit %{name} trebuie să aibă opțiuni diferite."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Sondajul cu opțiuni multiple are parametri invalizi."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Sondajul numit %{name} cu opțiuni multiple are parametri invalizi."
+ requires_at_least_1_valid_option: "Trebuie să selectezi cel puțin 1 valoare validă."
+ cannot_change_polls_after_5_minutes: "Nu poți adăuga, elimina sau redenumi sondaje după primele 5 minute."
+ op_cannot_edit_options_after_5_minutes: "Nu poți adăuga sau elimina opțiuni ale unui sondaj după primele 5 minute. Te rugăm contactează un moderator pentru a edita o opțiune din sondaj."
+ staff_cannot_add_or_remove_options_after_5_minutes: "Nu poți adăuga sau elimina opțiuni ale unui sondaj după primele 5 minute. Ar trebui să închizi discuția și să creezi alta în loc."
+ no_polls_associated_with_this_post: "Nu există sondaje asociate acestei postări."
+ no_poll_with_this_name: "Nu există nici un sondaj cu numele %{name} asociat acestei postări."
+ post_is_deleted: "Postările șterse nu se pot modifica."
+ topic_must_be_open_to_vote: "Discuția trebuie să fie activă pentru a se putea vota."
+ poll_must_be_open_to_vote: "Sondajul trebuie să fie deschis pentru a se putea vota."
+ topic_must_be_open_to_toggle_status: "Discuția trebuie să fie activă pentru a se schimba statutul."
+ only_staff_or_op_can_toggle_status: "Doar un administrator sau autorul postării inițiale pot schimba statusul unui sondaj."
+ email:
+ link_to_poll: "Click pentru afișarea sondajului."
diff --git a/plugins/poll/config/locales/server.ru.yml b/plugins/poll/config/locales/server.ru.yml
index 8f1059c64ee..ba221acecbb 100644
--- a/plugins/poll/config/locales/server.ru.yml
+++ b/plugins/poll/config/locales/server.ru.yml
@@ -7,27 +7,37 @@
ru:
site_settings:
- poll_enabled: "Разрешить содание опросов?"
- poll_maximum_options: "Максимальное колличество доступных вариантов в голосовании."
+ poll_enabled: "Разрешить форумчанам создавать опросы?"
+ poll_maximum_options: "Максимальное колличество вариантов ответов в одном опросе."
poll:
- multiple_polls_without_name: "Обнаружено несколько голосований без названия. Искользуйте 'name
' для уникализации вашего голосования."
- multiple_polls_with_same_name: "Голосование с таким названием: %{name} уже существует. Используйте 'name
' для уникализации вашего голосования."
- default_poll_must_have_at_least_2_options: "В голосовании должно быть хотябы 2 варианта ответа."
- named_poll_must_have_at_least_2_options: "В голосовании %{name} должно быть хотябы 2 варианта ответа."
- default_poll_must_have_less_options: "Голосование может содержать максимум %{max} ответов."
- named_poll_must_have_less_options: "Голосование %{name} может содержать максимум %{max} ответов."
- default_poll_must_have_different_options: "Ответы в голосовании должны быть разными."
- named_poll_must_have_different_options: "Ответы в голосовании %{name} должны быть разными."
- default_poll_with_multiple_choices_has_invalid_parameters: "Опрос c мультивыбором имеет неверные параметры."
- named_poll_with_multiple_choices_has_invalid_parameters: "Опрос с мультивыбором %{name} имеет неверные параметры."
- requires_at_least_1_valid_option: "Вы должны выбрать как минимум 1 правильный ответ."
- cannot_change_polls_after_5_minutes: "Вы не можете удалить или переименовать опрос в течении первых 5 минут."
- op_cannot_edit_options_after_5_minutes: "Вы не можете добавлять и удалять ответы голосования по истечению 5 минут после создания. Свяжитесь с модератором если вам необходимо отредактировать ответы в данном голосовании."
- staff_cannot_add_or_remove_options_after_5_minutes: "Вы не можете добавлять и удалять ответы голосования по истечению 5 минут после создания. Вы можете закрыть данную тему и создать новую. "
- no_polls_associated_with_this_post: "Нет голосований прикрепленных к данному посту"
- no_poll_with_this_name: "Нет голосований %{name} прикрепленных к данному посту."
+ multiple_polls_without_name: "Обнаружено несколько опросов в одном сообщении. Чтобы система могла их различать между собой, используйте атрибут name
' для каждого опроса. Например: [poll name=1]
"
+ multiple_polls_with_same_name: "Обнаружено несколько опросов с одним и тем же названием: %{name}. Чтобы система могла различать опросы между собой, придумайте разные значения для атрибута name
' - для каждого опроса своё."
+ default_poll_must_have_at_least_2_options: "В опросе должно быть хотябы 2 варианта ответа."
+ named_poll_must_have_at_least_2_options: "В опросе с названием \"%{name}\" должно быть хотябы 2 варианта ответа."
+ default_poll_must_have_less_options:
+ one: "В опросе может быть не более 1-го варианта ответа."
+ few: "В опросе может быть не более %{count} вариантов ответов."
+ many: "В опросе может быть не более %{count} вариантов ответов."
+ other: "В опросе может быть не более %{count} вариантов ответов."
+ named_poll_must_have_less_options:
+ one: "В опросе под названием \"%{name}\" должно быть не более 1-го варианта ответов."
+ few: "В опросе под названием \"%{name}\" должно быть не более %{max} вариантов ответов."
+ many: "В опросе под названием \"%{name}\" должно быть не более %{max} вариантов ответов."
+ other: "В опросе под названием \"%{name}\" должно быть не более %{max} вариантов ответов."
+ default_poll_must_have_different_options: "В опросе не должно быть одинаковых вариантов ответов."
+ named_poll_must_have_different_options: "В опросе %{name} не должно быть одинаковых ответов."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Опрос с множественным выбором вариантов ответов содержит неправильные параметры."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Опрос под названием %{name} с множественным выбором вариантов ответов содержит неправильные параметры."
+ requires_at_least_1_valid_option: "Выберите хотя бы 1 вариант ответа."
+ cannot_change_polls_after_5_minutes: "Запрещается добавлять, удалять или переименовывать опросы через 5 минут после их создания."
+ op_cannot_edit_options_after_5_minutes: "Запрещается добавлять или удалять варианты ответов в опросах по истечении 5 минут после их создания. Если необходимо внести изменения в ответы, пожалуйста, свяжитесь с модератором."
+ staff_cannot_add_or_remove_options_after_5_minutes: "Запрещается добавлять или удалять варианты ответов в опросах по истечении 5 минут после их создания. Если нужно изменить набор ответов, следует закрыть данную тему и создать новую."
+ no_polls_associated_with_this_post: "В данном сообщении нет опросов."
+ no_poll_with_this_name: "В данном сообщении нет опроса под названием %{name}."
post_is_deleted: "Невозможно совершить действие над удаленным сообщением."
- topic_must_be_open_to_vote: "Тема должна быть открыта для голосования."
- poll_must_be_open_to_vote: "Опрос должен быть открыт для голосования."
- topic_must_be_open_to_toggle_status: "Тема должна быть открыта для изменения статуса."
- only_staff_or_op_can_toggle_status: "Только модераторы или автор поста может поменять статус голосования."
+ topic_must_be_open_to_vote: "Для возможности голосования в опросе, тема должна быть открыта."
+ poll_must_be_open_to_vote: "Опрос должен быть открыт, чтобы в нем можно было голосовать."
+ topic_must_be_open_to_toggle_status: "Чтобы изменить статус, тема должна быть открыта."
+ only_staff_or_op_can_toggle_status: "Только модераторы или сам автор могут поменять статус опроса."
+ email:
+ link_to_poll: "Нажмите чтобы открыть опрос."
diff --git a/plugins/poll/config/locales/server.sk.yml b/plugins/poll/config/locales/server.sk.yml
new file mode 100644
index 00000000000..665bc70c744
--- /dev/null
+++ b/plugins/poll/config/locales/server.sk.yml
@@ -0,0 +1,41 @@
+# encoding: utf-8
+#
+# Never edit this file. It will be overwritten when translations are pulled from Transifex.
+#
+# To work with us on translations, join this project:
+# https://www.transifex.com/projects/p/discourse-org/
+
+sk:
+ site_settings:
+ poll_enabled: "Umožnit používaťeľom vytvárať hlasovania?"
+ poll_maximum_options: "Maximálny počet povolených možností v hlasovaní."
+ poll:
+ multiple_polls_without_name: "Existujú viaceré hlasovania bez mena. Použite atribút 'meno
', aby ste hlasovanie jednoznačne rozlíšili."
+ multiple_polls_with_same_name: "Existujú viaceré hlasovania s rovnakým menom: %{name}. Použite atribút 'meno
', aby ste hlasovanie jednoznačne rozlíšili."
+ default_poll_must_have_at_least_2_options: "Hlasovanie musí mať minimálne 2 možnosti."
+ named_poll_must_have_at_least_2_options: "Hlasovanie s názvom %{name} musí mať minimálne 2 možnosti."
+ default_poll_must_have_less_options:
+ one: "Hlasovanie musí mať menej ako jednu možnosť."
+ few: "Hlasovanie musí mať menej ako %{count} možnosti."
+ other: "Hlasovanie musí mať menej ako %{count} možnosti."
+ named_poll_must_have_less_options:
+ one: "Hlasovanie s názvom %{name} musí mať menej ako 1 možnost."
+ few: "Hlasovanie s názvom %{name} musí mať menej ako %{count} možnosti."
+ other: "Hlasovanie s názvom %{name} musí mať menej ako %{count} možností."
+ default_poll_must_have_different_options: "Hlasovanie musí mať rôzne možnosti."
+ named_poll_must_have_different_options: "Hlasovanie s názvom %{name} musí mať rôzne možnosti."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Hlasovanie s viac možnosťami má nesprávne parametre."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Hlasovanie s názvom %{name} s viac možnosťami má nesprávne parametre."
+ requires_at_least_1_valid_option: "Musite vybrať aspoň 1 platnú možnosť."
+ cannot_change_polls_after_5_minutes: "Po prvých 5 minútach už nemôžete pridať, odstrániť alebo premenovať hlasovanie."
+ op_cannot_edit_options_after_5_minutes: "Po prvých 5 minútach už nemôžete pridať alebo odstrániť možnosti hlasovania. Ak potrebujete upraviť možnosti hlasovania prosím kontaktujte moderátora."
+ staff_cannot_add_or_remove_options_after_5_minutes: "Po prvých 5 minútach už nemôžete pridať alebo odstrániť možnosti hlasovania. Miesto toho by ste mali uzavrieť túto tému a miesto nej vytvoriť inú."
+ no_polls_associated_with_this_post: "S týmto príspevkom nie sú spojené žiadne hlasovania."
+ no_poll_with_this_name: "S týmto príspevkom nie je spojené žiadne hlasovanie s názvom %{name}."
+ post_is_deleted: "Na vymazanom príspevku nie je možné vykonať."
+ topic_must_be_open_to_vote: "Na odovzdanie hlasu téma otvorená."
+ poll_must_be_open_to_vote: "Na odovzdanie hlasu musí byť hlasovanie otvorené."
+ topic_must_be_open_to_toggle_status: "Na zmenu stavu musí byť téma otvorená."
+ only_staff_or_op_can_toggle_status: "Zmeniť stav hlasovania môže iba zamestnanec alebo pôvodný prispievateľ."
+ email:
+ link_to_poll: "Kliknite na zobrazenie hlasovania."
diff --git a/plugins/poll/config/locales/server.sq.yml b/plugins/poll/config/locales/server.sq.yml
index c2c613bcc92..9067ae9e633 100644
--- a/plugins/poll/config/locales/server.sq.yml
+++ b/plugins/poll/config/locales/server.sq.yml
@@ -14,8 +14,6 @@ sq:
multiple_polls_with_same_name: "There are multiple polls with the same name: %{name}. Use the 'name
' attribute to uniquely identify your polls."
default_poll_must_have_at_least_2_options: "Sondazhi duhet të ketë të paktën 2 opsione. "
named_poll_must_have_at_least_2_options: "Poll named %{name} must have at least 2 options."
- default_poll_must_have_less_options: "Sondazhi duhet të ketë më pak se %{max} opsione."
- named_poll_must_have_less_options: "Poll named %{name} must have less than %{max} options."
default_poll_must_have_different_options: "Sondazh duhet të ketë opsione të ndryshme."
named_poll_must_have_different_options: "Poll named %{name} must have different options."
default_poll_with_multiple_choices_has_invalid_parameters: "Poll with multiple choices has invalid parameters."
diff --git a/plugins/poll/config/locales/server.sv.yml b/plugins/poll/config/locales/server.sv.yml
index d13c1eee1d9..591d40b3ee6 100644
--- a/plugins/poll/config/locales/server.sv.yml
+++ b/plugins/poll/config/locales/server.sv.yml
@@ -14,8 +14,12 @@ sv:
multiple_polls_with_same_name: "Det finns flera omröstningar med samma namn: %{name}. Använd attributet 'namn
' för att unikt identifiera din omröstningar."
default_poll_must_have_at_least_2_options: "Omröstningen måste ha minst 2 alternativ."
named_poll_must_have_at_least_2_options: "Omröstningen med namnet %{name} måste ha minst 2 alternativ."
- default_poll_must_have_less_options: "Omröstningen måste ha mindre än %{max} alternativ."
- named_poll_must_have_less_options: "Omröstningen med namnet %{name} måste ha mindre än %{max} alternativ."
+ default_poll_must_have_less_options:
+ one: "Omröstningen måste ha mindre än 1 alternativ."
+ other: "Omröstningen måste ha mindre än %{count} alternativ."
+ named_poll_must_have_less_options:
+ one: "Omröstningen med namnet %{name} måste ha mindre än 1 alternativ."
+ other: "Omröstningen med namnet %{name} måste ha mindre än %{count} alternativ."
default_poll_must_have_different_options: "Omröstningen måste ha olika alternativ."
named_poll_must_have_different_options: "Omröstning med namnet %{name} måste ha olika alternativ."
default_poll_with_multiple_choices_has_invalid_parameters: "Omröstning med flera val har ogiltiga parametrar."
@@ -31,3 +35,5 @@ sv:
poll_must_be_open_to_vote: "Omröstning måste vara öppen för att kunna rösta."
topic_must_be_open_to_toggle_status: "Ämnet måste vara öppet för att kunna växla status."
only_staff_or_op_can_toggle_status: "Endast personal eller ursprungsskribenten kan växla status på en omröstning."
+ email:
+ link_to_poll: "Klicka här för att se omröstningen."
diff --git a/plugins/poll/config/locales/server.tr_TR.yml b/plugins/poll/config/locales/server.tr_TR.yml
index 9018c91244a..093c9a965d3 100644
--- a/plugins/poll/config/locales/server.tr_TR.yml
+++ b/plugins/poll/config/locales/server.tr_TR.yml
@@ -14,8 +14,10 @@ tr_TR:
multiple_polls_with_same_name: "Aynı isme sahip birden fazla anket var: %{name}. 'name
' atıfını kullanarak anketlerinizi özebir tanımlayabilirsiniz."
default_poll_must_have_at_least_2_options: "Ankette en az 2 seçenek olmalı."
named_poll_must_have_at_least_2_options: "%{name} isimli ankette en az 2 seçenek olmalı."
- default_poll_must_have_less_options: "Anketler en fazla %{max} seçeneğe sahip olabilir."
- named_poll_must_have_less_options: "%{name} isimli anket en fazla %{max} seçeneğe sahip olabilir."
+ default_poll_must_have_less_options:
+ other: "Ankette en az %{count} seçenek olmalı."
+ named_poll_must_have_less_options:
+ other: "%{name} isimli ankette en az %{count} seçenek olmalı."
default_poll_must_have_different_options: "Anketin farklı seçenekleri olmalı."
named_poll_must_have_different_options: "%{name} isimli anketin farklı seçenekleri olmalı."
default_poll_with_multiple_choices_has_invalid_parameters: "Çoklu seçim seçeneği içeren anketinizde hatalar belirlendi."
@@ -31,3 +33,5 @@ tr_TR:
poll_must_be_open_to_vote: "Anket oylanabilmesi için açık olmalı."
topic_must_be_open_to_toggle_status: "Statüsün düzenlenebilmesi için konu açık olmalı."
only_staff_or_op_can_toggle_status: "Bir anketin statüsünü sadece o anketin orjinal sahibi ya da bir görevli değiştirebilir."
+ email:
+ link_to_poll: "Anketi görüntülemek için tıklayın."
diff --git a/plugins/poll/config/locales/server.vi.yml b/plugins/poll/config/locales/server.vi.yml
new file mode 100644
index 00000000000..8cd71609a2b
--- /dev/null
+++ b/plugins/poll/config/locales/server.vi.yml
@@ -0,0 +1,37 @@
+# encoding: utf-8
+#
+# Never edit this file. It will be overwritten when translations are pulled from Transifex.
+#
+# To work with us on translations, join this project:
+# https://www.transifex.com/projects/p/discourse-org/
+
+vi:
+ site_settings:
+ poll_enabled: "Cho phép người dùng tạo các cuộc thăm dò?"
+ poll_maximum_options: "Số lượng tối đa tùy chọn trong một cuộc thăm dò."
+ poll:
+ multiple_polls_without_name: "Có nhiều cuộc thăm dò mà không có tên. Sử dụng thuộc tính 'name
' để xác định cuộc thăm dò của bạn."
+ multiple_polls_with_same_name: "Có nhiều cuộc thăm dò có cùng tên: %{name}. Sử dụng thuộc tính 'name
' để xác định cuộc thăm dò của bạn."
+ default_poll_must_have_at_least_2_options: "Thăm dò ý kiến phải có ít nhất 2 lựa chọn."
+ named_poll_must_have_at_least_2_options: "Thăm dò có tên %{name} phải có ít nhất 2 lựa chọn."
+ default_poll_must_have_less_options:
+ other: "Thăm dò phải có ít hơn %{count} lựa chọn."
+ named_poll_must_have_less_options:
+ other: "Thăm dò %{name} phải có ít hơn %{count} tùy chọn."
+ default_poll_must_have_different_options: "Thăm dò ý kiến phải có các tùy chọn khác nhau."
+ named_poll_must_have_different_options: "Thăm dò %{name} phải có các tùy chọn khác nhau."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Thăm dò ý kiến với nhiều sự lựa chọn có các tham số không hợp lệ."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Thăm dò %{name} với nhiều sự lựa chọn có các tham số không hợp lệ. "
+ requires_at_least_1_valid_option: "Bạn phải chọn ít nhất 1 lựa chọn hợp lệ."
+ cannot_change_polls_after_5_minutes: "Bạn không thể thêm, xóa hoặc đổi tên các cuộc thăm dò 5 phút đầu tiên."
+ op_cannot_edit_options_after_5_minutes: "Bạn không thể thêm hoặc loại bỏ các bình chọn sau khi 5 phút đầu tiên. Hãy liên hệ với người điều hành nếu bạn cần chỉnh sửa một bình chọn nào đó."
+ staff_cannot_add_or_remove_options_after_5_minutes: "Bạn không thể thêm hoặc loại bỏ các bình chọn sau khi 5 phút đầu tiên. Bạn nên đóng chủ đề này và tạo ra một cái mới để thay thế."
+ no_polls_associated_with_this_post: "Không có cuộc thăm dò được liên kết với bài này."
+ no_poll_with_this_name: "Không có thăm dò có tên %{name} liên kết với bài viết này."
+ post_is_deleted: "Không thể thực hiện trên bài viết đã xóa."
+ topic_must_be_open_to_vote: "Các chủ đề phải được mở để bầu chọn."
+ poll_must_be_open_to_vote: "Thăm dò ý kiến phải được mở để bầu chọn."
+ topic_must_be_open_to_toggle_status: "Các chủ đề phải được mở để chuyển trạng thái."
+ only_staff_or_op_can_toggle_status: "Chỉ có một BQT hoặc các người đăng bài có thể chuyển đổi một trạng thái thăm dò ý kiến"
+ email:
+ link_to_poll: "Nhấn để hiển thị."
diff --git a/plugins/poll/config/locales/server.zh_CN.yml b/plugins/poll/config/locales/server.zh_CN.yml
index af100e3010d..878d6379f8c 100644
--- a/plugins/poll/config/locales/server.zh_CN.yml
+++ b/plugins/poll/config/locales/server.zh_CN.yml
@@ -14,8 +14,10 @@ zh_CN:
multiple_polls_with_same_name: "有多个投票的名字相同:%{name}。使用“name
”属性唯一标识投票。"
default_poll_must_have_at_least_2_options: "投票至少要有 2 个选项。"
named_poll_must_have_at_least_2_options: "投票“%{name}”必须要有 2 个选项。"
- default_poll_must_have_less_options: "投票选项必须少于 %{max} 个。"
- named_poll_must_have_less_options: "%{name}投票的选项必须少于 %{max} 个。"
+ default_poll_must_have_less_options:
+ other: "投票选项必须少于%{count}个。"
+ named_poll_must_have_less_options:
+ other: "投票“%{name}”的选项必须少于%{count}个。"
default_poll_must_have_different_options: "投票必须有不同的选项。"
named_poll_must_have_different_options: "%{name}投票的选项必须有不同的选项。"
default_poll_with_multiple_choices_has_invalid_parameters: "多选投票有无效选项。"
@@ -31,3 +33,5 @@ zh_CN:
poll_must_be_open_to_vote: "投票必须开启。"
topic_must_be_open_to_toggle_status: "主题必须开放才能改变状态。"
only_staff_or_op_can_toggle_status: "只有职员成员或者发布投票的人才能改变投票状态。"
+ email:
+ link_to_poll: "点击查看投票。"
diff --git a/plugins/poll/db/migrate/20151016163051_merge_polls_votes.rb b/plugins/poll/db/migrate/20151016163051_merge_polls_votes.rb
new file mode 100644
index 00000000000..17e6459e120
--- /dev/null
+++ b/plugins/poll/db/migrate/20151016163051_merge_polls_votes.rb
@@ -0,0 +1,20 @@
+class MergePollsVotes < ActiveRecord::Migration
+
+ def up
+ PostCustomField.where(name: "polls").order(:post_id).pluck(:post_id).each do |post_id|
+ polls_votes = {}
+ PostCustomField.where(post_id: post_id).where("name LIKE 'polls-votes-%'").find_each do |pcf|
+ user_id = pcf.name["polls-votes-".size..-1]
+ polls_votes["#{user_id}"] = ::JSON.parse(pcf.value||"{}")
+ end
+
+ pcf = PostCustomField.find_or_create_by(name: "polls-votes", post_id: post_id)
+ pcf.value = ::JSON.parse(pcf.value||"{}").merge(polls_votes).to_json
+ pcf.save
+ end
+ end
+
+ def down
+ end
+
+end
diff --git a/plugins/poll/db/migrate/20160321164925_close_polls_in_closed_topics.rb b/plugins/poll/db/migrate/20160321164925_close_polls_in_closed_topics.rb
new file mode 100644
index 00000000000..5ca969c68dc
--- /dev/null
+++ b/plugins/poll/db/migrate/20160321164925_close_polls_in_closed_topics.rb
@@ -0,0 +1,18 @@
+class ClosePollsInClosedTopics < ActiveRecord::Migration
+
+ def up
+ PostCustomField.joins(post: :topic)
+ .where("post_custom_fields.name = 'polls'")
+ .where("topics.closed")
+ .find_each do |pcf|
+ polls = ::JSON.parse(pcf.value || "{}")
+ polls.values.each { |poll| poll["status"] = "closed" }
+ pcf.value = polls.to_json
+ pcf.save
+ end
+ end
+
+ def down
+ end
+
+end
diff --git a/plugins/poll/plugin.rb b/plugins/poll/plugin.rb
index 0f061e5b5f1..ce251f91a25 100644
--- a/plugins/poll/plugin.rb
+++ b/plugins/poll/plugin.rb
@@ -22,9 +22,17 @@ DEFAULT_POLL_NAME ||= "poll".freeze
after_initialize do
- # remove "Vote Now!" & "Show Results" links in emails
- Email::Styles.register_plugin_style do |fragment|
- fragment.css(".poll a.cast-votes, .poll a.toggle-results").each(&:remove)
+ # turn polls into a link in emails
+ Email::Styles.register_plugin_style do |fragment, opts|
+ post = Post.find_by(id: opts[:post_id]) rescue nil
+ if post.nil? || post.trashed?
+ fragment.css(".poll").each(&:remove)
+ else
+ post_url = "#{Discourse.base_url}#{post.url}"
+ fragment.css(".poll").each do |poll|
+ poll.replace "#{I18n.t("poll.email.link_to_poll")}
"
+ end
+ end
end
module ::DiscoursePoll
@@ -46,8 +54,8 @@ after_initialize do
raise StandardError.new I18n.t("poll.post_is_deleted")
end
- # topic must be open
- if post.topic.try(:closed) || post.topic.try(:archived)
+ # topic must not be archived
+ if post.topic.try(:archived)
raise StandardError.new I18n.t("poll.topic_must_be_open_to_vote")
end
@@ -66,24 +74,25 @@ after_initialize do
raise StandardError.new I18n.t("poll.requires_at_least_1_valid_option") if options.empty?
- votes = post.custom_fields["#{VOTES_CUSTOM_FIELD}-#{user_id}"] || {}
- vote = votes[poll_name] || []
+ poll["voters"] = 0
+ all_options = Hash.new(0)
- # increment counters only when the user hasn't casted a vote yet
- poll["voters"] += 1 if vote.size == 0
+ post.custom_fields[VOTES_CUSTOM_FIELD] ||= {}
+ post.custom_fields[VOTES_CUSTOM_FIELD]["#{user_id}"] ||= {}
+ post.custom_fields[VOTES_CUSTOM_FIELD]["#{user_id}"][poll_name] = options
- poll["options"].each do |option|
- option["votes"] -= 1 if vote.include?(option["id"])
- option["votes"] += 1 if options.include?(option["id"])
+ post.custom_fields[VOTES_CUSTOM_FIELD].each do |_, user_votes|
+ next unless votes = user_votes[poll_name]
+ votes.each { |option| all_options[option] += 1 }
+ poll["voters"] += 1 if (available_options & votes.to_set).size > 0
end
- votes[poll_name] = options
+ poll["options"].each { |o| o["votes"] = all_options[o["id"]] }
post.custom_fields[POLLS_CUSTOM_FIELD] = polls
- post.custom_fields["#{VOTES_CUSTOM_FIELD}-#{user_id}"] = votes
post.save_custom_fields(true)
- MessageBus.publish("/polls/#{post_id}", { polls: polls })
+ MessageBus.publish("/polls/#{post.topic_id}", { post_id: post_id, polls: polls })
return [poll, options]
end
@@ -98,8 +107,8 @@ after_initialize do
raise StandardError.new I18n.t("poll.post_is_deleted")
end
- # topic must be open
- if post.topic.try(:closed) || post.topic.try(:archived)
+ # topic must not be archived
+ if post.topic.try(:archived)
raise StandardError.new I18n.t("poll.topic_must_be_open_to_toggle_status")
end
@@ -119,7 +128,7 @@ after_initialize do
post.save_custom_fields(true)
- MessageBus.publish("/polls/#{post_id}", { polls: polls })
+ MessageBus.publish("/polls/#{post.topic_id}", {post_id: post.id, polls: polls })
polls[poll_name]
end
@@ -257,8 +266,8 @@ after_initialize do
# maximum # of options
if poll["options"].size > SiteSetting.poll_maximum_options
poll["name"] == DEFAULT_POLL_NAME ?
- self.errors.add(:base, I18n.t("poll.default_poll_must_have_less_options", max: SiteSetting.poll_maximum_options)) :
- self.errors.add(:base, I18n.t("poll.named_poll_must_have_less_options", name: poll["name"], max: SiteSetting.poll_maximum_options))
+ self.errors.add(:base, I18n.t("poll.default_poll_must_have_less_options", count: SiteSetting.poll_maximum_options)) :
+ self.errors.add(:base, I18n.t("poll.named_poll_must_have_less_options", name: poll["name"], count: SiteSetting.poll_maximum_options))
return
end
@@ -293,8 +302,10 @@ after_initialize do
# are the polls different?
if polls.keys != previous_polls.keys || current_options != previous_options
+ has_votes = previous_polls.keys.map { |p| previous_polls[p]["voters"].to_i }.sum > 0
+
# outside of the 5-minute edit window?
- if post.created_at < 5.minutes.ago
+ if post.created_at < 5.minutes.ago && has_votes
# cannot add/remove/rename polls
if polls.keys.sort != previous_polls.keys.sort
post.errors.add(:base, I18n.t("poll.cannot_change_polls_after_5_minutes"))
@@ -305,7 +316,7 @@ after_initialize do
if User.staff.pluck(:id).include?(post.last_editor_id)
# staff can only edit options
polls.each_key do |poll_name|
- if polls[poll_name]["options"].size != previous_polls[poll_name]["options"].size
+ if polls[poll_name]["options"].size != previous_polls[poll_name]["options"].size && previous_polls[poll_name]["voters"].to_i > 0
post.errors.add(:base, I18n.t("poll.staff_cannot_add_or_remove_options_after_5_minutes"))
return
end
@@ -323,9 +334,7 @@ after_initialize do
# when the # of options has changed, reset all the votes
if polls[poll_name]["options"].size != previous_polls[poll_name]["options"].size
- PostCustomField.where(post_id: post.id)
- .where("name LIKE '#{VOTES_CUSTOM_FIELD}-%'")
- .destroy_all
+ PostCustomField.where(post_id: post.id, name: VOTES_CUSTOM_FIELD).destroy_all
post.clear_custom_fields
next
end
@@ -341,7 +350,7 @@ after_initialize do
post.save_custom_fields(true)
# publish the changes
- MessageBus.publish("/polls/#{post.id}", { polls: polls })
+ MessageBus.publish("/polls/#{post.topic_id}", { post_id: post.id, polls: polls })
end
end
else
@@ -352,23 +361,28 @@ after_initialize do
end
Post.register_custom_field_type(POLLS_CUSTOM_FIELD, :json)
- Post.register_custom_field_type("#{VOTES_CUSTOM_FIELD}-*", :json)
+ Post.register_custom_field_type(VOTES_CUSTOM_FIELD, :json)
TopicView.add_post_custom_fields_whitelister do |user|
- whitelisted = [POLLS_CUSTOM_FIELD]
- whitelisted << "#{VOTES_CUSTOM_FIELD}-#{user.id}" if user
- whitelisted
+ user ? [POLLS_CUSTOM_FIELD, VOTES_CUSTOM_FIELD] : [POLLS_CUSTOM_FIELD]
end
# tells the front-end we have a poll for that post
on(:post_created) do |post|
next if post.is_first_post? || post.custom_fields[POLLS_CUSTOM_FIELD].blank?
- MessageBus.publish("/polls", { post_id: post.id })
+ MessageBus.publish("/polls/#{post.topic_id}", {
+ post_id: post.id,
+ polls: post.custom_fields[POLLS_CUSTOM_FIELD]})
end
add_to_serializer(:post, :polls, false) { post_custom_fields[POLLS_CUSTOM_FIELD] }
add_to_serializer(:post, :include_polls?) { post_custom_fields.present? && post_custom_fields[POLLS_CUSTOM_FIELD].present? }
- add_to_serializer(:post, :polls_votes, false) { post_custom_fields["#{VOTES_CUSTOM_FIELD}-#{scope.user.id}"] }
- add_to_serializer(:post, :include_polls_votes?) { scope.user && post_custom_fields.present? && post_custom_fields["#{VOTES_CUSTOM_FIELD}-#{scope.user.id}"].present? }
+ add_to_serializer(:post, :polls_votes, false) { post_custom_fields[VOTES_CUSTOM_FIELD]["#{scope.user.id}"] }
+ add_to_serializer(:post, :include_polls_votes?) do
+ return unless scope.user
+ return unless post_custom_fields.present?
+ return unless post_custom_fields[VOTES_CUSTOM_FIELD].present?
+ post_custom_fields[VOTES_CUSTOM_FIELD].has_key?("#{scope.user.id}")
+ end
end
diff --git a/plugins/poll/spec/controllers/polls_controller_spec.rb b/plugins/poll/spec/controllers/polls_controller_spec.rb
index bcac39c71f1..b1679d7d6ee 100644
--- a/plugins/poll/spec/controllers/polls_controller_spec.rb
+++ b/plugins/poll/spec/controllers/polls_controller_spec.rb
@@ -1,4 +1,4 @@
-require "spec_helper"
+require "rails_helper"
describe ::DiscoursePoll::PollsController do
routes { ::DiscoursePoll::Engine.routes }
@@ -41,12 +41,10 @@ describe ::DiscoursePoll::PollsController do
expect(json["poll"]["options"][1]["votes"]).to eq(1)
end
- it "ensures topic is not closed" do
+ it "works even if topic is closed" do
topic.update_attribute(:closed, true)
- xhr :put, :vote, { post_id: poll.id, poll_name: "poll", options: ["A"] }
- expect(response).not_to be_success
- json = ::JSON.parse(response.body)
- expect(json["errors"][0]).to eq(I18n.t("poll.topic_must_be_open_to_vote"))
+ xhr :put, :vote, { post_id: poll.id, poll_name: "poll", options: ["5c24fc1df56d764b550ceae1b9319125"] }
+ expect(response).to be_success
end
it "ensures topic is not archived" do
diff --git a/plugins/poll/spec/controllers/posts_controller_spec.rb b/plugins/poll/spec/controllers/posts_controller_spec.rb
index a47d7def267..bc86459637f 100644
--- a/plugins/poll/spec/controllers/posts_controller_spec.rb
+++ b/plugins/poll/spec/controllers/posts_controller_spec.rb
@@ -1,4 +1,4 @@
-require "spec_helper"
+require "rails_helper"
describe PostsController do
let!(:user) { log_in }
@@ -50,7 +50,7 @@ describe PostsController do
expect(response).not_to be_success
json = ::JSON.parse(response.body)
- expect(json["errors"][0]).to eq(I18n.t("poll.default_poll_must_have_less_options", max: SiteSetting.poll_maximum_options))
+ expect(json["errors"][0]).to eq(I18n.t("poll.default_poll_must_have_less_options", count: SiteSetting.poll_maximum_options))
end
it "should have valid parameters" do
@@ -126,26 +126,30 @@ describe PostsController do
end
end
- it "OP cannot change the options" do
- xhr :put, :update, { id: post_id, post: { raw: new_option } }
- expect(response).not_to be_success
- json = ::JSON.parse(response.body)
- expect(json["errors"][0]).to eq(I18n.t("poll.op_cannot_edit_options_after_5_minutes"))
- end
+ describe "with no vote" do
- it "staff can change the options" do
- log_in_user(Fabricate(:moderator))
- xhr :put, :update, { id: post_id, post: { raw: new_option } }
- expect(response).to be_success
- json = ::JSON.parse(response.body)
- expect(json["post"]["polls"]["poll"]["options"][1]["html"]).to eq("C")
- end
+ it "OP can change the options" do
+ xhr :put, :update, { id: post_id, post: { raw: new_option } }
+ expect(response).to be_success
+ json = ::JSON.parse(response.body)
+ expect(json["post"]["polls"]["poll"]["options"][1]["html"]).to eq("C")
+ end
+
+ it "staff can change the options" do
+ log_in_user(Fabricate(:moderator))
+ xhr :put, :update, { id: post_id, post: { raw: new_option } }
+ expect(response).to be_success
+ json = ::JSON.parse(response.body)
+ expect(json["post"]["polls"]["poll"]["options"][1]["html"]).to eq("C")
+ end
+
+ it "support changes on the post" do
+ xhr :put, :update, { id: post_id, post: { raw: updated } }
+ expect(response).to be_success
+ json = ::JSON.parse(response.body)
+ expect(json["post"]["cooked"]).to match("before")
+ end
- it "support changes on the post" do
- xhr :put, :update, { id: post_id, post: { raw: updated } }
- expect(response).to be_success
- json = ::JSON.parse(response.body)
- expect(json["post"]["cooked"]).to match("before")
end
describe "with at least one vote" do
@@ -154,6 +158,21 @@ describe PostsController do
DiscoursePoll::Poll.vote(post_id, "poll", ["5c24fc1df56d764b550ceae1b9319125"], user.id)
end
+ it "OP cannot change the options" do
+ xhr :put, :update, { id: post_id, post: { raw: new_option } }
+ expect(response).not_to be_success
+ json = ::JSON.parse(response.body)
+ expect(json["errors"][0]).to eq(I18n.t("poll.op_cannot_edit_options_after_5_minutes"))
+ end
+
+ it "staff can change the options" do
+ log_in_user(Fabricate(:moderator))
+ xhr :put, :update, { id: post_id, post: { raw: new_option } }
+ expect(response).to be_success
+ json = ::JSON.parse(response.body)
+ expect(json["post"]["polls"]["poll"]["options"][1]["html"]).to eq("C")
+ end
+
it "support changes on the post" do
xhr :put, :update, { id: post_id, post: { raw: updated } }
expect(response).to be_success
diff --git a/public/403.ar.html b/public/403.ar.html
index 12d30120a46..96bd196b8f9 100644
--- a/public/403.ar.html
+++ b/public/403.ar.html
@@ -18,9 +18,9 @@
403
- لا يمكنك عرض المحتوى!
+ لا يمكنك عرض هذا المصدر !
- سيتم تبديل الصفحة الحالية بصفحة ديسكورس 403 مخصصة.
+ سيتم استبدال الصفحة الحالية بصفحة ديسكورس 403 مخصصة.